【python因果推断库5】使用 CausalPy 进行贝叶斯geolift 分析2

目录

NHEFS 数据

评估平衡

估计平均处理效应

结论


再次,InversePropensityWeighting 类封装了检查倾向性得分分布以及在不同加权方案下评估平均处理效应的功能。

result1.plot_ATE(method="raw", prop_draws=10, ate_draws=500);

这里我们在三个图板中绘制了以下内容:

第一个图展示了按照处理组和对照组划分的倾向性得分分布的镜像抽样,分别用黄色和蓝色表示,灰色则表示通过加权创建的伪人群。
第二个图展示了在每种抽样下,经过重新加权后这些组的预期结果。
第三个图展示了得出的平均处理效应估计值。
请注意,在这种加权方案下,ATE(平均处理效应)的期望值略微偏离了真实值。这可能是由于具有极端倾向性得分的个体数量较多造成的——在第一个图中,这些个体的倾向性得分超过了0.9或低于0.1。

让我们来看看使用重叠加权(overlap weighting)方案会发生什么情况?

result1.plot_ATE(method="overlap", prop_draws=10, ate_draws=500);

这里我们看到特定的加权方案能够通过定义不同的伪人群对比来恢复真实的处理效应。这是一个有用的提醒,即虽然倾向性得分加权方法有助于观察数据中的推断,但并非所有的加权方案都是等效的,我们需要谨慎地评估何时应用哪种加权方案最为合适。从根本上说,选择的加权方案应该与试图估计的问题紧密相关。Aronow 和 Miller 的《Agnostic Statistics 基础》aronowFoundations 对原始加权、稳健加权以及双重稳健加权方案之间的差异有很好的解释。从某种意义上讲,这些加权方案提供了一系列逐步改进的估计量,每个都在尝试减少ATE估计的方差。双重稳健方法还试图对模型误设提供一定的保护。重叠加权估计器旨在计算具有重叠倾向性得分的人群中的ATE。这可以用于防止在倾向性得分分布存在大范围非重叠区域的情况下产生不良推断。

NHEFS 数据

现在我们将同样的技术应用于真实数据。

这个来自国家健康和营养检查调查的数据集记录了大约1500名个体在两个时间段内的体重、活动和吸烟习惯等细节。第一个时期建立了基线,而十年后的随访期则进行了跟踪调查。我们将分析个体(trt == 1)是否在随访访问之前戒烟。每个个体的结果代表了两个时期之间相对的体重增加或减少。

df = cp.load_data("nhefs")
df[["age", "race", "trt", "smokeintensity", "smokeyrs", "outcome"]].head()

formula = """trt ~ 1 + age + race + sex + smokeintensity + smokeyrs + wt71 + active_1 + active_2 + 
         education_2 + education_3 + education_4 + education_5 + exercise_1 + exercise_2"""

result = cp.pymc_experiments.InversePropensityWeighting(
    df,
    formula=formula,
    outcome_variable="outcome",
    weighting_scheme="robust",  ## Will be used by plots after estimation if no other scheme is specified.
    model=cp.pymc_models.PropensityScore(
        sample_kwargs={
            "draws": 1000,
            "target_accept": 0.95,
            "random_seed": seed,
            "progressbar": False,
        },
    ),
)

result

评估平衡

result.plot_balance_ecdf("age");

result.plot_balance_ecdf("smokeyrs");

 

result.plot_balance_ecdf("smokeintensity");

 

在所有情况下,重新加权似乎都有积极的效果,并有助于实现条件平衡。

估计平均处理效应

这里我们将使用两种不同的加权方案来突出展示稳健加权和双重稳健加权的功能。我们可以通过向绘图函数传递不同的关键字参数(kwargs)来使用这两种方法。我们仍然在重新加权上面使用逻辑回归模型得到的相同的倾向性得分分布。

result.plot_ATE(method="robust", prop_draws=10, ate_draws=500);

 

result.plot_ATE(method="doubly robust", prop_draws=10, ate_draws=500);

这里需要注意的是,虽然 (a) 控制组和处理组的倾向性得分分布看起来大致重叠,并且 (b) 两种加权方案在这里恢复了实质上相似的效果,但双重稳健估计量的方差要紧密得多。这种双重稳健估计量的设计特性在精确估计处理效应时非常重要。并不能保证稳健加权和双重稳健加权方案总是会给出相似的结果,因此这些方法之间的差异可能指向倾向性得分模型的问题。

注:
我们对 CausalPy 中逆倾向性得分加权的实现仅限于一个简单的倾向性得分的逻辑回归模型。然而,`InversePropensityWeighting` 实验类中的分析程序可以在任何 arviz 推断数据对象上运行,只要能够将倾向性得分后验分布识别为 `p`。这就开放了使用非参数倾向性得分设计的可能性,如在这里更深入讨论的那样。{cite:p}forde2024nonparam

结论

这结束了我们对逆倾向性加权实验的简短介绍。倾向性建模和倾向性加权是在因果推断中强有力的工具,它们的应用远不止于此处实现的用例。思考倾向性得分机制以及是什么驱动了不同的选择效应通常是因果建模的良好开端。如果能够很好地建模治疗选择的驱动因素,则倾向性得分调整通常是一种很好的方法来恢复感兴趣的因果量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水木流年追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值