【问题标题】:'mice' R package isn't imputing data'mice' R 包没有输入数据
【发布时间】:2018-10-30 23:10:24
【问题描述】:

我已运行回归以替换数据集中缺失的数据,并希望将其与使用 Stef va Buuren 的“小鼠”包的结果进行比较

我在交叉验证的帖子链接上引用此链接

我也在读这个,语法和用法相似。

我的代码是:

imp <- mice(without_response, method = "norm.predict", m = 1) 
#Impute data
imp_with_mice <- complete(imp) # Store data

当我输出时:

imp_with_mice[impute_here,]

要获取需要插补的行,不会替换任何值。我原来有'?丢失的数据在哪里。我现在尝试将 'NA' 作为字符串,然后尝试 NA 不带引号以类似于 cv 帖子。

在任何情况下,我都不能让老鼠用任何东西替换我的 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

另外,我在运行时得到这个显示。

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

【问题讨论】:

  • 您需要使用实际的NA 值将它们视为缺失和估算值,而不是字符串"NA""?"。您可以将它们替换为 without_response$V7 = ifelse(without_response$V7 == "NA", NA, without_response$V7)
  • 我有这样的声明:without_response[impute_here,7]
  • @Marius 我也试过你的sn-p,结果还是NA。

标签: r na r-mice


【解决方案1】:

根据我对您的问题和数据集的理解(正如我之前所说的可重复的示例会有所帮助),我怀疑问题在于 V7 只有 NA 和常量值。这是记录的事件警告您的内容。 mice 无法估算这些变量,因为它没有依据来预测缺失值应该是什么。

mice(... method = "norm.predict") 的工作原理是基于具有缺失值的变量与数据集中的其他变量之间的线性回归估算合理值。它使用现有数据对合理值进行预测。然而,由于V7 是一个常数,它没有方差,也没有与其他变量的协方差。因此,预测是不可能的。在这种情况下不能使用多重插补。除了假设V7 中的所有值都是恒定的(即平均插补)之外,无法进行合理的插补。请注意,如果此假设无效,则会有一些主要缺点。您的另一个最佳选择是成对删除。

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2012-09-19
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    相关资源
    最近更新 更多