You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Updates README/README_CN/index/dossier registry counts (1,020 functions,
81 submodules, 51 R-aligned Track A modules, 244 certified+validated
symbols) and reframes the coverage grid as method-family breadth rather
than a per-option validation certificate, pointing readers to
validation_status. CHANGELOG records the rddensity escape hatch, the
causal-forest AIPW correctness fix, the SCM-solver certification, and the
regenerated Track A ledger under [Unreleased].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
StatsPAI is the**first agent-native** Python platform for causal inference and applied econometrics. One `import`, **1,000+ registered functions** across **80 submodules** (live count: `python scripts/registry_stats.py`), covering the complete empirical research workflow — from classical econometrics to cutting-edge ML/AI causal methods to publication-ready tables in Word, Excel, and LaTeX.
17
+
StatsPAI is an**agent-native** Python platform for causal inference and applied econometrics. One `import`, **1,000+ registered functions** across **80+ submodules** (live count: `python scripts/registry_stats.py`), covering the empirical research workflow — from classical econometrics to ML/AI causal methods to publication-ready tables in Word, Excel, and LaTeX.
18
18
19
-
**Built for AI agents**: every function returns structured result objects with machine-readable schemas (`list_functions()`, `describe_function()`, `function_schema()`) and is numerically validated against R and Stata reference implementations — purpose-built for LLM-driven research workflows while remaining fully ergonomic for human researchers.
19
+
**Built for AI agents**: every registered function has machine-readable discovery metadata (`list_functions()`, `describe_function()`, `function_schema()`), and parity-backed functions expose an explicit `validation_status` so agents and humans can distinguish certified numerical evidence from API-stable breadth.
20
20
21
21
It brings R's [Causal Inference Task View](https://cran.r-project.org/web/views/CausalInference.html) (fixest, did, rdrobust, gsynth, DoubleML, MatchIt, CausalImpact, ...) and Stata's core econometrics commands into a single, consistent Python API.
22
22
@@ -115,7 +115,7 @@ Every result object exposes the same interface — `.summary()` / `.tidy()` / `.
115
115
116
116
## 📊 Causal Inference Coverage at a Glance
117
117
118
-
StatsPAI's focus is **causal inference** — and on this axis we aim to be the most complete single package in any language. "Stata" = official + major SSC packages. "R" = CRAN. "sm+lm" = statsmodels + linearmodels.
118
+
StatsPAI's focus is **causal inference**. The grid below summarizes method-family breadth; it is not a validation certificate for every option. "Stata" = official + major SSC packages. "R" = CRAN. "sm+lm" = statsmodels + linearmodels.
119
119
120
120
| Method family | Stata | R | sm+lm | DoubleML |**StatsPAI**|
@@ -137,7 +137,7 @@ StatsPAI's focus is **causal inference** — and on this axis we aim to be the m
137
137
138
138
**Legend**: 🏆 most complete across ecosystems · ✅ full coverage · ⚠️ partial / scattered / single algorithm · ❌ not available.
139
139
140
-
**StatsPAI at a glance**: 1,018 registered functions in the live agent registry · 80 submodules · ~249k LOC (core) + ~86k LOC (tests). All four numbers are reproducible from the canonical generator (`python scripts/registry_stats.py`); the per-module table in [`docs/stats.md`](docs/stats.md) is regenerated from the same script. For the full coverage matrix (23 method families) and cross-ecosystem line-count comparison, see [`docs/stats.md`](docs/stats.md).
140
+
**StatsPAI at a glance**: 1,020 registered functions in the live agent registry · 81 submodules · 266k LOC (core) + 93k LOC (tests). All four numbers are reproducible from the canonical generator (`python scripts/registry_stats.py`); the per-module table in [`docs/stats.md`](docs/stats.md) is regenerated from the same script. For the full coverage matrix (23 method families) and cross-ecosystem line-count comparison, see [`docs/stats.md`](docs/stats.md).
141
141
142
142
**Validation tiers matter**: `stability="stable"` means the public API is SemVer-stable; it does not by itself mean R/Stata/paper parity. Use `sp.list_functions(validation_status="certified")` for cross-language or published-reference evidence, and inspect `sp.describe_function(name)["limitations"]` before production use. See [`docs/guides/stability.md`](docs/guides/stability.md).
143
143
@@ -146,8 +146,9 @@ StatsPAI's focus is **causal inference** — and on this axis we aim to be the m
146
146
StatsPAI 1.16.0 corrects the `sp.qreg` Powell sandwich standard error (was off
147
147
by √n) and rebuilds `sp.xtabond` Arellano–Bond difference GMM to match Stata to
148
148
machine precision — both flagged ⚠️ **Correctness**, so re-run affected
149
-
analyses. The Track A cross-language parity harness grows from 36 to 50
150
-
R-aligned modules (Stata reference for 43 of them), and the JOSS
149
+
analyses. The Track A cross-language parity harness grows from 36 to 51
150
+
R-aligned modules (Stata reference for 43 of them, plus one
151
+
Py-Stata-only `xtabond` migration check), and the JSS
151
152
reviewer-facing docs are refreshed. Full notes in
152
153
[`CHANGELOG.md`](CHANGELOG.md) under `[1.16.0]`.
153
154
@@ -428,7 +429,7 @@ StatsPAI 1.4.0 is Sprint 2 of the 知识地图 v3 roadmap. Closes the four secon
428
429
|**Particle-filter assimilation**|**`sp.assimilation.particle_filter`** — bootstrap-SIR particle filter with systematic resampling (Gordon-Salmond-Smith 1993; Douc-Cappé 2005). Non-Gaussian priors, heavy-tailed observation noise, nonlinear dynamics via pluggable callbacks. Agrees with exact Kalman to ~0.003 under Gaussian DGPs. **`sp.assimilative_causal(..., backend='particle')`** routes the end-to-end wrapper. |
|**Agent-native platform**|`sp.list_functions()` / `sp.describe_function()` / `sp.function_schema()` expose OpenAI/Anthropic tool-calling schemas for 1,018 registered public functions. 145 curated or explicitly inherited `FunctionSpec` entries carry at least one of assumptions, preconditions, failure modes, limitations, `typical_n_min`, and validation tiers for the flagship surface. `sp.agent.mcp_server` MCP scaffold lets external LLMs call every StatsPAI function via natural-language tool invocation. |
432
+
|**Agent-native platform**|`sp.list_functions()` / `sp.describe_function()` / `sp.function_schema()` expose OpenAI/Anthropic tool-calling schemas for 1,020 registered public functions. 362 curated or explicitly inherited `FunctionSpec` entries carry at least one of assumptions, preconditions, failure modes, limitations, `typical_n_min`, and validation tiers for the flagship surface. `validation_status` distinguishes certified/validated evidence from API-stable breadth. `sp.agent.mcp_server` MCP scaffold lets external LLMs call every StatsPAI function via natural-language tool invocation. |
432
433
|**CI/CD hygiene**|`tabulate` hard-dep from v1.3.0 carried forward. Deflaked `test_forest_ate_recovers_average_tau` by seeding the forest explicitly (`random_state=0`, `n_estimators=300`, larger `n`). 2 699+ tests passing across all OS × Python matrix entries. |
433
434
434
435
**Previously in v0.9.2 — Decomposition Analysis**: **18 first-class decomposition methods across 13 modules (~6,200 LOC, 54 tests)**, unified under `sp.decompose(method=...)`. Mean (Blinder-Oaxaca/Gelbach/Fairlie/Bauer-Sinning/Yun), distributional (RIF/FFL/DFL/Machado-Mata/Melly/CFM), inequality (Theil/Atkinson/Dagum/Shapley/Lerman-Yitzhaki), demographic (Kitagawa/Das-Gupta), and causal (gap_closing/mediation_decompose/disparity_decompose). Closed-form influence functions for Theil/Atkinson, weighted O(n log n) Dagum Gini, cross-method consistency checks.
@@ -653,7 +654,7 @@ wrappers, no runtime dependencies on upstream DID packages.
0 commit comments