pymc-labs/CausalPy
A Python package for causal inference in quasi-experimental settings
CausalPy – 準実験的デザインのためのベイズ優先因果推論
概要 – CausalPyは、真のランダム化実験が不可能な場合に因果効果を推定するためのPythonライブラリです。古典的な準実験的手法(差分の差分法、合成コントロール法、回帰不連続デザインなど)を実装し、それらを PyMCベースのベイズモデル として実行します(OLSフォールバックも利用可能)。出力には、完全な事後分布の要約、信用区間、ROPEに基づく実質的な有意性チェック、および出版可能な品質のプロットが含まれます。
特徴
- 不確実性を考慮: 単なる点推定ではなく、分布、HDI、裾確率、ROPE分析を提供します。
- 再現可能なワークフロー: データ読み込み、モデル指定、フィッティング、可視化が高レベルクラス(
RegressionDiscontinuity,SyntheticControlなど)にラップされており、plot()およびsummary()メソッドを持つ単一のresultオブジェクトを生成します。 - PyMCベース: 最新の確率的プログラミング(PyMC 6, PyTensor 3, ArviZ)を活用しつつ、迅速な確認のためにscikit‑learnを介した古典的なOLSもサポートしています。
- コンサルティング対応: 高度なリフトテストや政策影響評価のための有料コンサルティングを提供しています。
主な機能(READMEより)
| 機能 | 詳細 |
|---|---|
| 手法 | 合成コントロール、地理的リフト、ANCOVA、差分の差分法 (Diff‑in‑Diff)、スタッガードDiD、回帰不連続/キンクデザイン、中断時系列分析、操作変数法、逆傾向スコア重み付け |
| ベイズ優先 | モデルは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(Q&A)、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 オブジェクトは、フィッティングされたモデル、診断情報、およびレポート作成用のヘルパーメソッドをカプセル化しています。
対象ユーザー
- プロダクト/マーケティングアナリスト: 地理的リフト、政策変更、または段階的なロールアウトを評価する方。
- 社会科学者: 不確実性の定量化を伴う厳密なDiDやRD分析を必要とする方。
- データサイエンティスト: ベイズアプローチを好みつつ、高速なOLSのオプションも維持したい方。
以下のような目的には 適していません:
- 観測データからの純粋な因果探索。
- 完全自動化された「ブラックボックス」の因果回答。
- 大規模な本番パイプライン(組み込みのオーケストレーション機能はありません)。
開始方法とリソース
- インストール:
pip install CausalPy(またはconda)。Python 3.12+、PyMC 6が必要。 - ドキュメント: https://causalpy.readthedocs.io – 各手法のチュートリアルが含まれています。
- コミュニティ: 使用方法の質問はGitHub Discussions、バグ報告はIssuesへ。
- ビデオデモ: README内のYouTubeリンクを参照。
要約
CausalPyは、準実験的因果推論のための研究グレードのベイズ優先Pythonツールボックスです。古典的なデザインをPyMC駆動のワークフローにラップし、不確実性を考慮した推定、診断、および共有可能な可視化を提供します。Pythonのデータサイエンススタックに慣れたアナリストにとって、インストールと使用が容易な設計となっています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト