You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用WeightIt重新执行IPTW以平衡未达标的age协变量?

解决IPTW加权后age协变量不平衡的方案

针对age协变量未达到0.1平衡阈值的问题,可以通过以下几种方式调整代码,重新执行IPTW以提升平衡效果:

1. 增强倾向得分(PS)模型的灵活性

如果age和处理分配之间存在非线性关系,基础线性PS模型可能无法充分捕捉,导致平衡不足。可以给age添加多项式项,让模型更贴合数据规律:

library(WeightIt)
library(cobalt)
data("lalonde", package = "cobalt")

# 添加age的平方项,捕捉非线性关联
W.out <- weightit(treat ~ age + I(age^2) + married + race,
                  data = lalonde, estimand = "ATE", method = "ps")
# 重新检验平衡状态
bal.tab(W.out, threshold=0.1)

2. 使用直接优化平衡的加权方法

传统PS方法先拟合倾向得分再计算权重,而**CBPS(协变量平衡倾向得分)**直接将协变量平衡纳入权重优化目标,更易实现预设的平衡要求:

W.out <- weightit(treat ~ age + married + race,
                  data = lalonde, estimand = "ATE", method = "cbps")
bal.tab(W.out, threshold=0.1)

3. 修剪极端权重

极端权重可能拉偏协变量分布,通过修剪最极端的部分权重,既能降低估计方差,也可能改善协变量平衡:

# 修剪上下5%的极端权重,可根据数据调整比例
W.out <- weightit(treat ~ age + married + race,
                  data = lalonde, estimand = "ATE", method = "ps",
                  trim = 0.05)
bal.tab(W.out, threshold=0.1)

4. 熵平衡(Entropy Balancing)

熵平衡会直接生成权重,强制处理组与对照组的协变量分布匹配,能精准达到设定的平衡阈值:

# moments=1表示平衡一阶矩(均值),需平衡方差可设为2
W.out <- weightit(treat ~ age + married + race,
                  data = lalonde, estimand = "ATE", method = "ebal",
                  moments = 1)
bal.tab(W.out, threshold=0.1)

内容的提问来源于stack exchange,提问作者user19745561

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:47:13