Parity coverage gap inventory (dev / planning)¶
Snapshot as of 2026-07-01, StatsPAI 1.20.0. The live numbers are always available via
sp.parity_summary()and the auto-generated parity matrix; this page adds the human judgment (prioritization + candidate references) that the machine index deliberately does not assert. Candidate reference ecosystems below are leads to verify before alignment, not parity claims (CLAUDE.md §10).
Honest denominators¶
The all-registered fraction understates coverage because the ~171
infrastructure functions (output, plots, utils, agent, workflow,
smart, core, datasets, validation, experimental) are not
parity-applicable — they render tables, build agent schemas, or load data;
they are not estimators.
| denominator | verified | total | fraction |
|---|---|---|---|
| estimator functions (parity-applicable) | 213 | 964 | 22.1% |
| infra / non-estimator (parity N/A) | — | 171 | — |
| all registered | 213 | 1139 | 18.7% |
By grade (live sp.parity_summary()): 121 bit-exact, 7 aligned,
4 external-replication, 81 analytical-only, 926 unverified.
Recent coverage gains: decomposition closed-form identities (
gelbach/das_gupta/subgroup_decompose/kitagawa_decompose/source_decompose/mediation_decompose, bit-exact); robustness (sensemakr/oster_delta/breakdown_frontier, bit-exact closed forms);lrtest/icc/mr(ivw)/margins_at/lee_boundsbit-exact; frontier DGP-recovery (conformal_ite/conformal_fair_ite/front_door/pate/fci/policy_value/policy_tree, analytical-only). Correctness fixes shipped this pass (labeled ⚠️ in CHANGELOG/MIGRATION):contrast/pwcompareC(var)all-zeros,dist_iv/kan_dlatebinary-instrument NaN,gesspurious collider edge. Probed but excluded (convention mismatch, kept honest):johansen,granger_causality,vif,trimming(Crump rule),partial_corr_pvalue(p-value convention),msm(estimand ambiguity).
So the real coverage metric to drive to is verified / 964 estimators, and the north-star is to raise it release over release.
Coverage by estimator family (the gap map)¶
EMPTY = a whole family with zero parity rows — the highest-leverage targets,
because one new Track A module + a reference_parity file can move many
functions at once.
| family | verified / total | note |
|---|---|---|
| causal | 85 / 407 | mega-bucket: DiD / IV / RD / synth / matching / DML / mediation / sensitivity / bounds / policy / conformal — many sub-families now bit-exact or analytical-only; biggest absolute gap but heterogeneous |
| regression | 25 / 40 | GLM / count / quantile / limited-dependent + fracreg/hurdle/cloglog vs R |
| panel | 13 / 36 | FE/RE/HDFE/GMM core + absorbed-FE GLM (feglm/fepois) + within transformation (demean) + balance filter (balance_panel) covered; dynamic system-GMM and spatial panels open |
| mendelian | 6 / 37 | MR core has analytical recovery + mr(ivw) bit-exact (IVW closed form); cross-package MR-Egger/median open |
| decomposition | 11 / 31 | Oaxaca/DFL/RIF + inequality_index + Gelbach + Das-Gupta + subgroup(Theil) + Kitagawa + Lerman-Yitzhaki source + mediation all bit-exact closed-form; Machado-Mata / RIF-regression open |
| spatial | 5 / 35 | SAR/SEM/SDM ML + SAR-2SLS/SEM-GMM bit-exact vs spatialreg; spatial-panel / GWR / SARAR-GMM open |
| network | 0 / 33 | EMPTY |
| inference | 14 / 26 | cluster/HAC/multiway + MHT + fisher_exact (randomization) + lrtest/icc bit-exact; wild-cluster bootstrap variants open |
| diagnostics | 6 / 25 | Breusch-Pagan + RESET + structural_break/cusum_test/engle_granger (known-truth recovery); rest analytical-feasible |
| dag | 1 / 23 | pc_algorithm/notears/lingam/fci/ges recover known CPDAG/PAG structures (analytical); remaining discovery variants open |
| epi | 14 / 20 | 2x2 measures + kappa/AR + sens/spec + standardization + auc/roc bit-exact (base-R/Mann-Whitney closed form) |
| timeseries | 6 / 20 | VAR/LP/ARIMA + cointegration (engle_granger) + break tests covered; GARCH / Johansen open |
| bayes | 0 / 19 | EMPTY (convergence-diagnostic, not numeric-parity, ceiling) |
| conformal_causal | 2 / 17 | conformal_ite/conformal_fair_ite coverage-guarantee MC (analytical); conformal_synth noisy, open |
| neural_causal | 0 / 16 | EMPTY (frontier) |
| interference | 1 / 16 | cluster_cross_interference DGP recovery + spillover/network_exposure analytical; partial-interference designs open |
| structural | 0 / 12 | front_door/frontdoor (identification recovery) live under causal; simultaneous-eq (three_sls/sureg) open |
| postestimation | 6 / 12 | lincom/test(Wald)/margins/margins_at + contrast/pwcompare (bit-exact after C(var) fix); pwcompare adjust-methods open |
| power | 7 / 12 | rct/two_proportions/logrank/cluster_rct/case_control + mde bit-exact (base-R z-approx); DiD/RD/IV open |
| survival | 5 / 12 | Cox/KM/log-rank bit-exact + Weibull AFT (survreg/aft) aligned, all vs R survival; competing-risks open |
| frontier | 2 / 12 | SFA core covered; panel SFA variants open |
| robustness | 3 / 11 | sensemakr/oster_delta/breakdown_frontier bit-exact closed forms; Rosenbaum/copula bounds open |
| survey | 4 / 7 | svymean/svytotal/svyglm bit-exact (vs R survey, HT/Hajek + linearization SE) + svydesign; calibration/rake open |
| selection / censoring | ~2 | lee_bounds bit-exact + selection_bounds analytical (Lee trimming); heckman/tobit vs R open |
| policy_learning | 2 | policy_value bit-exact (Athey-Wager value) + policy_tree oracle recovery |
| qte | 4 / 15 | ivqreg/beyond_average_late/continuous_iv_late/dist_iv LATE recovery (analytical) |
| target_trial / transport / longitudinal / bartik | pate + transport partial | pate transportability recovery; rest alignable against established packages |
| neural / llm / rl / text / fairness / ope / surrogate / bridge | 0 each | frontier; analytical/simulation ceiling |
Prioritization — where to spend alignment effort¶
Tier 1 — high leverage, clear cross-language sibling, large family.
One module here verifies many functions and closes an EMPTY row.
- spatial (30 gap) — SAR/SEM/SDM ML and SAR-2SLS/SEM-GMM now bit-exact vs
spatialreg (modules 65--66). Remaining leads to verify: spatial panels
(R splm, Stata spxtregress), GWR (GWmodel), and the SARAR GMM /
heteroskedastic-GM estimators (reconcile the joint moment sequence against
spatialreg::gstsls / sphet).
- panel (29 gap) — extend the existing Track A panel module: dynamic
(xtdpdgmm, plm::pgmm beyond xtabond), spatial panels.
- epi (20) — candidate refs: R epiR / survival / metafor, Stata
epitab / st suite (several already have external_parity via NHEFS).
- survival (11 gap) — R survival (KM/AFT), cmprsk (Fine-Gray), Stata
stcox / streg / stcrreg.
- timeseries (17 gap) — R vars / urca / rugarch, Stata var /
vec / arch.
Tier 2 — alignable, partial families to finish.
- decomposition (27 gap) — extend the _common.py-backed family
(Gelbach, Das-Gupta, inequality) against R oaxaca / dineq / ddecompose.
- inference (23 gap) — bootstrap / wild-cluster / MHT vs R fwildclusterboot,
sandwich, multcomp (CR2/CR3/multiway already bit-exact).
- mendelian (31 gap) — R MendelianRandomization / TwoSampleMR
(MR core already has analytical recovery).
- frontier / structural / transport / survey / bartik — established R/Stata
siblings exist for most; verify per-method.
Tier 3 — frontier methods, analytical/simulation is the honest ceiling.
neural_causal, conformal_causal, causal_llm, causal_rl, causal_text,
fairness, ope, surrogate, bridge, most of bayes (where the right
evidence is convergence diagnostics + Monte-Carlo coverage, not bit-for-bit
parity). For these the target is a documented analytical-only record
(DGP recovery / closed-form / MC calibration), not a cross-package grade —
and that is the honest top grade, stated as such.
The closing loop¶
- Pick a Tier-1 family; add a Track A module (
tests/r_parity/NN_*.{py,R}+ Stata.do) or areference_parityfrozen fixture. - Regenerate:
python scripts/build_parity_index.py— the new function(s) flip fromunverifiedto a graded record automatically; the matrix, summary, anddocs/parity.mdupdate; the drift gate stays green. sp.parity_summary()'s estimator-verified fraction is the metric of record; report it per release inCHANGELOG.md.