如何在R的MatchThem包中同时检查加权前后的协变量平衡性?
在MatchThem中实现多重插补IPTW加权前后的协变量平衡性对比
要同时查看加权前后的协变量平衡性,你需要分别对原始多重插补数据集和加权后的数据集执行平衡性检查,再通过输出或可视化对比结果,具体步骤如下:
1. 准备数据与执行IPTW加权
假设你已经用mice生成了多重插补数据集(mids对象),并通过MatchThem的weightthem()完成IPTW加权:
library(MatchThem) library(mice) library(cobalt) # 示例:生成多重插补数据集 imp <- mice(your_raw_data, m = 5, printFlag = FALSE) # 执行IPTW加权(以ATE为估计量为例) weighted_obj <- weightthem(treat ~ cov1 + cov2 + cov3, data = imp, method = "ps", # 对应IPTW的倾向评分加权逻辑 estimand = "ATE")
2. 分别计算加权前/后的平衡统计量
加权前的平衡性检查
直接传入原始多重插补数据集,bal.tab()会默认使用无权重计算平衡指标:
# 计算加权前的平衡统计量 bal_pre <- bal.tab(treat ~ cov1 + cov2 + cov3, data = imp, stats = c('m', 'ks'), # 指定均值差和KS统计量 imp.fun = 'max') # 聚合插补样本的统计量(取最大值)
加权后的平衡性检查
沿用你原本的逻辑,传入加权后的wimids对象:
# 计算加权后的平衡统计量 bal_post <- bal.tab(weighted_obj, stats = c('m', 'ks'), imp.fun = 'max')
3. 对比加权前后的结果
文本输出对比
分别打印两个平衡结果对象,直接查看加权前后的均值差、KS统计量变化:
# 打印加权前的平衡结果 print(bal_pre, which = "both") # 打印加权后的平衡结果 print(bal_post, which = "both")
which = "both"会同时展示处理组/对照组的描述性统计和平衡指标,方便直接对比数值变化。
可视化对比
使用cobalt包的plot()函数,直接绘制加权前后的平衡指标对比图:
# 对比加权前后的均值差 plot(bal_pre, bal_post, stats = "m", title = "加权前后均值差对比") # 对比加权前后的KS统计量 plot(bal_pre, bal_post, stats = "ks", title = "加权前后KS统计量对比")
可视化结果能更直观地看到各协变量在加权后的平衡改善情况。
关键说明
- 对于多重插补数据集,
imp.fun参数用于指定如何聚合多个插补样本的平衡统计量,除了'max',还可以选择'mean'(均值)、'median'(中位数)等,根据你的分析需求调整。 - 确保
cobalt包版本足够新,以支持多重插补数据集的平衡可视化功能。
内容的提问来源于stack exchange,提问作者JoeJoe
相关产品推荐
相关产品推荐

