5

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

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", m = 1, maxit =1)
filled <- complete(imp)

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

filled
#     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

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

4

1 回答 1

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

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

sapply(dfn, function(x) mean(x,na.rm=TRUE))

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

于 2015-06-21T16:52:29.560 回答