小鼠:拆分估算数据以进行进一步分析

时间:2018-10-26 18:07:01

标签: multi-level imputation r-mice

我正在使用Mouses软件包(版本3.3.0)执行多次插补(MI)。 MI过程工作正常。为了进行进一步的分析,我希望通过变量“ group”来分离/分割/细分估算数据,如下例所示。

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))

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

1 个答案:

答案 0 :(得分:0)

我认为这段代码可用于实现您的要求

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

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)

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

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获取合并结果。我不确定您为什么要这样做,而不仅仅是在回归模型中包括组变量,但是我认为您有这样做的理由。希望这会有所帮助!