mice:拆分估算数据以供进一步分析

mice: splitting imputed data for further analysis

我正在使用 mice 包(版本 3.3.0)执行多重插补 (MI)。 MI 程序工作正常。为了进一步分析,我想 separate/split/subset 通过变量“组”估算数据,如下例所示。

library(mice)

d <- nhanes
d$group <- as.factor(c(rep("A", 13), rep("B", 12)))
str(d)

imp <- mice(d)

fit <- with(imp, lm(bmi ~ age + chl + group))
est <- pool(fit)
summary(est, digits=3)

# I would like to do is
imp.A <- imp[which(group=="A")]
imp.B <- imp[which(group=="B")]

fit.A <- with(imp.A, lm(bmi ~ age + chl))
fit.B <- with(imp.A, lm(bmi ~ age + chl))

是否可以以某种方式拆分估算数据?

我认为这段代码可以用来实现你所要求的

首先创建所有数据集的长格式版本:

d.long <- mice::complete(imp,"long",include = T)

接下来使用基数 R 正常执行分组

d.long.A <- d.long[which(d.long$group == 'A'),]
d.long.B <- d.long[which(d.long$group == 'B'),]

然后将这些改回 mids 个对象,这样您就可以执行 mice 个操作

imp.A <- as.mids(d.long.A)
imp.B <- as.mids(d.long.B)

您可能会收到一条警告消息,因为组现在是常量。

Warning message:
Number of logged events: 1
imp.A$loggedEvents
  it im dep     meth      out
1  0  0     constant group

但这应该不是问题,它只是 mice 告诉您数据集中有一个常量值。最后,您可以将新的子集用于回归模型

fit.A <- with(imp.A, lm(bmi ~ age + chl))
fit.B <- with(imp.B, lm(bmi ~ age + chl))

使用 pool 获取汇总结果。我不完全确定你为什么要这样做而不是只在你的回归模型中包含组变量,但我假设你有这样做的理由。希望这对您有所帮助!