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?这是我可以构建的最简单的失败示例,但我的真实数据集要大得多,我只是想了解出现问题的地方.任何帮助将不胜感激!
我不太确定这有多准确,但这是一次尝试。尽管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)
每个变量的均值应与估算的均值相同。如果这可以解决您的问题,请告诉我。