pymc-labs/CausalPy

A Python package for causal inference in quasi-experimental settings

CausalPy – 准实验设计的贝叶斯优先因果推断

功能概述 – CausalPy 是一个 Python 库,让分析师在无法进行真实随机实验时,能够估计因果效应。它实现了一系列经典的准实验方法(双重差分、合成控制、回归断点分析等),并以 基于 PyMC 的贝叶斯模型 运行(可选 OLS 回退)。输出包含完整的后验摘要、可信区间、基于 ROPE 的实务显著性检验以及可直接发表的图表。


为何选择它

  • 具备不确定性感知:不仅提供单点估计,还能获得分布、HDI、尾部概率和 ROPE 分析。
  • 可重现的工作流程:数据加载、模型设定、拟合与可视化皆封装在高阶类(RegressionDiscontinuity, SyntheticControl 等)中,产生单一 result 对象,并具备 plot() 和 summary() 方法。
  • 基于 PyMC:利用现代概率编程(PyMC 6, PyTensor 3, ArviZ),同时支持通过 scikit‑learn 进行经典 OLS 以供快速检查。
  • 顾问级支持:团队为高风险的提升测试或政策影响评估提供付费咨询服务。

核心功能(摘自 README)

功能 详细信息
方法 合成控制、地理提升、ANCOVA、双重差分 (Diff‑in‑Diff)、交错式双重差分、回归断点/转折分析、中断时间序列、工具变量、反倾向分数加权
贝叶斯优先 模型以 PyMC 编写;提供后验 HDI、尾部概率、ROPE。通过 scikit‑learn 提供 OLS 回退。
决策级输出 effect_summary() 返回表格与文字说明;plot() 提供出版级质量的图形。
安装 pip install CausalPy 或 conda install -c conda‑forge causalpy。支持 Python 3.12+。
执行注意事项 使用 numba (通过 PyTensor) – 首次采样会产生编译成本;可能发生原生崩溃;nutpie 可能会静默更改 NUTS 默认值。
AI 代理技能 用于 AI 编程助手的微型“技能”位于 causalpy/skills/ 并发布至 Decision AI Hub。
文档与支持 Read‑the‑Docs 网站、GitHub Discussions 用于问答、Issues 用于报告错误,以及咨询用的 Calendly 链接。
授权 Apache 2.0。

典型用法(快速入门示例)

import causalpy as cp
import matplotlib.pyplot as plt

# 加载包内自带的示例数据集
df = (
    cp.load_data("drinking")
    .rename(columns={"agecell": "age"})
    .assign(treated=lambda d: d.age > 21)
)

# 使用贝叶斯线性回归拟合回归断点模型
result = cp.RegressionDiscontinuity(
    df,
    formula="all ~ 1 + age + treated",
    running_variable_name="age",
    model=cp.pymc_models.LinearRegression(),
    treatment_threshold=21,
)

# 可视化断点处的跳跃
fig, ax = result.plot()

# 打印包含后验区间的摘要
result.summary()

result 对象封装了拟合模型、诊断信息以及用于报告的辅助方法。


适用对象

  • 产品/营销分析师:评估地理提升、政策变更或交错式推广效果。
  • 社会科学家:需要严谨的双重差分或回归断点分析,并进行不确定性量化。
  • 数据科学家:偏好贝叶斯方法,但仍希望保留快速 OLS 选项。

它 不 适用于:

  • 从观测数据中进行纯粹的因果发现。
  • 全自动化的“黑箱”因果答案。
  • 大规模生产管线(无内置编排功能)。

入门与资源

  • 安装:pip install CausalPy (或 conda)。需要 Python 3.12+, PyMC 6。
  • 文档:https://causalpy.readthedocs.io – 包含每种方法的教学。
  • 社区:GitHub Discussions 用于使用问题;Issues 用于错误报告。
  • 视频演示:README 中的 YouTube 链接。

总结

CausalPy 是一个研究级、贝叶斯优先的 Python 工具箱,用于准实验因果推断。它将经典设计封装在 PyMC 驱动的工作流程中,提供具备不确定性感知的估计、诊断和易于分享的视觉化结果,同时对于熟悉 Python 数据科学堆栈的分析师来说,安装与使用都非常简单。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目