'mice' R 包没有估算数据
'mice' R package isn't imputing data
我已经 运行 回归来替换数据集中缺失的数据,并想将其与使用 Stef va Buuren 'mice' 包的结果进行比较
我在交叉验证 Link 到 Post
时引用了这个 link
我也在读这篇语法和用法相似的文章。
我的代码是:
imp <- mice(without_response, method = "norm.predict", m = 1)
#Impute data
imp_with_mice <- complete(imp) # Store data
当我输出:
imp_with_mice[impute_here,]
要获取需要插补的行,none 的值将被替换。我最初有'?丢失数据的位置。我现在尝试将 'NA' 作为字符串,然后尝试不带引号的 NA 来类似于 cv post.
在任何情况下,我都无法让鼠标用任何东西替换我的 16 列 7 值。
请帮助我使用。
这些是我希望替换变量的行示例:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
24 1057013 8 4 5 1 2 NA 7 3 1
41 1096800 6 6 6 9 6 NA 7 8 1
另外,我在 运行s 时得到这个显示。
iter imp variable 1 1 2 1 3 1 4 1 5 1
警告信息:
“Number of logged events: 1”
附加信息:
str(without_response[impute_here,])
'data.frame': 16 obs. of 10 variables:
$ V1 : int 1057013 1096800 1183246 1184840 1193683 1197510
1241232 169356 432809 563649 ...
$ V2 : int 8 6 1 1 1 5 3 3 3 8 ...
$ V3 : int 4 6 1 1 1 1 1 1 1 8 ...
$ V4 : int 5 6 1 3 2 1 4 1 3 8 ...
$ V5 : int 1 9 1 1 1 1 1 1 1 1 ...
$ V6 : int 2 6 1 2 3 2 2 2 2 2 ...
$ V7 : chr NA NA NA NA ...
$ V8 : int 7 7 2 2 1 3 3 3 2 6 ...
$ V9 : int 3 8 1 1 1 1 1 1 1 10 ...
$ V10: int 1 1 1 1 1 1 1 1 1 1 ...
summary(without_response[impute_here,])
V1 V2 V3 V4
Min. : 61634 Min. :1.000 Min. :1.000 Min. :1.000
1st Qu.: 595517 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
Median :1057040 Median :3.000 Median :1.000 Median :2.500
Mean : 857578 Mean :3.375 Mean :2.438 Mean :2.875
3rd Qu.:1187051 3rd Qu.:5.000 3rd Qu.:4.000 3rd Qu.:4.250
Max. :1241232 Max. :8.000 Max. :8.000 Max. :8.000
V5 V6 V7 V8
Min. :1.000 Min. :1.000 Length:16 Min. :1.000
1st Qu.:1.000 1st Qu.:2.000 Class :character 1st Qu.:2.000
Median :1.000 Median :2.000 Mode :character Median :2.500
Mean :1.812 Mean :2.438 Mean :3.125
3rd Qu.:1.000 3rd Qu.:2.000 3rd Qu.:3.250
Max. :9.000 Max. :7.000 Max. :7.000
V9 V10
Min. : 1.00 Min. :1
1st Qu.: 1.00 1st Qu.:1
Median : 1.00 Median :1
Mean : 2.75 Mean :1
3rd Qu.: 3.00 3rd Qu.:1
Max. :10.00 Max. :1
is.na(without_response[impute_here,])
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
24 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
41 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
140 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
146 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
159 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
165 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
236 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
250 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
276 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
293 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
295 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
298 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
316 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
322 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
412 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
618 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
根据我对你的问题和数据集的理解(正如我之前所说,一个可重现的例子会有所帮助),我怀疑问题在于 V7 只有 NA
和常量值。这就是记录的事件警告您的内容。 mice
无法估算此类变量,因为它没有基础来预测缺失值应该是什么。
mice(... method = "norm.predict")
的工作原理是根据数据集中具有缺失值的变量和其他变量之间的线性回归来估算合理值。它使用现有数据对合理值进行预测。然而,由于 V7
是一个常数,它没有方差,也没有与其他变量的协方差。因此,预测是不可能的。在这种情况下不能使用多重插补。除了假设 V7
中的所有值都是常数(即平均插补)之外,没有可以进行的合理插补。请注意,如果此假设无效,则会有一些重大缺点。您的另一个最佳选择是成对删除。
我已经 运行 回归来替换数据集中缺失的数据,并想将其与使用 Stef va Buuren 'mice' 包的结果进行比较
我在交叉验证 Link 到 Post
时引用了这个 link我也在读这篇语法和用法相似的文章。
我的代码是:
imp <- mice(without_response, method = "norm.predict", m = 1)
#Impute data
imp_with_mice <- complete(imp) # Store data
当我输出:
imp_with_mice[impute_here,]
要获取需要插补的行,none 的值将被替换。我最初有'?丢失数据的位置。我现在尝试将 'NA' 作为字符串,然后尝试不带引号的 NA 来类似于 cv post.
在任何情况下,我都无法让鼠标用任何东西替换我的 16 列 7 值。
请帮助我使用。
这些是我希望替换变量的行示例:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
24 1057013 8 4 5 1 2 NA 7 3 1
41 1096800 6 6 6 9 6 NA 7 8 1
另外,我在 运行s 时得到这个显示。
iter imp variable 1 1 2 1 3 1 4 1 5 1
警告信息:
“Number of logged events: 1”
附加信息:
str(without_response[impute_here,])
'data.frame': 16 obs. of 10 variables:
$ V1 : int 1057013 1096800 1183246 1184840 1193683 1197510
1241232 169356 432809 563649 ...
$ V2 : int 8 6 1 1 1 5 3 3 3 8 ...
$ V3 : int 4 6 1 1 1 1 1 1 1 8 ...
$ V4 : int 5 6 1 3 2 1 4 1 3 8 ...
$ V5 : int 1 9 1 1 1 1 1 1 1 1 ...
$ V6 : int 2 6 1 2 3 2 2 2 2 2 ...
$ V7 : chr NA NA NA NA ...
$ V8 : int 7 7 2 2 1 3 3 3 2 6 ...
$ V9 : int 3 8 1 1 1 1 1 1 1 10 ...
$ V10: int 1 1 1 1 1 1 1 1 1 1 ...
summary(without_response[impute_here,])
V1 V2 V3 V4
Min. : 61634 Min. :1.000 Min. :1.000 Min. :1.000
1st Qu.: 595517 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
Median :1057040 Median :3.000 Median :1.000 Median :2.500
Mean : 857578 Mean :3.375 Mean :2.438 Mean :2.875
3rd Qu.:1187051 3rd Qu.:5.000 3rd Qu.:4.000 3rd Qu.:4.250
Max. :1241232 Max. :8.000 Max. :8.000 Max. :8.000
V5 V6 V7 V8
Min. :1.000 Min. :1.000 Length:16 Min. :1.000
1st Qu.:1.000 1st Qu.:2.000 Class :character 1st Qu.:2.000
Median :1.000 Median :2.000 Mode :character Median :2.500
Mean :1.812 Mean :2.438 Mean :3.125
3rd Qu.:1.000 3rd Qu.:2.000 3rd Qu.:3.250
Max. :9.000 Max. :7.000 Max. :7.000
V9 V10
Min. : 1.00 Min. :1
1st Qu.: 1.00 1st Qu.:1
Median : 1.00 Median :1
Mean : 2.75 Mean :1
3rd Qu.: 3.00 3rd Qu.:1
Max. :10.00 Max. :1
is.na(without_response[impute_here,])
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
24 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
41 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
140 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
146 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
159 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
165 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
236 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
250 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
276 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
293 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
295 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
298 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
316 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
322 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
412 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
618 FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
根据我对你的问题和数据集的理解(正如我之前所说,一个可重现的例子会有所帮助),我怀疑问题在于 V7 只有 NA
和常量值。这就是记录的事件警告您的内容。 mice
无法估算此类变量,因为它没有基础来预测缺失值应该是什么。
mice(... method = "norm.predict")
的工作原理是根据数据集中具有缺失值的变量和其他变量之间的线性回归来估算合理值。它使用现有数据对合理值进行预测。然而,由于 V7
是一个常数,它没有方差,也没有与其他变量的协方差。因此,预测是不可能的。在这种情况下不能使用多重插补。除了假设 V7
中的所有值都是常数(即平均插补)之外,没有可以进行的合理插补。请注意,如果此假设无效,则会有一些重大缺点。您的另一个最佳选择是成对删除。