2017-03-08 68 views
1

我正在進行一項學校項目,在該項目中,我需要對缺失數據進行補償,並在用鼠標進行插補後嘗試使用完整功能生成完整的數據集。輸入數據必須具有類中級

當我一個接一個地運行它們時,一切正常,但我想用for循環來防止我想要的不止m = 5插值。現在,當試圖運行for-loop時,我總是得到錯誤

完整錯誤(插補[1]):輸入數據必須具有類'mids'。

但是當我查看這個類時 mids,這裏怎麼回事?

這是我的代碼:

imputation <- mice(data = data, m = 5, method = "norm", maxit = 1, seed = 500) 
m <- 5 
for(i in 1:m){ 
    completeData[m] <- complete(imputation[m]) 
    print(summary(completeData[m])) 
} 

可能有人也許幫我在這裏?

+0

請告訴我在你的真實應用程序中,你不使用'maxit = 1' –

+0

我的老師說這樣做可以嗎?但是我應該重新考慮一下,這可能會導致錯誤嗎? – ZaLa91

+0

它不會導致每個說的錯誤。它可能會讓你真的很糟糕的插曲。鏈式方程算法應運行收斂。你只允許它運行一次迭代。估算結果可能因此毫無價值。 –

回答

0

我們正在錯誤,因爲該類不是mids

imputation[1] 
# $call 
# mice(data = walking, m = 5, maxit = 0, seed = 500) 

class(imputation[1]) 
# [1] "list" 

從手冊?complete

使用

complete(x, action = 1, include = FALSE)

library(mice) 

# dummy data imputation 
data(walking) 
imputation <- mice(walking, max = 0, m = 5, seed = 500) 

# using for loop 
m <- 5 
for(i in 1:m){ 
    completeData <- complete(imputation, m) 
    print(summary(completeData)) 
} 

# I prefer to use lapply 
lapply(seq(imputation$m), function(i) summary(complete(imputation, i))) 
相關問題