2014-12-08 43 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)) 

每個變量的平均值應與已被估算的平均值相同。 請讓我知道這是否能解決您的問題。