【发布时间】:2017-07-28 22:13:20
【问题描述】:
我正在做一个学校项目,我需要对缺失的数据进行插补,在用老鼠进行插补后,我试图生成具有完整功能的完整数据集。
当我一个一个地运行它们时,一切正常,但我想使用一个 for 循环,以防我想要的不仅仅是 m = 5 插补。现在,当尝试运行for-loop 时,我总是收到错误
完成错误(imputation[1]):输入数据必须有类“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]))
}
有人可以帮我吗?
【问题讨论】:
-
请告诉我在你的真实应用中你不使用
maxit=1 -
我的老师说可以这样做吗?但是我应该重新考虑一下,这是否可能导致错误?
-
它不会导致错误的说。它可能只会给你非常糟糕的推算。链式方程算法应该运行到收敛。您只允许它运行一次迭代。因此,插补结果可能毫无价值。
-
tbh 我也想知道这个问题,我不太确定他为什么提出这个解决方案,他还建议将 norm 作为方法,但是我的 NA 变量是分类变量,并且 norm 会计算奇数但是我什至需要,所以我正在考虑使用购物车...
-
如果你所有的数据都是分类的,我强烈推荐包
imputeMulti。作为包作者,我有偏见;但我的测试表明它比Amelia、mice或Hmisc中的任何一个都准确得多。而且这个结果对于数据中的缺失量是稳健的......请注意,imputeMulti仅适用于分类数据,不包括混合(分类和连续)数据。
标签: r missing-data imputation r-mice