如何在R中对mice多重插补的子样本进行合并回归分析?
解决mice包多重插补后子样本合并回归的问题
问题背景
使用mice完成多重插补后,通过with()和pool()可以轻松实现全样本的合并回归,但针对特定子样本(如示例中的男性群体)分析时,常规的子集筛选方法无法直接作用于mids对象,又不想通过complete()提取所有插补数据集后手动合并结果。
解决方案
无需提取完整插补数据集,直接在with()的表达式中对子样本进行筛选即可,以下两种方式都能实现:
方法1:在lm中指定subset参数
直接在lm()函数里通过subset参数筛选目标子样本,mice会自动对每个插补数据集执行筛选和回归:
# 针对男性样本执行合并回归并查看结果 male_reg <- with(imp, lm(a ~ b + c, subset = Sex == "male")) summary(pool(male_reg))
方法2:先筛选数据再拟合模型
也可以先通过subset()函数在表达式内筛选出子样本,再基于筛选后的数据拟合模型:
male_reg2 <- with(imp, lm(a ~ b + c, data = subset(data, Sex == "male"))) summary(pool(male_reg2))
原理说明
这两种方式都会遵循mice的工作流程:对每一个插补后的数据集单独执行子样本筛选和回归拟合,最后pool()函数会按照Rubin规则自动合并所有插补数据集的回归结果,效率更高且符合多重插补的分析规范。
内容的提问来源于stack exchange,提问作者Murster
相关产品推荐
相关产品推荐

