2014-12-08 77 views
5

我对R的Mice 2.22包中的归因失败感到困惑。我试图一个非常简单的操作与下面的数据帧:R MICE归属失败

> 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 

我然后在下面的方式使用鼠标进行简单的平均估算:

imp <- mice(dfn, method = "mean", m = 1, maxit =1) 
filled <- complete(imp) 

但是,我完成了数据看起来像这样:

> 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 

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

+0

好的,所以这个问题似乎是由一列成为其他一些列的完美线性组合引起的。任何关于如何处理真实数据的想法? – mjnichol 2014-12-08 06:09:46

+3

这个问题似乎是无关紧要的,因为它已被交叉发布在stats.stackexchange.com上:http://stats.stackexchange.com/q/127104/11849 – Roland 2014-12-08 08:05:53

+0

@Roland是的,我也发布了它,以及用户在评论中给出了该问题的原因。 – mjnichol 2016-11-25 18:48:18

回答

0

我不太确定这是多么准确,但这里是一个尝试。尽管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)) 

每个变量的平均值应与已被估算的平均值相同。 请让我知道这是否能解决您的问题。