brycewang-stanford/StatsPAI
StatsPAI is the first Agent-native Python library for causal inference and applied econometrics — unified API, broad cross-method coverage, structured result objects, machine-readable schemas, Skills, an MCP server, and R/Stata parity validation.
StatsPAI – 実証研究におけるStata & RのPythonネイティブ代替
概要 – StatsPAIは、従来StataやRに存在する計量経済学および因果推論ツール(例:regress、ivregress、reghdfe、csdid、rdrobust、synth、psmatch2、esttab)をまとめた大規模なコレクションを提供します。これらのコマンドを、慣れ親しんだ構文とオプション(ロバスト/クラスター標準誤差、vce=の扱い、test、lincom、marginsなどの推定後コマンド)を維持しながら、クリーンでPythonネイティブなAPIとして再公開します。さらに、約1,600の関数のレジストリ、組み込みデータセット、表をExcel、Word、LaTeX、またはLLMエージェントに直接エクスポートするユーティリティも同梱しています。
対象読者 – 現在Stata、R、Pythonを切り替えて使用している実証経済学者、社会科学者、政策アナリスト。回帰、DiD、RD、合成コントロール、マッチングなどのコードを頻繁に書き、Stataスタイルのワークフローを失わずにPythonに留まりたい場合は、このライブラリが最適です。
主な機能
- StataスタイルAPI –
sp.regress、sp.ivreg、sp.feols、sp.rdrobust、sp.synth、sp.psmatch2などの関数。オプションはStataの慣例に従います(vce="robust"、vce="cluster firm")。 - Rスタイルの同等機能 – 多くの関数はRパッケージ(
lm、fixest、did、DoubleML)と1対1で対応します。同じ呼び出しが両方の世界で機能します。 - エージェント対応メタデータ – すべての公開関数は、機械可読なスキーマ(
sp.describe_function、sp.function_schema)を登録します。同梱のstatspai‑mcpサービスを使用すると、推定器をClaude Code、Cursorなどに公開できます。 - 言語間ブリッジ –
sp.stata("…", data=df)で生のStataコードを実行。sp.from_stata/sp.from_rでコマンドをPython APIに変換します。 - 拡張可能な追加機能 – オプションの依存関係により、プロット(
statspai[plotting])、高次元固定効果(statspai[fixest])、ベイズモデル(statspai[bayes])、ニューラルネットワーク因果モデル(statspai[neural])、JAX高速化(statspai[performance])、空間分析(statspai[spatial])が追加されます。 - 組み込みデータセット – 14のオフラインデータセット(Card 1995、LaLonde/NSW、RD上院データなど)で、簡単なデモと検証が可能です。
- 結果のエクスポート –
sp.regtableで、印刷、.xlsx、.docx、LaTeX、Markdown、HTMLとして保存できる単一のテーブルオブジェクトを作成します。 - インタラクティブなグラフエディタ –
sp.interactive(fig)で、Jupyterノートブック内でMatplotlib/Seaborn/Plotlyの図を微調整するStataライクなGUIを提供します。
動作原理 – コアライブラリ(約634,000行)は、統計推定器、レジストリシステム、および既存のPythonパッケージ(例:pyfixest、linearmodels、DoubleML、EconML)の薄いラッパーを実装しています。検証ステータス(certified、validated、api_stable)が各関数に付与され、数値出力がStata/Rと相互検証されているかどうかをユーザーが確認できます。
典型的なワークフロー
import statspai as sp
# 組み込みデータセットを読み込む
card = sp.datasets.card_1995()
# StataスタイルのロバストSEを用いた通常最小二乗法
ols = sp.regress("lwage ~ educ + exper + expersq + black + south + smsa",
data=card, robust="hc1")
print(ols.summary())
# 推定後テストと限界効果
print(ols.test("educ = 0"))
print(sp.margins(ols, variables=["educ"]))
# 複数の仕様で回帰テーブルをエクスポート
tbl = sp.regtable(ols, sp.ivreg(...), model_labels=["OLS", "2SLS"])
tbl.to_excel("table1.xlsx")
同じコードをLLMエージェントから呼び出すことができ、エージェントは関数スキーマを照会して利用可能な引数を発見できます。
重要性 – 実証ワークフローをPythonに移行する際の障壁を下げ、研究者が信頼する統計的慣例(Stataスタイルの小標本補正、クラスタリング、推定後コマンド)を維持し、それらのワークフローをAIアシスタントが発見できるようにします。このプロジェクトはオープンソースで、査読済み(JOSS 2026)であり、スタンフォード大学REAPチームがメンテナンスしています。
上記の詳細はすべてリポジトリのREADMEから直接引用したものであり、追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト