使用 MICE 包进行缺失值插补时出错

Error in missing value imputation using MICE package

我有大量数据 (4M x 17) 缺少值。两列是分类的,其余都是数字的。我想使用 MICE 包进行缺失值插补。这是我试过的:

> testMice <- mice(myData[1:100000,]) # runs fine  
> testTot <- predict(testMice, myData)
Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "mids"

运行 对整个数据集的插补在计算上很昂贵,所以我 运行 只对前 100K 个观察结果进行插补。然后我试图使用输出来估算整个数据。

我的做法有什么问题吗?如果是,我应该怎么做才能使其正确?如果不是,那为什么我会收到此错误?

您没有将 predict()mice 一起使用。这不是你适合的模型本身。 100,000 行的估算结果已经存在。

如果您想要所有行的数据,则必须将所有行放入 mice。不过我不推荐它,除非你将它设置在一个有几十个 CPU 核心的大型集群上。

micehmisc 均未提供来自插补过程的参数估计值。 AmeliaimputeMulti 都可以。在这两种情况下,您都可以提取参数估计值并将它们用于估算其他观察结果。

  • Amelia 假设您的数据分布为多元正态分布(例如 X \sim N(\mu, \Sigma)。
  • imputeMulti 假设您的数据呈多元多项式分布。也就是说,完整的细胞计数是分布的 (X \sim M(n,\theta)),其中 n 是观察的数量。

可以通过示例数据按如下方式进行拟合。检查参数估计值如下所示。

library(Amelia)
library(imputeMulti)
data(tract2221, package= "imputeMulti")
test_dat2 <- tract2221[, c("gender", "marital_status","edu_attain", "emp_status")]
# fitting
IM_EM <- multinomial_impute(test_dat2, "EM",conj_prior = "non.informative", verbose= TRUE)
amelia_EM <- amelia(test_dat2, m= 1, noms= c("gender", "marital_status","edu_attain", "emp_status"))
  • amelia 函数的参数估计值可在 amelia_EM$muamelia_EM$theta 中找到。
  • imputeMulti 中的参数估计值可在 IM_EM@mle_x_y 中找到,可以通过 get_parameters 方法访问。

imputeMulti 相对于其他 3 个包中的任何一个,对分类数据的插补精度明显更高,尽管它只接受多项式(例如 factor)数据。

所有这些信息都在 目前未发布的 小插图中 imputeMulti。该论文已提交给 JSS,我正在等待回复,然后再将小插图添加到包中。