繁体   English   中英

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

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

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 imputeMulti中找到, IM_EM@mle_x_y通过get_parameters方法访问。

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

所有这些信息都在imputeMulti当前未发布的插图中。 该论文已提交给JSS,我正在等待响应,然后将晕影添加到包中。

你没有对mice使用predict() 它本身并不适合您的模型。 您的推算结果已经存在100,000行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM