使用鼠标进行插补后剩余的NA [英] Leftover NAs after imputing using mice
本文介绍了使用鼠标进行插补后剩余的NA的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
接下来发生什么?
#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.但事实并非如此.我在做什么错了?
The result should be 0, if mice had successfully replaced all the NA values. But it's not. What am I doing wrong?
推荐答案
complete
中的第二个参数用于非零值(它返回原始的不完整数据),例如1到数字之间的标量.产生的归因.它还接受一些字符输入(有关详细信息,请参见文档).
The second argument in complete
is intended to something other than zero (which returns the original, incomplete data), e.g., a scalar between 1 and the number of imputations generated. It also accepts some character inputs (see the documentation for details).
尝试一下:
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
干杯!
这篇关于使用鼠标进行插补后剩余的NA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文