使用 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 核心的大型集群上。
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
中找到,可以通过 get_parameters
方法访问。
imputeMulti
相对于其他 3 个包中的任何一个,对分类数据的插补精度明显更高,尽管它只接受多项式(例如 factor
)数据。
所有这些信息都在 目前未发布的 小插图中 imputeMulti
。该论文已提交给 JSS,我正在等待回复,然后再将小插图添加到包中。
我有大量数据 (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 核心的大型集群上。
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
中找到,可以通过get_parameters
方法访问。
imputeMulti
相对于其他 3 个包中的任何一个,对分类数据的插补精度明显更高,尽管它只接受多项式(例如 factor
)数据。
所有这些信息都在 目前未发布的 小插图中 imputeMulti
。该论文已提交给 JSS,我正在等待回复,然后再将小插图添加到包中。