|
2 | 2 |
|
3 | 3 | All notable changes to StatsPAI will be documented in this file. |
4 | 4 |
|
5 | | -## [0.9.16] - 2026-04-20 — Textbook Heckman HV + multi-term tidy() for DID/IV + Rust Phase-2 CI |
6 | | - |
7 | | -Three additions that close long-standing gaps in the Bayesian |
8 | | -family, plus a CI scaffold for the Rust HDFE spike. |
9 | | - |
10 | | -### Added (0.9.16) |
| 5 | +## [0.9.16] - 2026-04-20 — v1.0 breadth expansion + Bayesian family polish + Rust Phase-2 CI |
| 6 | + |
| 7 | +The largest release since the v1.0 breadth pass. Maps StatsPAI onto |
| 8 | +the full Mixtape + What If + Elements of Causal Inference curriculum: |
| 9 | +Hernan-Robins target-trial emulation, Pearl-Bareinboim SCM machinery, |
| 10 | +modern off-policy / neural-causal estimators, plus three additions |
| 11 | +that close long-standing gaps in the Bayesian family, plus a CI |
| 12 | +scaffold for the Rust HDFE spike. |
| 13 | + |
| 14 | +### Added (0.9.16) — v1.0 breadth expansion (27+ new modules) |
| 15 | + |
| 16 | +**Target trial emulation & censoring (`sp.target_trial`, `sp.ipcw`)** |
| 17 | + |
| 18 | +- `target_trial_protocol`, `target_trial_emulate`, `clone_censor_weight`, |
| 19 | + `immortal_time_check` — JAMA 2022 7-component TTE framework with |
| 20 | + explicit eligibility / time-zero / per-protocol contrast support. |
| 21 | +- `ipcw` — Robins-Finkelstein inverse probability of censoring weights |
| 22 | + (pooled-logistic or Cox hazard) with stabilization + truncation. |
| 23 | + |
| 24 | +**SCM / DAG machinery (`sp.dag` extended)** |
| 25 | + |
| 26 | +- `identify` — Shpitser-Pearl ID algorithm; returns do-free estimand |
| 27 | + when identifiable, witness hedge `(F, F')` otherwise. |
| 28 | +- `do_rule1 / do_rule2 / do_rule3`, `do_calculus_apply` — mechanized |
| 29 | + do-calculus with d-separation on mutilated graphs `G_{bar X}`, |
| 30 | + `G_{underline Z}`, and `G_{bar Z(W)}`. |
| 31 | +- `swig` — Richardson-Robins Single-World Intervention Graphs via |
| 32 | + node-splitting of intervened variables. |
| 33 | +- `SCM` — abduction-action-prediction counterfactual runner with |
| 34 | + rejection sampling fallback for non-Gaussian structural equations. |
| 35 | +- `llm_dag` — LLM-backed DAG extraction from free-form descriptions. |
| 36 | + |
| 37 | +**Causal discovery with latents (`sp.causal_discovery`)** |
| 38 | + |
| 39 | +- `fci` — FCI for PAGs with unobserved confounders (Zhang 2008): |
| 40 | + skeleton + v-structures + FCI rules R1-R4. |
| 41 | +- `icp`, `nonlinear_icp` — Peters-Bühlmann-Meinshausen invariant |
| 42 | + causal prediction; linear F-test / K-S nonlinear invariance. |
| 43 | + |
| 44 | +**Transportability (`sp.transport`)** |
| 45 | + |
| 46 | +- `transport_weights_fn` / `transport_generalize` — Stuart / Dahabreh |
| 47 | + density-ratio transport with inverse odds of sampling weighting. |
| 48 | +- `identify_transport` — Bareinboim-Pearl s-admissibility; enumerates |
| 49 | + adjustment sets on selection diagrams, returns transport formula. |
| 50 | + |
| 51 | +**Off-policy evaluation (`sp.ope`)** |
| 52 | + |
| 53 | +- `ips`, `snips`, `doubly_robust`, `switch_dr`, `direct_method`, |
| 54 | + `evaluate` — Dudik-Langford-Li DR family plus Swaminathan-Joachims |
| 55 | + SNIPS and Wang-Agarwal-Dudík Switch-DR for bandits / RL. |
| 56 | + |
| 57 | +**Deep causal & latent-confounder models (`sp.neural_causal`)** |
| 58 | + |
| 59 | +- `cevae` — Louizos et al. CEVAE with PyTorch path + numpy |
| 60 | + variational fallback so import never fails. |
| 61 | + |
| 62 | +**Longitudinal / G-methods (`sp.gformula`, `sp.tmle`, `sp.dtr`)** |
| 63 | + |
| 64 | +- `gformula_ice_fn` — Bang-Robins iterative conditional expectation |
| 65 | + parametric g-formula; sequential backward regression with recursive |
| 66 | + strategy plug-in. Supports static / scalar / callable strategies. |
| 67 | +- `ltmle` — van der Laan-Gruber longitudinal TMLE. |
| 68 | +- `q_learning`, `a_learning`, `snmm` — dynamic treatment regime |
| 69 | + estimators. |
| 70 | + |
| 71 | +**Additional estimators across the stack** |
| 72 | + |
| 73 | +- Causal forests: `multi_arm_forest`, `iv_forest`, |
| 74 | + `survival/causal_forest` (Cui-Kosorok 2023). |
| 75 | +- Proximal: `negative_controls`, `pci_regression` (Miao-Shi-Tchetgen). |
| 76 | +- Interference: `network_exposure` (Aronow-Samii 2017), `peer_effects`. |
| 77 | +- Dose-response: `vcnet` + `scigan` (Nie-Brunskill-Wager 2021). |
| 78 | +- Matching: `genmatch` (Diamond-Sekhon 2013). |
| 79 | +- Sensitivity: `rosenbaum_bounds`. |
| 80 | +- Spatial: `spatial_did`, `spatial_iv` (Kelejian-Prucha 1998). |
| 81 | +- Time series: `its` (interrupted time series). |
| 82 | +- Bounds: `balke_pearl`. |
| 83 | +- Mediation: `four_way_decomposition` (VanderWeele 2014). |
| 84 | + |
| 85 | +**Registry / agent surface** |
| 86 | + |
| 87 | +- 11 hand-written `FunctionSpec` entries for the new flagship APIs, |
| 88 | + each with parameter schemas, tags, and canonical references. |
| 89 | +- `sp.list_functions()` now reports 664 entries. |
| 90 | +- `sp.search_functions("target trial")` / `"invariance"` / |
| 91 | + `"transport"` all resolve correctly. |
| 92 | + |
| 93 | +### Added (0.9.16) — Bayesian family gap-closing |
11 | 94 |
|
12 | 95 | - **`bayes_mte(mte_method='bivariate_normal')`** — full textbook |
13 | 96 | Heckman-Vytlacil trivariate-normal model `(U_0, U_1, V) ~ N(0, Σ)` |
|
0 commit comments