当mice返回“系统计算上奇异”的错误时,在R中进行插补。

10

我想对一个中等大小数据框(约10万行)进行插补,其中30列中有5列具有缺失值(大约60%的比例)。

我尝试使用以下代码进行mice:

library(mice)    
data_3 = complete(mice(data_2))

第一次迭代后,我遇到了以下异常:

iter imp variable
  1   1  Existing_EMI  Loan_Amount  Loan_Period

Error in solve.default(xtx + diag(pen)): system is computationally singular: reciprocal condition number = 1.08007e-16

有其他更适合这种情况的包吗?我该如何解决这个问题?

1个回答

22
你的5列可能存在多个不平衡的因素。当这些被转换为虚拟变量时,很有可能会有一列是另一列的线性组合。 mice 的默认插补方法涉及线性回归,这会导致一个无法反转的 X 矩阵,并最终导致错误。
将使用的方法更改为其他方法,如cart -- mice(data_2, method = "cart") --。同时,在填充过程中,请检查你调用的种子以获得可重复的结果。
我的建议是浏览mice的7个vignettes。你可以找到如何更改单独列而不是针对整个数据集使用的插补方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接