【问题标题】:Leftover NAs after imputing using mice使用小鼠插补后剩余的 NA
【发布时间】:2014-08-24 14:17:34
【问题描述】:

下面发生了什么?

#create some data
library(data.table)
library(mice)
myData = data.table(invisible.covariate=rnorm(10),
         visible.covariate=rnorm(10),
         category=factor(sample(1:3,10, replace=TRUE)),
         treatment=sample(0:1,10, replace=TRUE))
myData[,outcome:=invisible.covariate+visible.covariate+treatment*as.integer(category)]
myData[,invisible.covariate:=NULL]    
myData[treatment == 0,untreated.outcome:=outcome]
myData[treatment == 1,treated.outcome:=outcome]

#impute missing values
myPredictors = matrix(0,ncol(myData),ncol(myData))
myPredictors[5,] = c(1,1,0,0,0,0)
myPredictors[6,] = c(1,1,0,0,0,0)
myImp = mice(myData,predictorMatrix=myPredictors)

#Now look at the "complete" data
completeData = data.table(complete(myImp,0))
print(nrow(completeData[is.na(untreated.outcome)]))

如果小鼠已成功替换所有 NA 值,则结果应为 0。但事实并非如此。我做错了什么?

【问题讨论】:

    标签: r r-mice


    【解决方案1】:

    complete 中的第二个参数用于非零(返回原始的、不完整的数据),例如,介于 1 和生成的插补数之间的标量。它还接受一些字符输入(有关详细信息,请参阅文档)。

    试试这个:

    completeData = data.table(complete(myImp, 1))
    

    比较:

    > completeData = data.table(complete(myImp,0))
    > print(nrow(completeData[is.na(untreated.outcome)]))
    [1] 5
    > completeData = data.table(complete(myImp,1))
    > print(nrow(completeData[is.na(untreated.outcome)]))
    [1] 0
    

    干杯!

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 2021-08-25
      • 2019-10-24
      • 2018-10-03
      • 1970-01-01
      • 2019-08-04
      • 2021-07-02
      • 1970-01-01
      • 2021-05-06
      相关资源
      最近更新 更多