输入数据必须具有类中级
问题描述:
我正在进行一项学校项目,在该项目中,我需要对缺失数据进行补偿,并在用鼠标进行插补后尝试使用完整功能生成完整的数据集。输入数据必须具有类中级
当我一个接一个地运行它们时,一切正常,但我想用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]))
}
可能有人也许帮我在这里?
答
我们正在错误,因为该类不是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)))
请告诉我在你的真实应用程序中,你不使用'maxit = 1' –
我的老师说这样做可以吗?但是我应该重新考虑一下,这可能会导致错误吗? – ZaLa91
它不会导致每个说的错误。它可能会让你真的很糟糕的插曲。链式方程算法应运行收敛。你只允许它运行一次迭代。估算结果可能因此毫无价值。 –