【问题标题】:mice: splitting imputed data for further analysis小鼠:拆分估算数据以进行进一步分析
【发布时间】:2019-03-31 12:48:47
【问题描述】:

我正在使用mice 包(3.3.0 版)来执行多重插补(MI)。 MI 程序运行良好。为了进一步分析,我想通过变量“组”分离/拆分/子集插补数据,如下例所示。

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

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

【问题讨论】:

    标签: r imputation multi-level r-mice


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答。这对我帮助很大!
    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多