StatsPAI 正式开源:一个统一的 Python 因果推断与应用计量经济学工具包
如果你做过实证研究论文,一定有过这样的痛苦:OLS 在 Stata 里跑,因果森林要切到 R,数据清洗在 Python 里做,最后又回到 Stata 导出回归表。 三种语言,六个包,零一致性。
今天,我们正式将 StatsPAI 作为开源 Python 工具包发布——一劳永逸地终结这种碎片化。
pip install statspai一行命令。一种语言。150+ 计量经济学与因果推断方法,触手可及。
为什么我们要做 StatsPAI
动机很简单:做实证研究的人,值得拥有更好的工具。
几十年来,应用计量经济学分散在不同的生态系统中。Stata 在经典回归领域占据主导地位。R 在前沿因果推断方法上领先(DID、RD、因果森林)。Python,尽管是全球最流行的编程语言,在这个领域却一直是二等公民——分散在 statsmodels、linearmodels、econml、dowhy 和数十个小型包中,每个包都有自己的 API 约定、输出格式和文档风格。
这种碎片化带来了真实的成本:
- 认知负担:研究者必须在多种语言和 API 模式之间来回切换
- 可复现性障碍:多语言流水线更难分享、审查和复制
- 生产力损失:花大量时间手动格式化表格、转换输出格式、调试跨包兼容性问题
- 准入门槛:初级研究者和学生仅仅为了运行标准的因果推断方法,就面临陡峭的学习曲线
StatsPAI 提供什么
StatsPAI 不只是一个包装器。它是对 Python 计量分析应该如何工作的一次从零开始的重新设计。
150+ 方法的统一 API
StatsPAI 中的每个方法——从基础 OLS 到神经因果模型——都返回一致的结果对象,拥有相同的接口:
import statspai as sp
# 经典 OLS
result = sp.ols("y ~ x1 + x2 + x3", data=df)
result.summary()
result.plot()
result.to_latex()
# 双重差分(Callaway & Sant'Anna)
result = sp.did_cs(y="outcome", g="group", t="time", data=df)
result.summary()
result.plot()
result.to_latex()
# 因果森林
result = sp.causal_forest(y="outcome", t="treatment", x=covariates, data=df)
result.summary()
result.plot()
result.to_latex()同样的模式。同样的方法。没有意外。
八大模块类别
StatsPAI 覆盖了完整的实证研究工具链:
1. 经典计量经济学 — OLS、IV/2SLS、面板数据(固定/随机效应)、分位数回归、Tobit、Heckman 选择模型、动态面板 GMM
2. 双重差分(DID) — 经典 2x2 DID、交错处理设计(Callaway & Sant'Anna、Sun & Abraham)、Goodman-Bacon 分解、平行趋势敏感性分析
3. 断点回归(RD) — 精确断点与模糊断点回归,偏差校正推断、McCrary 密度检验、最优带宽选择、丰富的可视化
4. 匹配与加权 — 倾向得分匹配、马氏距离匹配、粗化精确匹配、熵平衡、IPW 和 AIPW
5. 合成控制 — Abadie-Diamond-Hainmueller SCM、合成双重差分,完整的安慰剂推断和供体池诊断
6. 现代 ML 因果方法 — 双重/去偏机器学习、因果森林、元学习器(S/T/X/R/DR-Learner)、TMLE、神经因果模型(TARNet、CFRNet、DragonNet)
7. 稳健性与诊断 — 规格曲线、Oster 系数稳定性边界、Sensemakr 敏感性分析、自动化稳健性报告、异质性/亚组分析
8. 出版级输出 — modelsummary()、outreg2()、平衡表、系数图——直接导出到 Word、LaTeX、HTML 和 Excel,格式统一
从第一天起就是出版级质量
我们最坚定的一个观点:研究者不应该手动格式化回归表格。 StatsPAI 默认生成出版级别的输出:
# 多模型对比表,导出到 Word
sp.modelsummary(
[model1, model2, model3],
stars=True,
output="results_table.docx"
)
# 自动化稳健性检验
sp.robustness_report(
base_model=model,
data=df,
output="robustness_check.html"
)不再需要把数字复制到 Excel。不再需要手动对齐 LaTeX 的列。输出可以进入人工复查和投稿准备流程。
我们的使命:AI 时代计量经济学的 Python 化
StatsPAI 不仅仅是一个包——它代表了我们对实证研究走向的一个判断。
融合正在发生
"传统计量经济学"和"机器学习"之间的界限正在消融。双重机器学习使用随机森林估计处理效应。因果森林将基于树的方法与 Neyman-Rubin 潜在结果框架结合。神经因果模型使用深度学习架构进行反事实预测。
这些方法不属于不同的工具包。它们属于同一个地方。
StatsPAI 建立在这样一个信念之上:一个研究者应该能够从 OLS 基准线开始,转到 DID 设计,添加因果森林进行异质性分析,然后生成出版级稳健性报告——所有这些都在同一个工作流、同一种语言、同一套 API 中完成。
为什么是 Python?
Python 是 AI 生态系统的语言。PyTorch、TensorFlow、Hugging Face、LangChain——定义现代 AI 的工具都是 Python 原生的。随着因果推断越来越多地与机器学习融合,计量经济学的语言需要成为 AI 的语言。
StatsPAI 让这成为可能。你可以将 StatsPAI 与任何 ML 框架一起使用,在任何 Jupyter notebook 中,在任何云平台上。不需要 Stata 许可证费用。不需要 R 互操作性的头痛。只需要 Python。
开源作为公共产品
我们以 MIT 许可证发布 StatsPAI——免费使用、修改和分发。这是一个深思熟虑的选择。
严谨实证研究的工具不应该被昂贵的软件许可证所限制。内罗毕的一名博士生应该能使用与斯坦福教授相同的计量经济学工具包。开源是我们实现这一目标的方式。
我们也相信开源能产出更好的科学。当你的分析代码只需一个 pip install 就能复现,同行评审才更有意义。当方法实现在一个透明的、可检查的代码库中,方法论的争论才能聚焦于实质,而非实现细节。
快速开始
安装
pip install statspai需要 Python 3.9+。核心依赖(NumPy、SciPy、Pandas、statsmodels、scikit-learn)会自动安装。
快速示例:10 行代码完成一个完整的 DID 分析
import statspai as sp
import pandas as pd
# 加载数据
df = pd.read_csv("policy_evaluation.csv")
# 运行交错 DID(Callaway & Sant'Anna)
result = sp.did_cs(y="outcome", g="first_treat", t="year", data=df)
# 查看结果
result.summary()
result.plot()
# 导出到 LaTeX
result.to_latex("did_results.tex")就是这样。没有样板代码。没有配置文件。没有单独的数据处理流水线。
StatsPAI 的 GitHub 仓库
完整的源代码、文档和贡献指南可在 GitHub 上获取:
github.com/brycewang-stanford/StatsPAI
我们欢迎贡献——无论是 bug 修复、新方法实现,还是文档改进。每一个 pull request 都让整个研究社区的工具变得更好。
下一步计划
这次首发只是开始。我们的路线图包括:
- 交互式文档:为每个方法提供可运行的示例
- 与 CoPaper.AI 集成:以 StatsPAI 的计算引擎驱动 AI 辅助论文写作
- GPU 加速:用于大规模因果森林和神经因果模型估计
- 贝叶斯扩展:包括贝叶斯因果森林和后验预测检验
- 社区贡献的方法:我们正在构建基础设施,让研究者可以贡献自己的方法实现
加入社区
StatsPAI 由 CoPaper.AI 背后的团队构建,源自 斯坦福农村教育行动计划(REAP)。我们的团队亲眼见证了方法论壁垒如何限制研究的影响力——特别是在发展经济学领域,严谨的因果证据可以直接为影响数百万人生活的政策决策提供信息。
如果你相信更好的工具带来更好的研究,更好的研究带来更好的政策——StatsPAI 就是为你而做的。
pip install statspai在 GitHub 上给我们点个 Star。在你的下一个项目中尝试它。如果有什么不对的地方,提一个 issue。让我们一起,把 Python 打造成 AI 时代实证研究的决定性语言。
StatsPAI 由 StatsPAI Inc. 开发,作为开源项目在 MIT 许可证下维护。如有问题、反馈或合作咨询,请访问我们的 GitHub 仓库或联系团队。