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 스타일 로버스트 표준 오차를 사용한 OLS
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에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트