使用MICE包导致缺失值插补错误

时间:2016-07-16 01:56:09

标签: r missing-data r-mice imputation

我有一个巨大的数据(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观测值上运行它。然后我试图使用输出来估算整个数据。

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

2 个答案:

答案 0 :(得分:2)

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,我正在等待回复,然后将晕影添加到包中。

答案 1 :(得分:1)

您不会将predict()mice一起使用。它本身并不适合您的模型。您的推算结果已经存在100,000行。

如果您想要所有行的数据,则必须将所有行放在mice中。我不建议这样做,除非你在具有几十个CPU核心的大型集群上进行设置。