R MICE插补失败

mjn*_*hol 5 statistics r r-mice

我真的很困惑为什么我的估算在R's Mice 2.22包中失败了.我正在尝试使用以下数据框进行非常简单的操作:

> dfn
   a b c  d
1  0 1 0  1
2  1 0 0  0
3  0 0 0  0
4 NA 0 0  0
5  0 0 0 NA
Run Code Online (Sandbox Code Playgroud)

然后,我以下列方式使用鼠标来执行简单的平均估算:

imp <- mice(dfn, method = "mean", m = 1, maxit =1)
filled <- complete(imp)
Run Code Online (Sandbox Code Playgroud)

但是,我完成的数据如下所示:

> fill
 a b c  d
1 0.00 1 0  1
2 1.00 0 0  0
3 0.00 0 0  0
4 0.25 0 0  0
5 0.00 0 0 NA
Run Code Online (Sandbox Code Playgroud)

为什么我仍然得到这个尾随的NA?这是我可以构建的最简单的失败示例,但我的真实数据集要大得多,我只是想了解出现问题的地方.任何帮助将不胜感激!

Sim*_*onG 1

我不太确定这有多准确,但这是一次尝试。尽管method="mean"应该估算无条件均值,但从文档中看来, 并prdictorMatrix没有相应地改变。

通常,NA出现剩余是因为预测变量存在多重共线性,或者每个变量的案例太少(导致插补模型无法估计)。但是,method="mean"不应该这样做。

这是我所做的:

dfn <- read.table(text="a b c  d
 0 1 0  1
 1 0 0  0
 0 0 0  0
NA 0 0  0
 0 0 0 NA", header=TRUE)

imp <- mice( dfn, method="mean", predictorMatrix=diag(ncol(dfn)) )
complete(imp)

# 1 0.00 1 0 1.00
# 2 1.00 0 0 0.00
# 3 0.00 0 0 0.00
# 4 0.25 0 0 0.00
# 5 0.00 0 0 0.25
Run Code Online (Sandbox Code Playgroud)

您可以使用实际数据集尝试此操作,但应仔细检查结果。例如,执行以下操作:

sapply(dfn, function(x) mean(x,na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)

每个变量的均值应与估算的均值相同。如果这可以解决您的问题,请告诉我。