ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Causalinference倾向得分估计实战:est_propensity用法、二次项设置与协变量平衡检验

Causalinference倾向得分估计实战:est_propensity用法、二次项设置与协变量平衡检验 Causalinference倾向得分估计实战est_propensity用法、二次项设置与协变量平衡检验【免费下载链接】CausalinferenceCausal Inference in Python项目地址: https://gitcode.com/gh_mirrors/ca/CausalinferenceCausalinferenceCausal Inference in Python是一个用 Python 实现的因果推断与处理效应分析软件包涵盖倾向得分估计、协变量平衡检验、匹配、加权等经典方法。本文将带你用est_propensity完成倾向得分估计掌握二次项qua的设置技巧并通过标准化差异ndiff快速检验协变量平衡帮助新手少走弯路。1. 快速上手三步搭好因果模型 Causalinference 的核心是CausalModel类定义在 causalinference/causal.py 中。只要准备好三个数组即可建模Y结果变量数值D处理指示变量0/1X协变量矩阵import numpy as np from causalinference import CausalModel causal CausalModel(Y, D, X) # 建模完成后自动计算描述性统计 print(causal.summary_stats) # 查看处理组/对照组均值、标准差 安装pip install CausalInference依赖 NumPy 与 SciPy。也可以从仓库git clone https://gitcode.com/gh_mirrors/ca/Causalinference后本地安装。包内自带示例数据 causalinference/utils/vignette_data.txt含 Y、D 及两个协变量 X1、X2适合动手练习。2. est_propensity 用法详解参数、返回值怎么读 调用est_propensity会用逻辑回归估计倾向得分给定协变量下接受处理的概率 p(X)核心方法位于 causalinference/causal.pycausal.est_propensity(linall, qua[(0, 0), (1, 1)]) print(causal.propensity)输出是一张类似统计软件回归表的表格包含各系数的Coef.系数、S.e.标准误、z、P|z|p值和 95% 置信区间Estimated Parameters of Propensity Score Coef. S.e. z P|z| [95% Conf. int.] -------------------------------------------------------------------------------- Intercept -2.839 0.526 -5.401 0.000 -3.870 -1.809 X0 0.466 0.155 3.011 0.003 0.163 0.770 X1 0.486 0.153 3.178 0.001 0.186 0.786 X0*X0 -0.045 0.012 -3.579 0.000 -0.069 -0.020 X1*X1 -0.045 0.013 -3.542 0.000 -0.070 -0.020新手读表口诀先看 P|z|小于 0.05 说明该变量对谁被处理有显著影响。causal.propensity是字典式对象常用键如下键含义fitted每个个体的倾向得分值后续所有方法都基于它coef/se回归系数与标准误lin/qua最终纳入的线性项 / 二次项loglike最大化对数似然模型拟合好坏底层实现见 causalinference/core/propensity.py。3. 二次项qua设置捕捉非线性处理分配 ⚖️如果处理分配不只与协变量线性相关比如年龄适中的人更可能参加项目只放线性项会估计偏差。qua参数用元组指定要相乘的列列号从 0 开始(1, 1)第 2 列的平方项(2, 3)第 3 列与第 4 列的乘积项# 常用写法保留全部线性项并为每个协变量添加平方项 causal.est_propensity(lin[0, 1], qua[(0, 0), (1, 1)]) # 偷懒写法all 表示加入所有协变量的全部二次组合含重复 causal.est_propensity(linall, quaall)不确定该放哪些项改用自动版est_propensity_s它通过似然比检验序列自动挑选线性项与二次项默认临界值C_lin1、C_qua2.71来自 Imbens Rubin 的推荐causal.est_propensity_s() # 自动选变量省去手工调参 print(causal.propensity[lin], causal.propensity[qua]) 经验法则协变量较少且怀疑非线性时手动加平方项更可控协变量较多时用est_propensity_s更省事。4. 协变量平衡检验用 ndiff 判断两组是否可比 估计完倾向得分前先确认处理组和对照组是否长得像。causal.summary_stats会自动计算每个协变量的标准化差异 ndiffNormalized Difference定义在 causalinference/core/summary.py$$ndiff_k \frac{\bar{X}{k,t} - \bar{X}{k,c}}{\sqrt{(s^2_{k,t} s^2_{k,c})/2}}$$它的好处是数值大小不随样本量增大而膨胀适合直观比较。经验标准是|ndiff| 0.1即认为该协变量基本平衡print(causal.summary_stats[ndiff]) # 例如 array([0.706, 0.880]) → 两个协变量都明显失衡需要处理5. 失衡怎么办修剪、分层与效应估计 ️拿到失衡结论后标准流程是修剪 → 分层 → 估计都基于已估计的倾向得分causal.est_propensity() # 必须先估计倾向得分 causal.trim() # 默认剔除倾向得分 0.1 或 0.9 的个体改善平衡 # 或 causal.trim_s() # 自动计算最优修剪阈值最小化估计方差 causal.stratify() # 按倾向得分分 5 个等宽层可改 causal.blocks causal.est_via_weighting() # 加权估计 # 也可选causal.est_via_ols() / est_via_blocking() / est_via_matching() print(causal.estimates) # 查看 ATE / ATC / ATT 及标准误修剪的意义倾向得分极端个体的对侧组里找不到可比的邻居剔除后协变量平衡通常显著改善——可再次运行causal.summary_stats[ndiff]前后对比验证效果。6. 小结一条完整工作流 ✅步骤方法关注点建模CausalModel(Y, D, X)三输入结果、处理、协变量估计倾向得分est_propensity(lin..., qua...)二次项捕捉非线性自动选项est_propensity_s()似然比检验替代手工平衡检验summary_stats[ndiff]目标ndiff 0.1修剪trim()/trim_s()默认 cutoff 0.1估计效应est_via_weighting()等输出 ATE/ATC/ATT更多完整示例可参考官方示例文档 docs/tex/vignette.tex配套 PDFdocs/tex/vignette.pdf以及回归项构造的单测 tests/test_propensity.py。掌握倾向得分 平衡检验这一组合拳你的因果分析就有了坚实的第一步。【免费下载链接】CausalinferenceCausal Inference in Python项目地址: https://gitcode.com/gh_mirrors/ca/Causalinference创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表