当鼠标返回“系统在计算上是单数的”错误时,在R中进行插补

时间:2018-01-20 10:55:38

标签: r imputation r-mice

我正在尝试对中等大小的数据帧(约100,000行)进行估算,其中30列中的5列具有NA(大部分,大约60%)。

我用以下代码尝试了鼠标:

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 个答案:

答案 0 :(得分:2)

您的5列可能包含许多不平衡因素。当这些变为虚拟变量时,很可能您将一列与另一列成线性组合。 SELECT d.Service_id, t.type as diagnoses_type FROM diagnose d JOIN Types t ON d.Type_id = t.Type_id; 的默认插补方法涉及线性回归,这会导致X矩阵无法反转并导致错误。

将正在使用的方法更改为购物车 - mice - 。同时检查在插补前/插入期间调用的种子,以获得可重现的结果。

我的建议是通过7个老鼠的小插曲。您可以了解如何更改用于单独列而不是整个数据集的插补的mice(data_2, method = "cart")