[英]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观测值上运行它。 然后我试图使用输出来估算整个数据。
我的方法有什么问题吗? 如果是,我该怎么做才能使其正确? 如果不是,那么为什么我会收到此错误?
mice
和hmisc
都没有提供来自插补过程的参数估计。 Amelia
和imputeMulti
都做到了。 在这两种情况下,您都可以提取参数估计值并使用它们来估算其他观测值。
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$mu
和amelia_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.