【发布时间】:2020-08-23 10:02:15
【问题描述】:
我有一个包含 4 列的数据集。现在可以取 2 个值。(1 或 0)。缺少数据的三列(X1、X2、X3)。
Row# X1 X2 X3 Y
1 1 0 0 1
2 0 1 1 0
3 NA 0 0 0
4 1 1 1 0
5 1 NA NA 1
6 1 0 0 1
7 NA NA NA 0
8 0 1 0 1
9 NA NA 1 0
10 0 0 1 1
11 NA NA 0 0
12 0 0 0 0
13 0 0 1 1
14 NA 0 NA 0
我有兴趣为 NA 的可能值创建填充数据集。我的意思是创建如下可能的数据行
Row# X1 X2 X3 Y Probability Comments
1 1 0 0 1 1 No missing
2 0 1 1 0 1 No missing
3 1 0 0 0 0.5 X1 Missing
4 0 0 0 0 0.5 X1 Missing
5 1 1 1 0 1 No missing
6 1 1 0 1 0.25 X1, X2 missing
7 1 0 0 1 0.25 X1, X2 missing
8 1 1 1 1 0.25 X1, X2 missing
9 1 0 1 1 0.25 X1, X2 missing
10 1 0 0 1 1 No missing
11 0 0 0 0 0.125 X1, X2, x3 missing
12 1 0 0 0 0.125 X1, X2, x3 missing
13 0 1 0 0 0.125 X1, X2, x3 missing
14 0 0 1 0 0.125 X1, X2, x3 missing
15 1 1 0 0 0.125 X1, X2, x3 missing
16 1 0 1 0 0.125 X1, X2, x3 missing
17 0 1 1 0 0.125 X1, X2, x3 missing
18 1 1 1 0 0.125 X1, X2, x3 missing
19 . . . . . ......
20 . . . . . ......
21 . . . . . ......
22 . . . . . ......
请注意,最终数据集将包含 5 列(X1,X2,X3,Y,Possibility)
Probability列就是根据这个逻辑计算出来的。
让我们从第一个数据集中的第 1 行和第 2 行开始。前两行 (1,2) 没有任何缺失数据,因此在预期输出中生成相同的两行,概率为 1。
让我们看看原始数据集中的第 3 行。这在 X1 列中缺少值。因此在预期输出中生成了两行 3,4。因此概率为 0.5, 0.5。
1/2=0.5让我们看看原始数据集中的第 5 行。这包含 X2 和 X3 列中的缺失数据。所以这将在预期数据中生成 4 行,第 6、7、8.9 行。所以概率是0.25,0.25,0.25,0.25,
1/4 = 0.25原始数据集的第 7 行缺少 x1、x2、x3 的值。所以这个场景将在预期的输出数据集中生成 8 行,第 11 行 - 第 18 行。因此概率为 0.125 ,
1/8 = 0.125
我可以使用 8 个 ifelse 语句和 for 循环来做到这一点。但我想知道是否有任何更简单、更简洁的方法来实现这一目标。谢谢。
【问题讨论】:
-
@akrun,这取决于每行缺失值的数量。例如,具有一个缺失值的行将在预期数据集中生成两行。具有 2 个缺失值的行将在预期数据集中生成 4 行,而具有所有缺失值的行将在预期数据集中生成 8 行?这能回答你的问题吗?
-
@akrun,啊,很抱歉造成混乱。
-
你如何计算概率
col? -
@VíctorCortés,好问题。我更新了我的问题,说明了如何估计概率。