我正在使用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))
是否可以以某种方式拆分估算数据?
答案 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
获取合并结果。我不确定您为什么要这样做,而不仅仅是在回归模型中包括组变量,但是我认为您有这样做的理由。希望这会有所帮助!