Evidence inventory: entry x configuration x output¶
Generated by python scripts/build_evidence_inventory.py from
statspai.validation_scope.SCOPES. Do not edit by hand; --check is the drift gate.
Each estimator below has a configuration grid: one value per dimension. The table counts the cells in which an output has reference evidence, meaning a known-truth (T1) or same-byte cross-language (T2) artifact ran that configuration and compared that output. A function-level tier says nothing about which cells those are. For one fitted result, call sp.validation_scope(result).
Functions without a scope map are not listed. That is not a claim that they lack evidence: they carry function-level evidence only (sp.parity_status).
Cells with reference evidence, by output¶
| Function | Cells | estimate | se | vcov | joint_test | diagnostic | interval | Fully covered |
|---|---|---|---|---|---|---|---|---|
aipw |
512 | 32 / 512 | 17 / 512 | -- | -- | -- | -- | 17 / 512 |
callaway_santanna |
69120 | 1380 / 69120 | 686 / 69120 | 1 / 69120 | 257 / 69120 | -- | -- | 686 / 69120 |
causal_forest |
96 | 0 / 96 | 0 / 96 | -- | -- | -- | -- | 0 / 96 |
did_2x2 |
80 | 20 / 80 | 20 / 80 | -- | -- | -- | 3 / 80 | 20 / 80 |
did_imputation |
240 | 36 / 240 | 13 / 240 | 1 / 240 | -- | -- | -- | 12 / 240 |
did_multiplegt_dyn |
18432 | 136 / 18432 | 37 / 18432 | 26 / 18432 | 36 / 18432 | -- | -- | 37 / 18432 |
dml |
9120 | 33 / 9120 | 30 / 9120 | -- | -- | -- | -- | 30 / 9120 |
ebalance |
16 | 10 / 16 | 3 / 16 | -- | -- | -- | -- | 3 / 16 |
etwfe |
128 | 16 / 128 | 16 / 128 | 3 / 128 | -- | -- | -- | 16 / 128 |
etwfe_glm |
2880 | 51 / 2880 | 36 / 2880 | -- | -- | -- | -- | 36 / 2880 |
event_study |
1536 | 138 / 1536 | 138 / 1536 | 3 / 1536 | -- | -- | 3 / 1536 | 138 / 1536 |
fast.feols |
12 | 12 / 12 | 6 / 12 | -- | -- | -- | -- | 6 / 12 |
feols |
144 | 72 / 144 | 29 / 144 | -- | -- | -- | -- | 27 / 144 |
g_computation |
48 | 16 / 48 | 5 / 48 | -- | -- | -- | -- | 5 / 48 |
gardner_did |
64 | 24 / 64 | 7 / 64 | 1 / 64 | -- | -- | -- | 7 / 64 |
glm |
320 | 144 / 320 | 32 / 320 | -- | -- | -- | -- | 32 / 320 |
heckman |
12 | 9 / 12 | 6 / 12 | -- | -- | -- | -- | 6 / 12 |
honest_did |
116640 | -- | -- | -- | -- | 159 / 116640 | -- | 159 / 116640 |
ipw |
480 | 28 / 480 | 12 / 480 | -- | -- | -- | -- | 12 / 480 |
iv |
448 | 224 / 448 | 63 / 448 | -- | 3 / 448 | 3 / 448 | -- | 63 / 448 |
ivreg |
448 | 224 / 448 | 63 / 448 | -- | 3 / 448 | 3 / 448 | -- | 63 / 448 |
logit |
20 | 10 / 20 | 10 / 20 | -- | 3 / 20 | -- | -- | 10 / 20 |
nbreg |
12 | 9 / 12 | 7 / 12 | -- | -- | -- | -- | 7 / 12 |
nnmatch |
1920 | 17 / 1920 | 17 / 1920 | -- | -- | -- | -- | 17 / 1920 |
panel |
144 | 99 / 144 | 46 / 144 | -- | 5 / 144 | -- | -- | 46 / 144 |
poisson |
20 | 15 / 20 | 12 / 20 | -- | 2 / 20 | -- | -- | 12 / 20 |
ppmlhdfe |
72 | 54 / 72 | 9 / 72 | -- | -- | -- | -- | 9 / 72 |
probit |
20 | 10 / 20 | 6 / 20 | -- | 2 / 20 | -- | -- | 6 / 20 |
psm |
3200 | 100 / 3200 | 29 / 3200 | -- | -- | -- | -- | 29 / 3200 |
qreg |
14 | 14 / 14 | 9 / 14 | 2 / 14 | -- | -- | -- | 9 / 14 |
rddensity |
2 | 1 / 2 | 1 / 2 | -- | -- | 1 / 2 | -- | 1 / 2 |
rdrobust |
25920 | 159 / 25920 | 159 / 25920 | -- | -- | -- | -- | 159 / 25920 |
regress |
28 | 28 / 28 | 26 / 28 | -- | 5 / 28 | 1 / 28 | -- | 26 / 28 |
sdid |
288 | 60 / 288 | 27 / 288 | -- | -- | -- | -- | 27 / 288 |
sun_abraham |
108 | 63 / 108 | 63 / 108 | 6 / 108 | -- | -- | 4 / 108 | 63 / 108 |
synth |
12 | 3 / 12 | 1 / 12 | -- | -- | -- | -- | 3 / 12 |
tmle |
672 | 41 / 672 | 37 / 672 | -- | -- | -- | -- | 37 / 672 |
tobit |
36 | 18 / 36 | 13 / 36 | -- | -- | -- | -- | 13 / 36 |
xtabond |
88704 | 74 / 88704 | 42 / 88704 | -- | -- | 20 / 88704 | -- | 42 / 88704 |
xtdpdsys |
72576 | 30 / 72576 | 18 / 72576 | -- | -- | 8 / 72576 | -- | 18 / 72576 |
-- means no artifact compares that output for the function at all. Fully covered counts cells whose primary outputs all have reference evidence.
Other evidence statuses¶
Cells whose strongest evidence for an output is not a reference row. These are reported at their own grade and are not parity.
| Function | Output | seed_equivalence (T3) | stochastic_screen (S) | coverage_simulation (B) | disclosure (T4) | not_covered |
|---|---|---|---|---|---|---|
aipw |
estimate | 0 | 0 | 0 | 0 | 480 |
aipw |
se | 0 | 0 | 0 | 0 | 495 |
callaway_santanna |
estimate | 0 | 0 | 0 | 0 | 67740 |
callaway_santanna |
se | 0 | 4 | 0 | 0 | 68430 |
callaway_santanna |
coverage | 0 | 0 | 1 | 0 | 69119 |
callaway_santanna |
vcov | 0 | 0 | 0 | 0 | 69119 |
callaway_santanna |
joint_test | 0 | 0 | 0 | 0 | 68863 |
causal_forest |
estimate | 3 | 0 | 0 | 0 | 93 |
causal_forest |
se | 0 | 1 | 0 | 0 | 95 |
causal_forest |
coverage | 0 | 0 | 1 | 0 | 95 |
did_2x2 |
estimate | 0 | 0 | 0 | 0 | 60 |
did_2x2 |
se | 0 | 0 | 0 | 0 | 60 |
did_2x2 |
interval | 0 | 0 | 0 | 0 | 77 |
did_imputation |
estimate | 0 | 0 | 0 | 3 | 201 |
did_imputation |
se | 0 | 0 | 0 | 0 | 227 |
did_imputation |
vcov | 0 | 0 | 0 | 0 | 239 |
did_multiplegt_dyn |
estimate | 0 | 0 | 0 | 0 | 18296 |
did_multiplegt_dyn |
se | 0 | 1 | 0 | 0 | 18394 |
did_multiplegt_dyn |
vcov | 0 | 0 | 0 | 0 | 18406 |
did_multiplegt_dyn |
joint_test | 0 | 0 | 0 | 0 | 18396 |
dml |
estimate | 0 | 0 | 0 | 0 | 9087 |
dml |
se | 0 | 0 | 0 | 3 | 9087 |
dml |
coverage | 0 | 0 | 2 | 0 | 9118 |
ebalance |
estimate | 0 | 0 | 0 | 0 | 6 |
ebalance |
se | 0 | 0 | 0 | 3 | 10 |
etwfe |
estimate | 0 | 0 | 0 | 0 | 112 |
etwfe |
se | 0 | 0 | 0 | 0 | 112 |
etwfe |
vcov | 0 | 0 | 0 | 0 | 125 |
etwfe_glm |
estimate | 0 | 0 | 0 | 0 | 2829 |
etwfe_glm |
se | 0 | 0 | 0 | 4 | 2840 |
event_study |
estimate | 0 | 0 | 0 | 0 | 1398 |
event_study |
se | 0 | 0 | 0 | 0 | 1398 |
event_study |
vcov | 0 | 0 | 0 | 0 | 1533 |
event_study |
interval | 0 | 0 | 0 | 0 | 1533 |
fast.feols |
estimate | 0 | 0 | 0 | 0 | 0 |
fast.feols |
se | 0 | 0 | 0 | 0 | 6 |
fast.feols |
coverage | 0 | 0 | 1 | 0 | 11 |
feols |
estimate | 0 | 0 | 0 | 0 | 72 |
feols |
se | 0 | 0 | 0 | 0 | 115 |
g_computation |
estimate | 0 | 0 | 0 | 0 | 32 |
g_computation |
se | 0 | 0 | 0 | 0 | 43 |
gardner_did |
estimate | 0 | 0 | 0 | 0 | 40 |
gardner_did |
se | 0 | 0 | 0 | 0 | 57 |
gardner_did |
vcov | 0 | 0 | 0 | 0 | 63 |
glm |
estimate | 0 | 0 | 0 | 0 | 176 |
glm |
se | 0 | 0 | 0 | 0 | 288 |
heckman |
estimate | 0 | 0 | 0 | 0 | 3 |
heckman |
se | 0 | 0 | 0 | 0 | 6 |
honest_did |
diagnostic | 0 | 30 | 0 | 105 | 116346 |
ipw |
estimate | 0 | 0 | 0 | 0 | 452 |
ipw |
se | 0 | 0 | 0 | 0 | 468 |
iv |
estimate | 0 | 0 | 0 | 0 | 224 |
iv |
se | 0 | 0 | 0 | 7 | 378 |
iv |
coverage | 0 | 0 | 1 | 0 | 447 |
iv |
diagnostic | 0 | 0 | 0 | 0 | 445 |
iv |
joint_test | 0 | 0 | 0 | 0 | 445 |
ivreg |
estimate | 0 | 0 | 0 | 0 | 224 |
ivreg |
se | 0 | 0 | 0 | 7 | 378 |
ivreg |
coverage | 0 | 0 | 1 | 0 | 447 |
ivreg |
diagnostic | 0 | 0 | 0 | 0 | 445 |
ivreg |
joint_test | 0 | 0 | 0 | 0 | 445 |
logit |
estimate | 0 | 0 | 0 | 0 | 10 |
logit |
se | 0 | 0 | 0 | 0 | 10 |
logit |
joint_test | 0 | 0 | 0 | 0 | 17 |
nbreg |
estimate | 0 | 0 | 0 | 0 | 3 |
nbreg |
se | 0 | 0 | 0 | 0 | 5 |
nnmatch |
estimate | 0 | 0 | 0 | 0 | 1903 |
nnmatch |
se | 0 | 0 | 0 | 0 | 1903 |
panel |
estimate | 0 | 0 | 0 | 0 | 45 |
panel |
se | 0 | 0 | 0 | 0 | 98 |
panel |
joint_test | 0 | 0 | 0 | 1 | 138 |
poisson |
estimate | 0 | 0 | 0 | 0 | 5 |
poisson |
se | 0 | 0 | 0 | 0 | 8 |
poisson |
joint_test | 0 | 0 | 0 | 0 | 18 |
ppmlhdfe |
estimate | 0 | 0 | 0 | 0 | 18 |
ppmlhdfe |
se | 0 | 0 | 0 | 0 | 63 |
probit |
estimate | 0 | 0 | 0 | 0 | 10 |
probit |
se | 0 | 0 | 0 | 4 | 10 |
probit |
joint_test | 0 | 0 | 0 | 0 | 18 |
psm |
estimate | 0 | 0 | 0 | 0 | 3100 |
psm |
se | 0 | 0 | 0 | 2 | 3169 |
qreg |
estimate | 0 | 0 | 0 | 0 | 0 |
qreg |
se | 0 | 0 | 0 | 0 | 5 |
qreg |
vcov | 0 | 0 | 0 | 0 | 12 |
rddensity |
estimate | 0 | 0 | 0 | 0 | 1 |
rddensity |
se | 0 | 0 | 0 | 0 | 1 |
rddensity |
diagnostic | 0 | 0 | 0 | 0 | 1 |
rdrobust |
estimate | 0 | 0 | 0 | 0 | 25761 |
rdrobust |
se | 0 | 0 | 0 | 0 | 25761 |
rdrobust |
coverage | 0 | 0 | 1 | 0 | 25919 |
regress |
estimate | 0 | 0 | 0 | 0 | 0 |
regress |
se | 0 | 0 | 0 | 0 | 2 |
regress |
coverage | 0 | 0 | 1 | 0 | 27 |
regress |
diagnostic | 0 | 0 | 0 | 0 | 27 |
regress |
joint_test | 0 | 0 | 0 | 0 | 23 |
sdid |
estimate | 0 | 0 | 0 | 0 | 228 |
sdid |
se | 0 | 11 | 0 | 0 | 250 |
sdid |
coverage | 0 | 0 | 1 | 0 | 287 |
sun_abraham |
estimate | 0 | 0 | 0 | 0 | 45 |
sun_abraham |
se | 0 | 0 | 0 | 0 | 45 |
sun_abraham |
coverage | 0 | 0 | 1 | 0 | 107 |
sun_abraham |
vcov | 0 | 0 | 0 | 0 | 102 |
sun_abraham |
interval | 0 | 0 | 0 | 0 | 104 |
synth |
estimate | 0 | 0 | 0 | 1 | 8 |
synth |
se | 0 | 0 | 0 | 0 | 11 |
tmle |
estimate | 0 | 0 | 0 | 0 | 631 |
tmle |
se | 0 | 0 | 0 | 2 | 633 |
tobit |
estimate | 0 | 0 | 0 | 0 | 18 |
tobit |
se | 0 | 0 | 0 | 0 | 23 |
xtabond |
estimate | 0 | 0 | 0 | 0 | 88630 |
xtabond |
se | 0 | 0 | 0 | 0 | 88662 |
xtabond |
diagnostic | 0 | 0 | 0 | 0 | 88684 |
xtdpdsys |
estimate | 0 | 0 | 0 | 0 | 72546 |
xtdpdsys |
se | 0 | 0 | 0 | 0 | 72558 |
xtdpdsys |
diagnostic | 0 | 0 | 0 | 0 | 72568 |
Artifacts per function¶
aipw¶
Dimensions: estimand in {ate, att}; cross_fit in {true, false}; se_method in {influence, sandwich}; outcome_model in {linear, logit, probit, poisson}; propensity in {logit, known}; trim in {inactive, binding}; weights in {none, set}; cluster in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | estimand=ate; cross_fit=false; se_method=sandwich; outcome_model=linear; propensity=logit; trim=inactive; weights=none/set; cluster=none/set | tests/reference_parity/test_teffects_design_stata_parity.py |
sp.aipw(...) |
| T2 | estimate, se | estimand=ate; cross_fit=false; se_method=sandwich; outcome_model=logit/poisson/probit; propensity=logit; trim=inactive; weights=none/set; cluster=none | tests/reference_parity/test_aipw_outcome_models_stata_parity.py |
sp.aipw(...) |
| T2 | estimate, se | estimand=ate; cross_fit=false; se_method=sandwich; outcome_model=logit/poisson/probit; propensity=logit; trim=inactive; weights=none; cluster=set | tests/reference_parity/test_aipw_outcome_models_stata_parity.py |
sp.aipw(...) |
| T2 | estimate, se | estimand=ate; cross_fit=false; se_method=influence; outcome_model=linear; propensity=logit; trim=inactive; weights=none; cluster=none | tests/reference_parity/test_teffects_R_parity.py |
sp.aipw(...) |
| T1 | estimate, se | estimand=att; cross_fit=false; se_method=influence; outcome_model=linear; propensity=logit; trim=inactive; weights=none; cluster=none | tests/reference_parity/test_teffects_R_parity.py |
sp.aipw(...) |
| T1 | estimate, se | estimand=ate/att; cross_fit=true; se_method=influence; outcome_model=linear; propensity=logit; trim=inactive; weights=none; cluster=none | tests/reference_parity/test_aipw_crossfit_identity.py |
sp.aipw(...) |
| T2 | estimate, se | estimand=ate; cross_fit=false; se_method=influence; outcome_model=linear; propensity=logit; trim=inactive; weights=none; cluster=none | tests/reference_parity/test_yuksel_aydede_causal_ml_parity.py |
sp.aipw(...) |
se_method is ignored for estimate: the point estimate is computed before, and independently of, the variance estimator
callaway_santanna¶
Dimensions: sample in {panel, unbalanced_panel, rcs, unbalanced_pair}; estimator in {dr, drimp, reg, ipw, ipw_abadie}; control_group in {nevertreated, notyettreated}; notyet_cutoff in {period, asinr, cohort}; weights in {none, weighted}; covariates in {none, set}; inference in {analytic, bootstrap}; base_period in {universal, varying}; anticipation in {0, >0}; clustering in {none, set}; parity in {none, r, stata}; variance_convention in {na, delta, reference}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | sample=panel; estimator=reg; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/r_parity/04_csdid.py |
sp.callaway_santanna(estimator='reg') + sp.aggte(bstrap=False) |
| T2 | estimate, se | sample=panel; estimator=dr/ipw/reg; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none/weighted; covariates=none/set; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_weighted_parity.py |
sp.callaway_santanna(...) |
| T2 | estimate, se | sample=panel; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=varying; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_aggte_mpdta_parity.py |
sp.aggte(cs_result, type=agg_type, bstrap=False) |
| T2 | vcov | sample=panel; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_aggte_vcov_r_parity.py |
sp.aggte(type='dynamic') |
| T2 | estimate, se | sample=panel; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal/varying; anticipation=0/>0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_gaps_parity.py |
sp.callaway_santanna(panel, ...) |
| T2 | estimate, se | sample=unbalanced_panel; estimator=dr/ipw/reg; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none/set; inference=analytic; base_period=varying; anticipation=0; clustering=none; parity=none; variance_convention=na/reference | tests/reference_parity/test_cs_gaps_parity.py |
sp.callaway_santanna(unbalanced, ...) |
| T2 | estimate, se | sample=panel/rcs; estimator=dr/reg; control_group=notyettreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal/varying; anticipation=0/>0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_no_never_unbalanced_parity.py |
sp.callaway_santanna(df, **kw) |
| T2 | estimate, se | sample=unbalanced_panel; estimator=dr/reg; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=varying; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_no_never_unbalanced_parity.py |
sp.callaway_santanna(df, **kw) |
| T2 | estimate, se | sample=panel/rcs; estimator=dr; control_group=notyettreated; notyet_cutoff=period; weights=none; covariates=none/set; inference=analytic; base_period=universal/varying; anticipation=0/>0; clustering=none; parity=none; variance_convention=na/reference | tests/reference_parity/test_cs_notyet_cutoff_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=rcs; estimator=dr/ipw/reg; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=varying; anticipation=0; clustering=none; parity=none; variance_convention=na/reference | tests/reference_parity/test_cs_rcs_parity.py |
sp.callaway_santanna( |
| T2 | estimate | sample=rcs; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=varying; anticipation=0; clustering=none; parity=none; variance_convention=delta | tests/reference_parity/test_cs_rcs_parity.py |
sp.callaway_santanna(panel=False, estimator='dr', x=...) |
| T2 | estimate | sample=rcs; estimator=reg; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_rcs_aggregation_conventions.py |
sp.callaway_santanna( |
| T2 | estimate | sample=panel; estimator=reg; control_group=notyettreated; notyet_cutoff=asinr/cohort/period; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_csdid_conventions_stata_parity.py |
sp.callaway_santanna( |
| T2 | estimate | sample=panel; estimator=ipw/ipw_abadie; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_csdid_conventions_stata_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel; estimator=reg; control_group=notyettreated; notyet_cutoff=asinr/cohort; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_csdid_options_stata_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel; estimator=ipw_abadie; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_csdid_options_stata_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=unbalanced_pair; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_csdid_options_stata_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=unbalanced_pair; estimator=reg; control_group=notyettreated; notyet_cutoff=cohort; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_csdid_options_stata_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel/rcs; estimator=drimp/ipw_abadie; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_options_R_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel; estimator=drimp; control_group=notyettreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=varying; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_options_R_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel; estimator=ipw; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=universal; anticipation=0; clustering=set; parity=none; variance_convention=na | tests/reference_parity/test_cs_options_R_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=rcs; estimator=ipw; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_options_R_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=weighted; covariates=set; inference=analytic; base_period=universal; anticipation=>0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_options_R_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel; estimator=reg; control_group=notyettreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=varying; anticipation=>0; clustering=set; parity=none; variance_convention=na | tests/reference_parity/test_cs_options_R_parity.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel/rcs; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=set; parity=none; variance_convention=na | tests/reference_parity/test_cs_rc_cluster_csdid_parity.py |
sp.callaway_santanna(clustervars=...) |
| T2 | estimate, se | sample=rcs; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=weighted; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none/set; parity=none; variance_convention=na | tests/reference_parity/test_cs_rc_weighted_aggte_did_parity.py |
sp.callaway_santanna(panel=False, weights=...) + sp.aggte |
| T2 | estimate, se | sample=panel; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_cs_balance_full_did_parity.py |
sp.callaway_santanna(balance='full') |
| T2 | estimate, se | sample=panel/unbalanced_panel; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal/varying; anticipation=0; clustering=set; parity=none; variance_convention=na | tests/reference_parity/test_cs_cluster_analytic_parity.py |
sp.callaway_santanna(clustervars=...) |
| T2 | estimate, se | sample=panel; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=universal/varying; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_stata_did_commands_parity.py |
sp.callaway_santanna( |
| T4 | estimate, se | sample=panel; estimator=dr/drimp; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none; covariates=set; inference=analytic; base_period=universal/varying; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/reference_parity/test_stata_did_commands_parity.py |
sp.stata( |
| T2 | estimate, se, joint_test | sample=panel; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none; covariates=none/set; inference=analytic; base_period=varying; anticipation=0; clustering=none/set; parity=r; variance_convention=na | tests/reference_parity/test_cs_parity_switch.py |
sp.callaway_santanna( |
| T2 | estimate, se, joint_test | sample=panel; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=varying; anticipation=>0; clustering=none; parity=r; variance_convention=na | tests/reference_parity/test_cs_parity_switch.py |
sp.callaway_santanna( |
| T2 | estimate, se, joint_test | sample=panel; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=cohort/period; weights=none; covariates=none/set; inference=analytic; base_period=varying; anticipation=0; clustering=none/set; parity=stata; variance_convention=na | tests/reference_parity/test_cs_parity_switch.py |
sp.callaway_santanna( |
| T2 | estimate, se | sample=panel; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=bootstrap; base_period=varying; anticipation=0; clustering=none; parity=stata; variance_convention=na | tests/reference_parity/test_cs_parity_switch.py |
sp.callaway_santanna( |
| T2 | estimate, se, joint_test | sample=panel/rcs/unbalanced_panel; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=period; weights=none/weighted; covariates=none/set; inference=analytic; base_period=varying; anticipation=0; clustering=none/set; parity=r; variance_convention=na/reference | tests/reference_parity/test_cs_parity_rc_unbal.py |
sp.callaway_santanna( |
| T2 | estimate, se, joint_test | sample=rcs/unbalanced_pair; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=cohort/period; weights=none/weighted; covariates=none/set; inference=analytic; base_period=varying; anticipation=0; clustering=none/set; parity=stata; variance_convention=na/reference | tests/reference_parity/test_cs_parity_rc_unbal.py |
sp.callaway_santanna( |
| T2 | estimate, se, joint_test | sample=panel; estimator=dr; control_group=nevertreated/notyettreated; notyet_cutoff=cohort/period; weights=weighted; covariates=none/set; inference=analytic; base_period=varying; anticipation=0; clustering=none/set; parity=stata; variance_convention=na | tests/reference_parity/test_cs_parity_rc_unbal.py |
sp.callaway_santanna( |
| S | se | sample=panel; estimator=dr; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=bootstrap; base_period=universal; anticipation=0; clustering=none/set; parity=none; variance_convention=na | tests/reference_parity/test_cs_inference_parity.py |
sp.callaway_santanna(bstrap=True) |
| B | coverage | sample=panel; estimator=reg; control_group=nevertreated; notyet_cutoff=period; weights=none; covariates=none; inference=analytic; base_period=universal; anticipation=0; clustering=none; parity=none; variance_convention=na | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.callaway_santanna(estimator='reg') |
inference is ignored for estimate: the multiplier bootstrap resamples influence functions for SEs and bands; the ATT(g,t) and their aggregates are unchanged
base_period is ignored for estimate, se: the headline is the simple aggregate of the post-treatment cells, whose base period is g - 1 - anticipation under both schemes; only the pre-treatment placebos (and so the event-study covariance) differ (asserted equal in tests/test_validation_scope.py)
causal_forest¶
Dimensions: treatment in {binary, continuous}; trees in {100, 200, 300, 500, 1000, 2000, 4000, 8000}; tuning in {grf_defaults, custom}; design in {iid, clustered, fixed_effects}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T3 | estimate | treatment=binary; trees=2000/500/8000; tuning=grf_defaults; design=iid | tests/reference_parity/test_grf_seed_mc_equivalence.py |
sp.causal_forest(...).average_treatment_effect() |
| S | estimate, se | treatment=binary; trees=2000; tuning=grf_defaults; design=iid | tests/r_parity/13_causal_forest.py |
sp.causal_forest(n_estimators=2000) |
| B | coverage | treatment=binary; trees=2000; tuning=grf_defaults; design=iid | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.causal_question(design='causal_forest') |
did_2x2¶
Dimensions: vce in {classical, hc1, cluster, wild, survey}; weights in {none, set}; covariates in {none, set}; crit_dist in {t_resid, t_cluster, t_design, bootstrap}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vce=hc1; weights=set; covariates=none; crit_dist=t_resid | tests/reference_parity/test_did2x2_ddd_weighted_robust_parity.py |
sp.did_2x2( |
| T2 | estimate, se | vce=survey; weights=none; covariates=none; crit_dist=t_design | tests/reference_parity/test_survey_did_parity.py |
sp.did_2x2( |
| T2 | estimate, se | vce=survey; weights=none; covariates=none; crit_dist=t_design | tests/reference_parity/test_survey_replicate_parity.py |
sp.did_2x2( |
| T2 | estimate, se, interval | vce=cluster; weights=none/set; covariates=none; crit_dist=t_cluster | tests/reference_parity/test_es_crit_parity.py |
sp.did_2x2( |
| T2 | estimate, se, interval | vce=hc1; weights=none; covariates=none; crit_dist=t_resid | tests/reference_parity/test_es_crit_parity.py |
sp.did_2x2( |
crit_dist is ignored for estimate, se: the critical value turns the SE into a p-value and an interval; the ATT and its SE are computed before it is chosen (asserted equal across parity= / crit_dist= in tests/reference_parity/test_es_crit_default.py; crit_dist='t' there is the same fit as parity='stata')
did_imputation¶
Dimensions: fe in {unit_time, time, none, custom}; covariates in {none, controls, time_covariates, unit_covariates, mixed}; vce in {analytic, bootstrap, none}; weights in {none, set}; horizon in {overall, horizons}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate | vce=analytic; weights=none; horizon=overall; fe=unit_time; covariates=none | tests/r_parity/16_bjs.py |
sp.did_imputation() |
| T2 | estimate | vce=analytic; weights=none; horizon=overall; fe=none/time/unit_time; covariates=none | tests/reference_parity/test_bjs_fe_covariates_parity.py |
sp.did_imputation(fe=...) |
| T2 | estimate | vce=analytic; weights=none; horizon=overall; fe=unit_time; covariates=controls/time_covariates | tests/reference_parity/test_bjs_fe_covariates_parity.py |
sp.did_imputation(controls=...|time_covariates=...) |
| T4 | estimate | vce=analytic; weights=none; horizon=overall; fe=unit_time; covariates=unit_covariates | tests/reference_parity/test_bjs_fe_covariates_parity.py |
sp.did_imputation(unit_covariates=...) |
| T2 | se | vce=analytic; weights=none; horizon=overall; fe=none/time/unit_time; covariates=none | tests/reference_parity/test_option_fixture_bindings.py |
sp.did_imputation(fe=...) |
| T2 | se | vce=analytic; weights=none; horizon=overall; fe=unit_time; covariates=controls/time_covariates/unit_covariates | tests/reference_parity/test_option_fixture_bindings.py |
sp.did_imputation(controls=...|time_covariates=...|unit_covariates=...) |
| T2 | estimate, se | fe=unit_time; covariates=none; vce=analytic; weights=none; horizon=horizons | tests/r_parity/84_bjs_pretrends.py |
sp.did_imputation(horizon=[...], pretrend_method='bjs') |
| T2 | vcov | fe=unit_time; covariates=none; vce=analytic; weights=none; horizon=horizons | tests/reference_parity/test_event_study_vcov_Stata_parity.py |
sp.did_imputation(horizon=[...]) |
| T2 | estimate, se | fe=custom; covariates=none; vce=analytic; weights=none; horizon=horizons/overall | tests/reference_parity/test_bjs_options_parity.py |
sp.did_imputation(fe=[...]) |
| T2 | estimate, se | fe=unit_time; covariates=controls/mixed; vce=analytic; weights=none; horizon=overall | tests/reference_parity/test_bjs_options_parity.py |
sp.did_imputation(controls=..., time_covariates=...) |
| T2 | estimate, se | fe=unit_time; covariates=none; vce=analytic; weights=set; horizon=horizons/overall | tests/reference_parity/test_bjs_options_parity.py |
sp.did_imputation(weights=...) |
| T2 | estimate, se | fe=custom; covariates=controls; vce=analytic; weights=set; horizon=overall | tests/reference_parity/test_bjs_options_parity.py |
sp.did_imputation(weights=..., fe=[...], controls=...) |
vce is ignored for estimate: the covariance is computed after the imputation
did_multiplegt_dyn¶
Dimensions: se_method in {analytic, bootstrap}; aggregation in {simple, switchers}; control in {not_yet_treated, never_treated}; switchers in {both, in, out}; same_switchers in {false, true}; controls in {none, set}; trends_nonparam in {none, set}; normalized in {false, true}; weights in {none, set}; cluster in {group, coarser}; treatment in {binary, discrete, continuous}; panel in {balanced, unbalanced}; placebo in {0, >0}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=in; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=out; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=true; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=never_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=set; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=true; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=set; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=coarser; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=set; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=in; same_switchers=false; controls=none; trends_nonparam=set; normalized=true; weights=set; cluster=coarser; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=continuous; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, vcov, joint_test | se_method=analytic; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=unbalanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| S | se | se_method=bootstrap; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_option_values_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_multiplegt_dyn_options_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=in/out; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_multiplegt_dyn_options_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=true; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_multiplegt_dyn_options_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=bootstrap; aggregation=simple/switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/r_parity/78_multiplegt_dyn.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_multiplegt_dyn_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=simple; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_multiplegt_dyn_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=simple; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_options_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=simple; control=not_yet_treated; switchers=both; same_switchers=false; controls=set; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_options_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=simple; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=set; normalized=false; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_options_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=simple; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=true; weights=none; cluster=group; treatment=binary; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_options_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate | se_method=analytic; aggregation=simple; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=continuous; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_options_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=discrete; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=true; weights=none; cluster=group; treatment=discrete; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=true; controls=none; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=discrete; panel=balanced; placebo=0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=set; cluster=coarser; treatment=discrete; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=set; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=discrete; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=set; trends_nonparam=none; normalized=false; weights=set; cluster=coarser; treatment=discrete; panel=balanced; placebo=>0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=set; trends_nonparam=none; normalized=true; weights=none; cluster=group; treatment=discrete; panel=balanced; placebo=0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=set; trends_nonparam=set; normalized=false; weights=none; cluster=group; treatment=discrete; panel=balanced; placebo=0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=in; same_switchers=false; controls=set; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=discrete; panel=balanced; placebo=0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se, joint_test | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=set; trends_nonparam=none; normalized=false; weights=none; cluster=group; treatment=binary; panel=unbalanced; placebo=>0 | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.did_multiplegt_dyn() |
| T2 | estimate, se | se_method=analytic; aggregation=switchers; control=not_yet_treated; switchers=both; same_switchers=false; controls=none; trends_nonparam=none; normalized=false; weights=none/set; cluster=coarser/group; treatment=binary; panel=balanced; placebo=>0 | tests/test_did_multiplegt_dyn_castle_reference.py |
sp.did_multiplegt_dyn() |
se_method is ignored for estimate: the effects are computed before, and independently of, the variance; the bootstrap resamples afterwards
cluster is ignored for estimate: the cluster enters the variance only
dml¶
Dimensions: model in {plr, irm, pliv, iivm}; score in {partialling out, iv-type, ate, atte, late}; learners in {linear, default, other}; n_folds in {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; n_rep in {1, >1}; ipw in {n/a, trim0.01, trim1e-12, other}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | model=plr; score=partialling out; learners=linear; n_folds=5; n_rep=1; ipw=n/a | tests/r_parity/08_dml.py |
sp.dml(model='plr') |
| T2 | estimate, se | model=irm; score=ate; learners=linear; n_folds=5; n_rep=1; ipw=trim1e-12 | tests/r_parity/71_dml_family.py |
sp.dml(model='irm') |
| T2 | estimate, se | model=pliv; score=partialling out; learners=linear; n_folds=5; n_rep=1; ipw=n/a | tests/r_parity/71_dml_family.py |
sp.dml(model='pliv') |
| T2 | estimate, se | model=iivm; score=late; learners=linear; n_folds=5; n_rep=1; ipw=trim1e-12 | tests/r_parity/71_dml_family.py |
sp.dml(model='iivm') |
| T2 | estimate, se | model=plr; score=partialling out; learners=other; n_folds=4; n_rep=1; ipw=n/a | tests/external_parity/test_dml_classifier_nuisance_and_irm_sensitivity.py |
sp.dml(model='plr') |
| T2 | estimate, se | model=irm; score=ate/atte; learners=linear; n_folds=4; n_rep=1; ipw=trim0.01 | tests/external_parity/test_dml_classifier_nuisance_and_irm_sensitivity.py |
sp.dml(model='irm') |
| B | coverage | model=plr; score=partialling out; learners=default; n_folds=5; n_rep=1; ipw=n/a | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.dml(model='plr', n_folds=5) |
| B | coverage | model=irm; score=ate; learners=default; n_folds=5; n_rep=1; ipw=trim0.01 | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.causal_question(design='dml') |
| T2 | estimate, se | model=plr; score=iv-type; learners=linear; n_folds=5; n_rep=1; ipw=n/a | tests/test_dml_ivtype_reference.py |
sp.dml(model='plr', score='IV-type') |
| T2 | estimate, se | model=plr; score=iv-type; learners=other; n_folds=5; n_rep=1; ipw=n/a | tests/test_dml_ivtype_reference.py |
sp.dml(model='plr', score='IV-type') |
| T2 | estimate, se | model=irm; score=ate/atte; learners=linear; n_folds=5; n_rep=1; ipw=trim0.01 | tests/test_dml_ivtype_reference.py |
sp.dml(model='irm') |
| T2 | estimate, se | model=plr; score=iv-type/partialling out; learners=linear; n_folds=10/2/3; n_rep=1; ipw=n/a | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='plr') |
| T2 | estimate, se | model=irm; score=ate; learners=linear; n_folds=10/2/3; n_rep=1; ipw=trim0.01 | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='irm') |
| T2 | estimate, se | model=irm; score=atte; learners=linear; n_folds=3; n_rep=1; ipw=trim0.01 | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='irm') |
| T2 | estimate, se | model=irm; score=ate/atte; learners=linear; n_folds=3; n_rep=1; ipw=other | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='irm') |
| T2 | estimate, se | model=pliv; score=partialling out; learners=linear; n_folds=10/2/3; n_rep=1; ipw=n/a | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='pliv') |
| T2 | estimate, se | model=iivm; score=late; learners=linear; n_folds=10/2/3; n_rep=1; ipw=trim0.01 | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='iivm') |
| T2 | estimate, se | model=iivm; score=late; learners=linear; n_folds=3; n_rep=1; ipw=other | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='iivm') |
| T2 | estimate | model=plr; score=iv-type/partialling out; learners=linear; n_folds=5; n_rep=>1; ipw=n/a | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='plr', n_rep=3) |
| T2 | estimate | model=irm; score=ate; learners=linear; n_folds=5; n_rep=>1; ipw=trim0.01 | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='irm', n_rep=3) |
| T4 | se | model=plr; score=iv-type/partialling out; learners=linear; n_folds=5; n_rep=>1; ipw=n/a | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='plr', n_rep=3) |
| T4 | se | model=irm; score=ate; learners=linear; n_folds=5; n_rep=>1; ipw=trim0.01 | tests/reference_parity/test_dml_options_doubleml_parity.py |
sp.dml(df, model='irm', n_rep=3) |
ebalance¶
Dimensions: moments in {1, 2, 3, mixed}; dof_adjust in {true, false}; vce in {mestimation, naive}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | moments=1/2/3; dof_adjust=false; vce=mestimation | tests/reference_parity/test_ebalance_weightit_parity.py |
sp.ebalance(...) |
| T4 | se | moments=1/2/3; dof_adjust=false; vce=naive | tests/reference_parity/test_ebalance_weightit_parity.py |
sp.ebalance(...) |
| T2 | estimate | moments=1/mixed; dof_adjust=true; vce=mestimation | tests/reference_parity/test_the_effect_stata_parity.py |
sp.ebalance(...) |
vce is ignored for estimate: the point estimate is computed before, and independently of, the variance estimator
etwfe¶
Dimensions: family in {linear, glm}; panel in {true, false}; cgroup in {notyet, nevertreated}; controls in {none, set}; xvar in {none, set}; weights in {none, set}; agg_weights in {estimation, unit}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=false; cgroup=notyet | tests/r_parity/17_etwfe.py |
sp.etwfe(panel=False) |
| T2 | estimate | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=true; cgroup=nevertreated | tests/r_parity/17_etwfe.py |
sp.etwfe(cgroup='nevertreated') |
| T4 | se | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=false; cgroup=notyet | tests/r_parity/17_etwfe.py |
sp.etwfe(panel=False) |
| T4 | se | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=true; cgroup=nevertreated | tests/r_parity/17_etwfe.py |
sp.etwfe(cgroup='nevertreated') |
| T2 | vcov | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=false; cgroup=notyet | tests/reference_parity/test_event_study_vcov_R_parity.py |
sp.etwfe(panel=False) |
| T2 | vcov | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=true; cgroup=nevertreated | tests/reference_parity/test_event_study_vcov_R_parity.py |
sp.etwfe(cgroup='nevertreated') |
| T2 | estimate, vcov | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=true; cgroup=notyet | tests/reference_parity/test_validation_entry_points.py |
sp.etwfe() |
| T4 | se | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=true; cgroup=notyet | tests/reference_parity/test_validation_entry_points.py |
sp.etwfe() |
| T2 | estimate | family=linear; panel=true; cgroup=nevertreated/notyet; controls=none; xvar=none; weights=set; agg_weights=estimation | tests/test_etwfe_weights_reference.py |
sp.etwfe(panel, ..., weights=...) |
| T4 | se | family=linear; panel=true; cgroup=nevertreated/notyet; controls=none; xvar=none; weights=set; agg_weights=estimation | tests/test_etwfe_weights_reference.py |
sp.etwfe(panel, ..., weights=...) |
| T2 | estimate | family=linear; panel=true; cgroup=nevertreated/notyet; controls=none; xvar=none; weights=set; agg_weights=unit | tests/test_etwfe_weights_reference.py |
sp.etwfe(panel, ..., weights=...) |
| T4 | se | family=linear; panel=true; cgroup=nevertreated/notyet; controls=none; xvar=none; weights=set; agg_weights=unit | tests/test_etwfe_weights_reference.py |
sp.etwfe(panel, ..., weights=...) |
| T2 | estimate, se | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=true; cgroup=nevertreated/notyet | tests/test_etwfe_emfx_reference.py |
sp.etwfe(castle, ...) |
| T2 | estimate, se | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation/unit; panel=true; cgroup=nevertreated/notyet | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate, se | family=linear; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=false; cgroup=notyet | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate, se | family=linear; controls=none; xvar=none; weights=set; agg_weights=estimation/unit; panel=true; cgroup=nevertreated/notyet | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate, se | family=linear; controls=none; xvar=set; weights=none; agg_weights=estimation; panel=true; cgroup=nevertreated/notyet | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate, se | family=linear; controls=set; xvar=none; weights=none; agg_weights=estimation; panel=true; cgroup=nevertreated/notyet | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate, se | family=glm; controls=none; xvar=none; weights=none; agg_weights=estimation; panel=true; cgroup=nevertreated/notyet | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate, se | family=glm; controls=none; xvar=set; weights=none; agg_weights=estimation; panel=true; cgroup=notyet | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
etwfe_glm¶
Dimensions: family in {poisson, logit, gaussian}; cgroup in {notyet, nevertreated}; fe in {cohort, unit}; hettype in {timecohort, time, cohort, event, twfe}; scale in {response, link}; response_se in {profile, margins, unconditional}; controls in {none, set}; xvar in {none, set}; weights in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate | family=logit/poisson; cgroup=notyet; fe=cohort; hettype=timecohort; scale=response; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_glm_parity.py |
sp.etwfe(family='poisson'|'logit') |
| T4 | se | family=logit/poisson; cgroup=notyet; fe=cohort; hettype=timecohort; scale=response; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_glm_parity.py |
sp.etwfe(family='poisson'|'logit') |
| T2 | estimate, se | family=logit/poisson; cgroup=nevertreated/notyet; fe=cohort; hettype=timecohort; scale=link/response; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate, se | family=poisson; cgroup=notyet; fe=cohort; hettype=timecohort; scale=link/response; response_se=profile; controls=none; xvar=set; weights=none | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate | family=logit/poisson; cgroup=nevertreated/notyet; fe=cohort; hettype=timecohort; scale=response; response_se=unconditional; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T4 | se | family=logit/poisson; cgroup=nevertreated/notyet; fe=cohort; hettype=timecohort; scale=response; response_se=unconditional; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_options_parity.py |
sp.etwfe(panel, **args) |
| T2 | estimate, se | family=gaussian; cgroup=notyet; fe=unit; hettype=cohort/event/time/timecohort/twfe; scale=link; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_linear_jwdid_parity.py |
sp.etwfe(df, y, group, time, first_treat, fe='unit' | hettype=...) |
| T2 | estimate, se | family=gaussian; cgroup=nevertreated; fe=unit; hettype=cohort/event/timecohort; scale=link; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_linear_jwdid_parity.py |
sp.etwfe(df, y, group, time, first_treat, fe='unit' | hettype=...) |
| T2 | estimate, se | family=gaussian; cgroup=notyet; fe=unit; hettype=event/timecohort; scale=link; response_se=profile; controls=none; xvar=set; weights=none | tests/reference_parity/test_etwfe_linear_jwdid_parity.py |
sp.etwfe(df, y, group, time, first_treat, fe='unit' | hettype=...) |
| T2 | estimate, se | family=gaussian; cgroup=nevertreated; fe=unit; hettype=timecohort; scale=link; response_se=profile; controls=none; xvar=set; weights=none | tests/reference_parity/test_etwfe_linear_jwdid_parity.py |
sp.etwfe(df, y, group, time, first_treat, fe='unit' | hettype=...) |
| T2 | estimate | family=poisson; cgroup=notyet; fe=unit; hettype=cohort/event/time/timecohort/twfe; scale=response; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(panel, family='poisson', fe='unit', ...) |
| T2 | estimate | family=poisson; cgroup=nevertreated; fe=unit; hettype=cohort/event/timecohort; scale=response; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(panel, family='poisson', fe='unit', ...) |
| T2 | estimate | family=poisson; cgroup=notyet; fe=unit; hettype=event/timecohort; scale=response; response_se=profile; controls=none; xvar=set; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(panel, family='poisson', fe='unit', ...) |
| T2 | estimate | family=poisson; cgroup=nevertreated; fe=unit; hettype=timecohort; scale=response; response_se=profile; controls=none; xvar=set; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(panel, family='poisson', fe='unit', ...) |
| T2 | estimate, se | family=poisson; cgroup=notyet; fe=unit; hettype=timecohort; scale=response; response_se=margins; controls=none; xvar=none/set; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(panel, family='poisson', fe='unit', response_se='margins') |
| T2 | estimate, se | family=poisson; cgroup=notyet; fe=unit; hettype=cohort/event/time/timecohort/twfe; scale=link; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(df, family='poisson', fe='unit', scale='link', ...) |
| T2 | estimate, se | family=poisson; cgroup=nevertreated; fe=unit; hettype=cohort/event/timecohort; scale=link; response_se=profile; controls=none; xvar=none; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(df, family='poisson', fe='unit', scale='link', ...) |
| T2 | estimate, se | family=poisson; cgroup=notyet; fe=unit; hettype=event/timecohort; scale=link; response_se=profile; controls=none; xvar=set; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(df, family='poisson', fe='unit', scale='link', ...) |
| T2 | estimate, se | family=poisson; cgroup=nevertreated; fe=unit; hettype=timecohort; scale=link; response_se=profile; controls=none; xvar=set; weights=none | tests/reference_parity/test_etwfe_poisson_jwdid_parity.py |
sp.etwfe(df, family='poisson', fe='unit', scale='link', ...) |
| T2 | estimate, se | family=gaussian; cgroup=nevertreated/notyet; fe=unit; hettype=timecohort; scale=link; response_se=profile; controls=set; xvar=none; weights=none | tests/reference_parity/test_etwfe_linear_jwdid_parity.py |
sp.etwfe(df, y, group, time, first_treat, fe='unit' | hettype=...) |
event_study¶
Dimensions: adoption in {single_date, staggered}; window in {-4_4, other}; ref_period in {-1, other}; covariates in {none, set}; weights in {none, set}; cluster in {unit, other}; bins in {none, set}; intensity in {none, set}; absorb in {none, set}; crit_dist in {normal, t_resid, t_cluster}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | adoption=single_date; window=-4_4; ref_period=-1; covariates=none; weights=none; cluster=unit; bins=none; intensity=none; absorb=none; crit_dist=normal | tests/r_parity/85_twfe_event_study.py |
sp.event_study(window=(-4, 4), cluster='unit') |
| T2 | vcov | adoption=single_date; window=-4_4; ref_period=-1; covariates=none; weights=none; cluster=unit; bins=none; intensity=none; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_vcov_R_parity.py |
sp.event_study(window=(-4, 4), cluster='unit') |
| T2 | estimate, se | adoption=single_date/staggered; window=-4_4/other; ref_period=-1/other; covariates=none/set; weights=none/set; cluster=unit; bins=none; intensity=none; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_grid_R_parity.py |
sp.event_study(covariates=..., weights=...) |
| T2 | estimate, se | adoption=staggered; window=-4_4/other; ref_period=-1/other; covariates=none; weights=none; cluster=unit; bins=none; intensity=none; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=staggered; window=-4_4; ref_period=-1; covariates=none; weights=none/set; cluster=unit; bins=none; intensity=none; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=staggered; window=-4_4; ref_period=-1; covariates=set; weights=set; cluster=unit; bins=none; intensity=none; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=staggered; window=-4_4; ref_period=-1; covariates=none/set; weights=none; cluster=other; bins=none; intensity=none; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=single_date; window=-4_4; ref_period=-1; covariates=none; weights=set; cluster=other; bins=none; intensity=none; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=staggered; window=other; ref_period=other; covariates=none; weights=none; cluster=unit; bins=set; intensity=none; absorb=none/set; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=single_date; window=other; ref_period=other; covariates=set; weights=none; cluster=unit; bins=set; intensity=none; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=single_date; window=-4_4; ref_period=-1; covariates=none; weights=none/set; cluster=unit; bins=none; intensity=set; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=single_date; window=other; ref_period=-1; covariates=none; weights=none; cluster=other; bins=none; intensity=set; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=staggered; window=-4_4; ref_period=-1; covariates=none; weights=none; cluster=unit; bins=none; intensity=set; absorb=none; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=staggered; window=-4_4; ref_period=-1; covariates=none/set; weights=none; cluster=unit; bins=none; intensity=none; absorb=set; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se | adoption=single_date; window=-4_4; ref_period=-1; covariates=none; weights=set; cluster=unit; bins=none; intensity=none; absorb=set; crit_dist=normal | tests/reference_parity/test_event_study_options_R_parity.py |
sp.event_study(...) |
| T2 | estimate, se, interval | adoption=staggered; window=other; ref_period=-1; covariates=none; weights=set; cluster=other/unit; bins=none; intensity=none; absorb=none; crit_dist=t_cluster | tests/reference_parity/test_es_crit_parity.py |
sp.event_study( |
| T2 | estimate, se, interval | adoption=staggered; window=other; ref_period=-1; covariates=none; weights=none; cluster=unit; bins=none; intensity=none; absorb=none; crit_dist=t_cluster | tests/reference_parity/test_es_crit_parity.py |
sp.event_study( |
crit_dist is ignored for estimate, se, vcov, joint_test: the critical value turns an SE into a p-value and an interval; coefficients, SEs and the pre-trend test are computed before it is chosen (asserted equal across parity= in tests/reference_parity/test_es_crit_parity.py)
fast.feols¶
Dimensions: vcov in {iid, hc1, cr1}; ssc in {fixest, statspai}; weights in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vcov=iid; ssc=fixest; weights=none | tests/r_parity/03_hdfe.py |
sp.fast.feols(vcov='iid') |
| T2 | estimate, se | vcov=cr1; ssc=fixest; weights=none | tests/r_parity/15_hdfe_cluster.py |
sp.fast.feols(vcov='cr1') |
| B | coverage | vcov=cr1; ssc=fixest; weights=none | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.fast.feols(vcov='cr1') |
| T2 | estimate, se | vcov=cr1/hc1/iid; ssc=fixest; weights=none/set | tests/reference_parity/test_fast_feols_weights_fixest_parity.py |
sp.fast.feols(formula, data, weights=..., vcov=...) |
vcov is ignored for estimate: the least-squares / k-class point estimate is computed before, and independently of, the covariance estimator
ssc is ignored for estimate: the small-sample factor scales the covariance only
feols¶
Dimensions: fe in {none, one, multi}; iv in {false, true}; vcov in {iid, hetero, cr1, cr3, cluster_multiway, other}; weights in {none, set}; ssc in {default, custom}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | fe=multi/none/one; iv=false; vcov=cluster_multiway/cr1/hetero/iid; weights=none/set; ssc=default | tests/reference_parity/test_feols_grid_fixest_parity.py |
sp.feols(...) |
| T2 | estimate, se | fe=multi; iv=false; vcov=cluster_multiway/iid; weights=none; ssc=default | tests/external_parity/test_gow_ding_accounting.py |
sp.feols(...) |
| T2 | estimate, se | fe=one; iv=false; vcov=cr1; weights=none; ssc=default | tests/reference_parity/test_sasp_within_parity.py |
sp.feols(...) |
| T2 | estimate, se | fe=multi; iv=false; vcov=cr1; weights=none/set; ssc=default | tests/reference_parity/test_castle_stata_parity.py |
sp.feols(...) |
| T2 | estimate, se | fe=multi; iv=false; vcov=cr1; weights=none; ssc=default | tests/reference_parity/test_feols_multiref_R_parity.py |
sp.feols(...) |
| T2 | estimate, se | fe=multi; iv=false; vcov=cluster_multiway; weights=none; ssc=default | tests/reference_parity/test_accounting_research_parity.py |
sp.feols(...) |
| T2 | se | fe=none; iv=false/true; vcov=cr1/hetero; weights=none; ssc=custom | tests/reference_parity/test_ssc_presets_Stata_parity.py |
sp.feols(...) |
| T2 | se | fe=one; iv=false; vcov=cr1; weights=none; ssc=custom | tests/reference_parity/test_ssc_presets_Stata_parity.py |
sp.feols(...) |
vcov is ignored for estimate: the point estimate is computed before, and independently of, the covariance estimator
ssc is ignored for estimate: the point estimate is computed before, and independently of, the covariance estimator
g_computation¶
Dimensions: estimand in {ate, att, atc}; by_arm in {true, false}; ps in {none, set}; se_method in {bootstrap, analytic}; ml_q in {ols, other}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T1 | estimate | estimand=atc/ate/att; by_arm=false; ps=none; se_method=bootstrap; ml_q=ols | tests/test_inference_scan3_weighting.py |
sp.g_computation(...) |
| T1 | se | estimand=ate; by_arm=false; ps=none; se_method=bootstrap; ml_q=ols | tests/test_inference_scan3_weighting.py |
sp.g_computation(...) |
| T1 | estimate, se | estimand=ate/att; by_arm=true; ps=none/set; se_method=analytic; ml_q=ols | tests/test_inference_scan3_weighting.py |
sp.g_computation(...) |
| T1 | estimate | estimand=ate; by_arm=false; ps=none; se_method=bootstrap; ml_q=other | tests/reference_parity/test_gformula_parity.py |
sp.g_computation(...) |
se_method is ignored for estimate: the point estimate is computed before, and independently of, the variance estimator
gardner_did¶
Dimensions: vce in {analytic, stage2, bootstrap, none}; weights in {none, set}; covariates in {none, set}; event_study in {off, on}; form in {first_treat, general}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vce=analytic; weights=none/set; covariates=none/set; event_study=off; form=general | tests/reference_parity/test_stata_did_commands_parity.py |
sp.gardner_did(treat=, fe=) |
| T2 | estimate, se | vce=analytic; weights=none; covariates=none; form=first_treat; event_study=off | tests/r_parity/73_did2s.py |
sp.gardner_did() |
| T2 | estimate, se, vcov | vce=analytic; weights=none; covariates=none; form=first_treat; event_study=on | tests/reference_parity/test_event_study_vcov_R_parity.py |
sp.gardner_did(event_study=True) |
| T2 | estimate, se | vce=stage2; weights=none; covariates=none; form=first_treat; event_study=off | tests/reference_parity/test_gardner_stage2_R_parity.py |
sp.gardner_did(vce='stage2') |
vce is ignored for estimate: the covariance is computed after the two stages
glm¶
Dimensions: family_link in {gaussian_identity, gaussian_log, binomial_logit, binomial_probit, binomial_cloglog, binomial_cauchit, poisson_log, gamma_log, inverse_gaussian_log, other}; vce in {classical, robust, hc0, hc1, hc2, hc3, hac, cluster}; weights in {none, set}; information in {observed, expected}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | family_link=binomial_cloglog/binomial_logit/binomial_probit/gaussian_identity/gaussian_log/poisson_log; vce=classical/cluster/robust; weights=none; information=observed | tests/reference_parity/test_vce_grammar_stata_parity.py |
sp.glm(...) |
| T2 | estimate, se | family_link=binomial_logit/poisson_log; vce=classical; weights=none; information=observed | tests/reference_parity/test_glm_parity.py |
sp.glm(...) |
| T2 | estimate, se | family_link=gamma_log/inverse_gaussian_log; vce=classical; weights=none; information=expected/observed | tests/reference_parity/test_glm_dispersion_stata_r_parity.py |
sp.glm(...) |
| T2 | estimate, se | family_link=binomial_cauchit; vce=classical; weights=none; information=expected | tests/reference_parity/test_linear_model_extensions_parity.py |
sp.glm(...) |
| T2 | estimate, se | family_link=binomial_logit/poisson_log; vce=hc0/hc1/hc2/hc3; weights=none; information=observed | tests/reference_parity/test_ml_sandwich_r_parity.py |
sp.glm(...) |
| T2 | se | family_link=binomial_probit; vce=hc0; weights=none; information=expected | tests/reference_parity/test_ml_sandwich_r_parity.py |
sp.glm(...) |
vce is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
information is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
heckman¶
Dimensions: method in {twostep, ml}; vce in {classical, robust, cluster}; weights in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | method=twostep; vce=classical; weights=none | tests/r_parity/43_heckman.py |
sp.heckman(...) |
| T1 | se | method=twostep; vce=classical; weights=none | tests/reference_parity/test_heckman_se_parity.py |
sp.heckman(...) |
| T2 | estimate, se | method=ml; vce=classical/cluster/robust; weights=none | tests/reference_parity/test_ldv_design_stata_parity.py |
sp.heckman(...) |
| T2 | estimate, se | method=ml; vce=cluster/robust; weights=set | tests/reference_parity/test_ldv_design_stata_parity.py |
sp.heckman(...) |
vce is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
honest_did¶
Dimensions: restriction in {smoothness, relative_magnitude, smoothness_relative_magnitude}; shape in {none, sign, monotone}; interval in {flci, arp_conditional, arp_c_lf, arp_c_f, worst_case_bias}; code_path in {native, r}; target in {single, average, weights}; window in {full, restricted}; alpha in {0.05, other}; m_grid in {zero_only, zero, positive}; rm_grid in {honestdid, extended, user, n/a}; source in {callaway_santanna, sun_abraham, event_study, etwfe, gardner_did, did_imputation, moments, supplied, other}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | diagnostic | restriction=smoothness; shape=none; interval=flci; code_path=native; target=single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=n/a; source=supplied | tests/r_parity/10_honest_did.py |
sp.honest_did(res, e=0, m_grid=M_GRID, method='smoothness') |
| T2 | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_conditional; code_path=native; target=single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=supplied | tests/r_parity/21_honest_relmags.py |
sp.honest_did(res, method='relative_magnitude') |
| T2 | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_conditional; code_path=native; target=single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=supplied | tests/reference_parity/test_honest_rm_R_parity.py |
sp.honest_did(res, method='relative_magnitude') |
| S | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_c_lf; code_path=native; target=average/single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=supplied | tests/reference_parity/test_honest_rm_R_parity.py |
sp.honest_did(res, method='relative_magnitude') |
| T2 | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_conditional; code_path=native; target=average/single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=moments | tests/reference_parity/test_honest_did_moments_R_parity.py |
sp.honest_did_from_moments( |
| T4 | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_conditional; code_path=native; target=average/single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=extended; source=moments | tests/reference_parity/test_honest_did_moments_R_parity.py |
sp.honest_did_from_moments( |
| T2 | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_conditional; code_path=native; target=average/single/weights; window=full; alpha=0.05/other; m_grid=positive/zero/zero_only; rm_grid=honestdid/user; source=moments | tests/reference_parity/test_honest_did_options_R_parity.py |
sp.honest_did_from_moments( |
| T2 | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_conditional; code_path=native; target=average/single/weights; window=full/restricted; alpha=0.05/other; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=callaway_santanna | tests/reference_parity/test_honest_did_options_R_parity.py |
sp.honest_did(cs, **kw) |
| S | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_c_lf; code_path=native; target=average/single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=callaway_santanna | tests/reference_parity/test_honest_did_options_R_parity.py |
sp.honest_did(cs, **kw) |
| T1 | diagnostic | restriction=smoothness; shape=none; interval=flci; code_path=native; target=average/single/weights; window=full/restricted; alpha=0.05/other; m_grid=zero_only; rm_grid=n/a; source=callaway_santanna/moments | tests/reference_parity/test_honest_did_options_R_parity.py |
sp.honest_did(cs, **kw) |
| T4 | diagnostic | restriction=smoothness; shape=none; interval=flci; code_path=native; target=average/single/weights; window=full/restricted; alpha=0.05/other; m_grid=positive/zero/zero_only; rm_grid=n/a; source=callaway_santanna/moments | tests/reference_parity/test_honest_did_options_R_parity.py |
sp.honest_did(cs, **kw) |
| T4 | diagnostic | restriction=smoothness; shape=none; interval=flci; code_path=native; target=average/single; window=full; alpha=0.05; m_grid=positive; rm_grid=n/a; source=moments | tests/reference_parity/test_honest_did_moments_R_parity.py |
sp.honest_did_from_moments( |
| T2 | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_conditional; code_path=native; target=average/single/weights; window=restricted; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=etwfe | tests/reference_parity/test_honest_did_lvec_window_Stata_parity.py |
sp.honest_did(fit, backend='r', ...) vs sp.honest_did(fit, ...) |
| T4 | diagnostic | restriction=relative_magnitude/smoothness; shape=none; interval=arp_conditional/flci; code_path=native; target=average/single; window=restricted; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid/n/a; source=etwfe | tests/reference_parity/test_honest_did_lvec_window_Stata_parity.py |
sp.honest_did(fit, method=...) |
| T2 | diagnostic | restriction=relative_magnitude; shape=none; interval=arp_conditional; code_path=native; target=single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=callaway_santanna | tests/reference_parity/test_honest_did_backend_parity.py |
sp.honest_did(cs_result, method='relative_magnitude') |
| T2 | diagnostic | restriction=smoothness; shape=monotone/none/sign; interval=arp_conditional; code_path=native; target=average/single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=moments | tests/reference_parity/test_honest_restrictions_R_parity.py |
sp.honest_did_from_moments( |
| T2 | diagnostic | restriction=relative_magnitude/smoothness_relative_magnitude; shape=monotone/none/sign; interval=arp_conditional; code_path=native; target=average/single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=moments | tests/reference_parity/test_honest_restrictions_R_parity.py |
sp.honest_did_from_moments( |
| T4 | diagnostic | restriction=smoothness; shape=monotone/none/sign; interval=arp_c_f; code_path=native; target=single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=moments | tests/reference_parity/test_honest_restrictions_R_parity.py |
sp.honest_did_from_moments( |
| S | diagnostic | restriction=relative_magnitude/smoothness/smoothness_relative_magnitude; shape=none/sign; interval=arp_c_lf; code_path=native; target=single; window=full; alpha=0.05; m_grid=positive/zero/zero_only; rm_grid=honestdid; source=moments | tests/reference_parity/test_honest_restrictions_R_parity.py |
sp.honest_did_from_moments( |
ipw¶
Dimensions: estimand in {ate, att, atc, ato, atm}; se_method in {sandwich, bootstrap}; ps_model in {logit, probit, known}; normalized in {true, false}; trim in {zero, set}; weights in {none, set}; cluster in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | estimand=ate/att; se_method=sandwich; ps_model=logit; normalized=true; trim=zero; weights=none/set; cluster=none/set | tests/reference_parity/test_teffects_design_stata_parity.py |
sp.ipw(...) |
| T2 | estimate, se | estimand=ate/att; se_method=sandwich; ps_model=logit/probit; normalized=true; trim=zero; weights=none; cluster=none | tests/reference_parity/test_teffects_probit_stata.py |
sp.ipw(...) |
| T2 | estimate, se | estimand=ate/atm/ato/att; se_method=sandwich; ps_model=logit; normalized=true; trim=zero; weights=none; cluster=none | tests/reference_parity/test_barrett_causal_inference_in_r_parity.py |
sp.ipw(...) |
| T2 | estimate | estimand=atc; se_method=sandwich; ps_model=logit; normalized=true; trim=zero; weights=none; cluster=none | tests/reference_parity/test_barrett_causal_inference_in_r_parity.py |
sp.ipw(...) |
| T1 | estimate | estimand=atc/ate/att; se_method=bootstrap; ps_model=logit; normalized=true; trim=zero; weights=none; cluster=none | tests/reference_parity/test_ipw_parity.py |
sp.ipw(...) |
| T1 | estimate | estimand=ate; se_method=bootstrap; ps_model=logit; normalized=false; trim=zero; weights=none; cluster=none | tests/reference_parity/test_ipw_parity.py |
sp.ipw(...) |
se_method is ignored for estimate: the point estimate is computed before, and independently of, the variance estimator
iv¶
Dimensions: estimator in {2sls, liml, fuller, gmm}; vce in {classical, hc0, hc1, hc2, hc3, hc4, cr1, cr2, cr3, cluster_multiway, hac, wild, conley, jackknife}; identification in {just, over}; absorb in {none, set}; small in {true, false}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | joint_test | estimator=2sls; vce=classical/cr1/hc1; identification=over; absorb=none; small=true | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.ivreg(formula, data, robust=..., cluster=...) |
| T2 | estimate, se | estimator=2sls; vce=classical/cr1/hc1; identification=just/over; absorb=none; small=true | tests/reference_parity/test_iv_card_aer_parity.py |
sp.iv(formula, data, robust=..., cluster=...) |
| T2 | diagnostic | estimator=2sls; vce=classical; identification=over; absorb=none; small=true | tests/reference_parity/test_iv_card_aer_parity.py |
sp.iv(formula, data) |
| T2 | estimate, se | estimator=2sls; vce=hc1; identification=just; absorb=none; small=true | tests/r_parity/02_iv.py |
sp.ivreg(robust='hc1') |
| T2 | estimate, se | estimator=liml; vce=classical; identification=over; absorb=none; small=true | tests/reference_parity/test_validation_entry_points.py |
sp.iv(formula, data, method='liml') |
| B | coverage | estimator=2sls; vce=hc1; identification=just; absorb=none; small=true | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.ivreg(robust='hc1') |
| T2 | estimate, se | estimator=2sls/liml; vce=classical/cr1/hc1; identification=just; absorb=none; small=true | tests/reference_parity/test_iv_small_Stata_parity.py |
sp.iv(formula, data, method=..., small=True) |
| T2 | estimate, se | estimator=2sls/liml; vce=classical/cr1/hc0; identification=just; absorb=none; small=false | tests/reference_parity/test_iv_small_Stata_parity.py |
sp.iv(formula, data, method=..., small=False) |
| T2 | estimate, se | estimator=gmm; vce=cr1/hc1; identification=over; absorb=none; small=true | tests/reference_parity/test_iv_gmm_stata_parity.py |
sp.iv(formula, data, method='gmm') |
| T2 | estimate, se | estimator=gmm; vce=cr1/hc0; identification=over; absorb=none; small=false | tests/reference_parity/test_iv_gmm_stata_parity.py |
sp.iv(formula, data, method='gmm', small=False) |
| T2 | estimate, se | estimator=gmm; vce=classical; identification=over; absorb=none; small=true | tests/reference_parity/test_iv_gmm_stata_parity.py |
sp.iv(formula, data, method='gmm') |
| T2 | estimate, se | estimator=2sls; vce=classical/cluster_multiway/cr1/hc1; identification=just; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...]) |
| T2 | estimate, se | estimator=2sls; vce=cr1/hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...]) |
| T2 | estimate | estimator=liml; vce=cr1/hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...], method='liml') |
| T4 | se | estimator=liml; vce=cr1/hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...], method='liml') |
| T2 | estimate | estimator=fuller; vce=hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...], method='fuller') |
| T4 | se | estimator=fuller; vce=hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...], method='fuller') |
| T2 | estimate, se | estimator=2sls; vce=classical/cluster_multiway/cr1/hc0/hc1/hc2/hc3; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, **opts) |
| T2 | estimate, se | estimator=2sls; vce=cr2/cr3/jackknife; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, vce=..., cluster='g') |
| T2 | estimate, se | estimator=2sls/liml; vce=classical/cr1/hc1; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method=..., small=True) |
| T2 | estimate, se | estimator=2sls/liml; vce=classical/cr1/hc0; identification=just/over; absorb=none; small=false | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method=..., small=False) |
| T2 | estimate, se | estimator=liml; vce=hc0; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method='liml', robust='hc0') |
| T2 | estimate, se | estimator=fuller; vce=classical/cr1/hc0/hc1; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method='fuller', ...) |
| T2 | estimate, se | estimator=2sls; vce=cluster_multiway; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, cluster=['g', 'yr']) |
| T4 | se | estimator=2sls/fuller/liml; vce=cluster_multiway; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method=..., cluster=['g', 'yr']) |
| T2 | estimate, se | estimator=2sls; vce=conley; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, vce='conley', ...) |
| T2 | estimate, se | estimator=2sls; vce=wild; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, vce='wild', cluster='g') |
| T2 | diagnostic | estimator=2sls; vce=wild; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, vce='wild', cluster='g') |
vce is ignored for estimate: the least-squares / k-class point estimate is computed before, and independently of, the covariance estimator
ivreg¶
Dimensions: estimator in {2sls, liml, fuller, gmm}; vce in {classical, hc0, hc1, hc2, hc3, hc4, cr1, cr2, cr3, cluster_multiway, hac, wild, conley, jackknife}; identification in {just, over}; absorb in {none, set}; small in {true, false}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | joint_test | estimator=2sls; vce=classical/cr1/hc1; identification=over; absorb=none; small=true | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.ivreg(formula, data, robust=..., cluster=...) |
| T2 | estimate, se | estimator=2sls; vce=classical/cr1/hc1; identification=just/over; absorb=none; small=true | tests/reference_parity/test_iv_card_aer_parity.py |
sp.iv(formula, data, robust=..., cluster=...) |
| T2 | diagnostic | estimator=2sls; vce=classical; identification=over; absorb=none; small=true | tests/reference_parity/test_iv_card_aer_parity.py |
sp.iv(formula, data) |
| T2 | estimate, se | estimator=2sls; vce=hc1; identification=just; absorb=none; small=true | tests/r_parity/02_iv.py |
sp.ivreg(robust='hc1') |
| T2 | estimate, se | estimator=liml; vce=classical; identification=over; absorb=none; small=true | tests/reference_parity/test_validation_entry_points.py |
sp.iv(formula, data, method='liml') |
| B | coverage | estimator=2sls; vce=hc1; identification=just; absorb=none; small=true | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.ivreg(robust='hc1') |
| T2 | estimate, se | estimator=2sls/liml; vce=classical/cr1/hc1; identification=just; absorb=none; small=true | tests/reference_parity/test_iv_small_Stata_parity.py |
sp.iv(formula, data, method=..., small=True) |
| T2 | estimate, se | estimator=2sls/liml; vce=classical/cr1/hc0; identification=just; absorb=none; small=false | tests/reference_parity/test_iv_small_Stata_parity.py |
sp.iv(formula, data, method=..., small=False) |
| T2 | estimate, se | estimator=gmm; vce=cr1/hc1; identification=over; absorb=none; small=true | tests/reference_parity/test_iv_gmm_stata_parity.py |
sp.iv(formula, data, method='gmm') |
| T2 | estimate, se | estimator=gmm; vce=cr1/hc0; identification=over; absorb=none; small=false | tests/reference_parity/test_iv_gmm_stata_parity.py |
sp.iv(formula, data, method='gmm', small=False) |
| T2 | estimate, se | estimator=gmm; vce=classical; identification=over; absorb=none; small=true | tests/reference_parity/test_iv_gmm_stata_parity.py |
sp.iv(formula, data, method='gmm') |
| T2 | estimate, se | estimator=2sls; vce=classical/cluster_multiway/cr1/hc1; identification=just; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...]) |
| T2 | estimate, se | estimator=2sls; vce=cr1/hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...]) |
| T2 | estimate | estimator=liml; vce=cr1/hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...], method='liml') |
| T4 | se | estimator=liml; vce=cr1/hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...], method='liml') |
| T2 | estimate | estimator=fuller; vce=hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...], method='fuller') |
| T4 | se | estimator=fuller; vce=hc1; identification=over; absorb=set; small=true | tests/reference_parity/test_iv_hdfe_stata_parity.py |
sp.iv(formula, data, absorb=[...], method='fuller') |
| T2 | estimate, se | estimator=2sls; vce=classical/cluster_multiway/cr1/hc0/hc1/hc2/hc3; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, **opts) |
| T2 | estimate, se | estimator=2sls; vce=cr2/cr3/jackknife; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, vce=..., cluster='g') |
| T2 | estimate, se | estimator=2sls/liml; vce=classical/cr1/hc1; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method=..., small=True) |
| T2 | estimate, se | estimator=2sls/liml; vce=classical/cr1/hc0; identification=just/over; absorb=none; small=false | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method=..., small=False) |
| T2 | estimate, se | estimator=liml; vce=hc0; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method='liml', robust='hc0') |
| T2 | estimate, se | estimator=fuller; vce=classical/cr1/hc0/hc1; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method='fuller', ...) |
| T2 | estimate, se | estimator=2sls; vce=cluster_multiway; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, cluster=['g', 'yr']) |
| T4 | se | estimator=2sls/fuller/liml; vce=cluster_multiway; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.iv(IV[ident], data, method=..., cluster=['g', 'yr']) |
| T2 | estimate, se | estimator=2sls; vce=conley; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, vce='conley', ...) |
| T2 | estimate, se | estimator=2sls; vce=wild; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, vce='wild', cluster='g') |
| T2 | diagnostic | estimator=2sls; vce=wild; identification=just/over; absorb=none; small=true | tests/reference_parity/test_vce_menu_parity.py |
sp.ivreg(IV[ident], data, vce='wild', cluster='g') |
vce is ignored for estimate: the least-squares / k-class point estimate is computed before, and independently of, the covariance estimator
logit¶
Dimensions: vce in {classical, robust, hc0, hc1, cluster}; weights in {none, set}; perfect_prediction in {drop, keep}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vce=classical; weights=none; perfect_prediction=drop | tests/r_parity/57_logit.py |
sp.logit(formula=...) |
| T2 | estimate, se | vce=classical/cluster/robust; weights=none; perfect_prediction=drop | tests/reference_parity/test_vce_grammar_stata_parity.py |
sp.logit(...) |
| T2 | estimate, se | vce=classical/cluster/robust; weights=set; perfect_prediction=drop | tests/reference_parity/test_count_weights_stata_parity.py |
sp.logit(...) |
| T1 | estimate, se | vce=classical; weights=set; perfect_prediction=drop | tests/reference_parity/test_count_weights_stata_parity.py |
sp.logit(...) |
| T2 | estimate, se | vce=hc0/hc1; weights=none/set; perfect_prediction=drop | tests/reference_parity/test_ml_sandwich_r_parity.py |
sp.logit(...) |
| T2 | joint_test | vce=classical/robust; weights=none; perfect_prediction=drop | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.logit(...) |
| T2 | joint_test | vce=classical/cluster; weights=none; perfect_prediction=drop | tests/reference_parity/test_postestimation_stata_parity.py |
sp.logit(...) |
| T2 | estimate, se | vce=classical; weights=none; perfect_prediction=drop | tests/reference_parity/test_logit_perfect_prediction_Stata_parity.py |
sp.logit(...) |
| T2 | estimate, se | vce=classical; weights=none; perfect_prediction=drop | tests/reference_parity/test_regression_stories_r_parity.py |
sp.logit(...) |
vce is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
nbreg¶
Dimensions: vce in {classical, robust, cluster}; weights in {none, set}; dispersion in {nb2, nb1}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vce=classical; weights=none; dispersion=nb2 | tests/r_parity/42_nbreg.py |
sp.nbreg(formula=...) |
| T4 | se | vce=classical; weights=none; dispersion=nb2 | tests/r_parity/42_nbreg.py |
sp.nbreg(formula=...) |
| T2 | estimate, se | vce=classical/cluster/robust; weights=none; dispersion=nb1/nb2 | tests/reference_parity/test_vce_grammar_stata_parity.py |
sp.nbreg(...) |
| T1 | estimate, se | vce=classical; weights=set; dispersion=nb2 | tests/reference_parity/test_count_weights_stata_parity.py |
sp.nbreg(...) |
vce is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
nnmatch¶
Dimensions: estimand in {att, ate}; metric in {mahalanobis, ivariance, euclidean}; n_matches in {1, 2, 3, 4, 5}; exact in {none, set}; bias_adjust in {none, set}; vce in {robust, iid}; vce_nn in {2, 3, 4, na}; caliper in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | estimand=att; metric=mahalanobis; n_matches=1; exact=none; bias_adjust=none; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=ate; metric=mahalanobis; n_matches=1; exact=none; bias_adjust=none; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=att; metric=mahalanobis; n_matches=1; exact=none; bias_adjust=set; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=att; metric=ivariance; n_matches=3; exact=none; bias_adjust=none; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=att; metric=euclidean; n_matches=1; exact=none; bias_adjust=none; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=att; metric=mahalanobis; n_matches=1; exact=none; bias_adjust=none; vce=iid; vce_nn=na; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=att; metric=mahalanobis; n_matches=1; exact=none; bias_adjust=none; vce=robust; vce_nn=4; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=att; metric=mahalanobis; n_matches=1; exact=set; bias_adjust=set; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=ate; metric=mahalanobis; n_matches=2; exact=none; bias_adjust=set; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_nnmatch_teffects_parity.py |
sp.match(df, y, treat, covariates, method='nnmatch', ...) |
| T2 | estimate, se | estimand=att; metric=mahalanobis; n_matches=1/4/5; exact=none; bias_adjust=none; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='nnmatch', n_matches=4) |
| T2 | estimate, se | estimand=ate; metric=mahalanobis; n_matches=4/5; exact=none; bias_adjust=none; vce=robust; vce_nn=2; caliper=none | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='nnmatch', n_matches=4) |
| T2 | estimate, se | estimand=att; metric=mahalanobis; n_matches=1; exact=none; bias_adjust=none; vce=robust; vce_nn=3; caliper=none | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='nnmatch', vce_nn=3) |
| T2 | estimate, se | estimand=ate; metric=mahalanobis; n_matches=4; exact=none; bias_adjust=none; vce=robust; vce_nn=3; caliper=none | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='nnmatch', vce_nn=3) |
| T2 | estimate, se | estimand=att; metric=mahalanobis; n_matches=4; exact=none; bias_adjust=none; vce=robust; vce_nn=2; caliper=set | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='nnmatch', caliper=3.0) |
| T2 | estimate, se | estimand=ate; metric=mahalanobis; n_matches=1; exact=none; bias_adjust=none; vce=robust; vce_nn=2; caliper=set | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='nnmatch', caliper=3.0) |
panel¶
Dimensions: method in {fe, twoway, pooled, fd, re, be, mundlak, chamberlain}; vce in {unadjusted, robust, cluster}; ssc in {linearmodels, stata, fixest}; weights in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate | method=fe/re; vce=unadjusted; ssc=linearmodels; weights=none | tests/r_parity/35_panel.py |
sp.panel(data=df, ...) |
| T2 | joint_test | method=fe; vce=unadjusted; ssc=linearmodels; weights=none | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.panel(data, formula, method='fe') |
| T2 | joint_test | method=fe; vce=unadjusted; ssc=stata; weights=none | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.panel(data, formula, method='fe') |
| T2 | joint_test | method=fe; vce=unadjusted; ssc=fixest; weights=none | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.panel(data, formula, method='fe') |
| T2 | joint_test | method=fe; vce=cluster; ssc=stata; weights=none | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.panel(data, formula, method='fe', cluster=..., ssc=...) |
| T2 | joint_test | method=fe; vce=cluster; ssc=fixest; weights=none | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.panel(data, formula, method='fe', cluster=..., ssc=...) |
| T4 | joint_test | method=fe; vce=cluster; ssc=linearmodels; weights=none | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.panel(data, formula, method='fe', cluster=...) |
| T2 | estimate, se | method=fd/fe/pooled/re/twoway; vce=cluster/robust/unadjusted; ssc=stata; weights=none | tests/reference_parity/test_panel_ssc_stata_parity.py |
sp.panel(data, ..., ssc=ssc) |
| T2 | estimate, se | method=be; vce=unadjusted; ssc=stata; weights=none | tests/reference_parity/test_panel_ssc_stata_parity.py |
sp.panel(data, ..., ssc=ssc) |
| T2 | estimate, se | method=mundlak; vce=cluster/unadjusted; ssc=stata; weights=none | tests/reference_parity/test_panel_ssc_stata_parity.py |
sp.panel(data, ..., ssc=ssc) |
| T2 | estimate, se | method=chamberlain; vce=cluster; ssc=stata; weights=none | tests/reference_parity/test_panel_ssc_stata_parity.py |
sp.panel(data, ..., ssc=ssc) |
| T2 | estimate, se | method=fe/pooled/twoway; vce=cluster/unadjusted; ssc=stata; weights=set | tests/reference_parity/test_panel_ssc_stata_parity.py |
sp.panel(data, ..., ssc=ssc) |
| T2 | estimate, se | method=fd/fe/pooled/twoway; vce=cluster/robust/unadjusted; ssc=fixest; weights=none | tests/reference_parity/test_panel_ssc_stata_parity.py |
sp.panel(data, ..., ssc=ssc) |
| T2 | estimate, se | method=fe/pooled/twoway; vce=cluster/robust/unadjusted; ssc=fixest; weights=set | tests/reference_parity/test_panel_ssc_stata_parity.py |
sp.panel(data, ..., ssc=ssc) |
vce is ignored for estimate: the covariance is computed after the coefficients
ssc is ignored for estimate: the small-sample convention scales the covariance only
poisson¶
Dimensions: vce in {classical, robust, hc0, hc1, cluster}; weights in {none, set}; exposure in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vce=classical; weights=none; exposure=none | tests/r_parity/58_poisson.py |
sp.poisson(formula=...) |
| T2 | estimate, se | vce=classical/cluster/robust; weights=none; exposure=none | tests/reference_parity/test_vce_grammar_stata_parity.py |
sp.poisson(...) |
| T2 | estimate, se | vce=classical/cluster/robust; weights=set; exposure=none | tests/reference_parity/test_count_weights_stata_parity.py |
sp.poisson(...) |
| T1 | estimate, se | vce=classical; weights=set; exposure=none | tests/reference_parity/test_count_weights_stata_parity.py |
sp.poisson(...) |
| T2 | estimate, se | vce=classical/hc1; weights=none; exposure=none | tests/reference_parity/test_accounting_research_parity.py |
sp.poisson(...) |
| T2 | estimate, se | vce=hc0/hc1; weights=none/set; exposure=none | tests/reference_parity/test_ml_sandwich_r_parity.py |
sp.poisson(...) |
| T2 | estimate, se | vce=classical/hc0; weights=none; exposure=set | tests/reference_parity/test_ml_sandwich_r_parity.py |
sp.poisson(...) |
| T2 | joint_test | vce=classical/robust; weights=none; exposure=none | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.poisson(...) |
vce is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
ppmlhdfe¶
Dimensions: fe in {one, multi}; vce in {classical, robust, hc0, hc1, cr1, cluster_multiway}; weights in {none, set}; ssc in {stata, fixest, none}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | fe=one; vce=robust; weights=none; ssc=fixest/stata | tests/r_parity/37_ppmlhdfe.py |
sp.ppmlhdfe(formula=...) |
| T2 | estimate, se | fe=multi; vce=robust; weights=none; ssc=fixest/stata | tests/r_parity/47_ppmlhdfe_3fe.py |
sp.ppmlhdfe(formula=...) |
| T2 | estimate, se | fe=one; vce=robust; weights=set; ssc=stata | tests/reference_parity/test_count_weights_stata_parity.py |
sp.ppmlhdfe(...) |
| T2 | estimate, se | fe=one; vce=cr1; weights=none/set; ssc=stata | tests/reference_parity/test_count_weights_stata_parity.py |
sp.ppmlhdfe(...) |
| T2 | estimate, se | fe=multi; vce=cr1; weights=none; ssc=stata | tests/reference_parity/test_ppmlhdfe_singletons_Stata_parity.py |
sp.ppmlhdfe(...) |
| T2 | se | fe=multi; vce=cluster_multiway/cr1; weights=none; ssc=stata | tests/reference_parity/test_ppmlhdfe_twoway_parity.py |
sp.ppmlhdfe(...) |
vce is ignored for estimate: the point estimate is computed before, and independently of, the covariance estimator
ssc is ignored for estimate: the point estimate is computed before, and independently of, the covariance estimator
probit¶
Dimensions: vce in {classical, robust, hc0, hc1, cluster}; weights in {none, set}; perfect_prediction in {drop, keep}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vce=classical; weights=none; perfect_prediction=drop | tests/r_parity/48_probit.py |
sp.probit(formula=...) |
| T4 | se | vce=classical; weights=none; perfect_prediction=drop | tests/r_parity/48_probit.py |
sp.probit(formula=...) |
| T2 | estimate, se | vce=classical/cluster/robust; weights=none; perfect_prediction=drop | tests/reference_parity/test_vce_grammar_stata_parity.py |
sp.probit(...) |
| T2 | estimate, se | vce=classical/cluster/robust; weights=set; perfect_prediction=drop | tests/reference_parity/test_count_weights_stata_parity.py |
sp.probit(...) |
| T4 | se | vce=hc0/hc1; weights=none/set; perfect_prediction=drop | tests/reference_parity/test_ml_sandwich_r_parity.py |
sp.probit(...) |
| T2 | joint_test | vce=classical/cluster; weights=none; perfect_prediction=drop | tests/reference_parity/test_postestimation_stata_parity.py |
sp.probit(...) |
vce is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
psm¶
Dimensions: method in {nearest, kernel, radius, stratify}; distance in {propensity, mahalanobis}; n_matches in {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; replace in {true, false}; caliper in {none, set}; bias_correction in {true, false}; se_method in {abadie_imbens, abadie_imbens_2016, psmatch2, analytic, bootstrap}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate | method=nearest; distance=propensity; n_matches=1; replace=true; caliper=none; bias_correction=false; se_method=abadie_imbens/abadie_imbens_2016 | tests/r_parity/11_psm.py |
sp.psm(method='nn') |
| T2 | se | method=nearest; distance=propensity; n_matches=1; replace=true; caliper=none; bias_correction=false; se_method=abadie_imbens_2016 | tests/r_parity/11_psm.py |
sp.psm(se_method='abadie_imbens_2016') |
| T2 | estimate | method=nearest; distance=propensity; n_matches=1/2; replace=false; caliper=none; bias_correction=false; se_method=abadie_imbens/abadie_imbens_2016 | tests/reference_parity/test_matching_r_parity.py |
sp.match(lalonde, ..., method='nearest', replace=False) |
| T2 | estimate | method=nearest; distance=mahalanobis; n_matches=1; replace=false; caliper=none; bias_correction=false; se_method=abadie_imbens/abadie_imbens_2016 | tests/reference_parity/test_matching_r_parity.py |
sp.match(lalonde, ..., distance='mahalanobis', replace=False) |
| T2 | estimate, se | method=nearest; distance=propensity; n_matches=1/10/2/3/4/5/6/7/8/9; replace=true; caliper=none; bias_correction=false; se_method=abadie_imbens | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, y='y', treat='d', covariates=X, n_matches=k) |
| T2 | estimate, se | method=nearest; distance=propensity; n_matches=1/10/2/3/4/5/6/7/8/9; replace=true; caliper=none; bias_correction=false; se_method=abadie_imbens_2016 | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., se_method='abadie_imbens_2016') |
| T2 | estimate, se | method=nearest; distance=propensity; n_matches=1; replace=true; caliper=set; bias_correction=false; se_method=abadie_imbens_2016 | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., caliper=0.2, se_method='abadie_imbens_2016') |
| T2 | estimate, se | method=nearest; distance=propensity; n_matches=1; replace=true; caliper=none/set; bias_correction=false; se_method=psmatch2 | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., caliper=0.01, se_method='psmatch2') |
| T2 | estimate | method=nearest; distance=propensity; n_matches=1; replace=true; caliper=set; bias_correction=false; se_method=abadie_imbens | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., caliper=0.01) |
| T4 | se | method=nearest; distance=propensity; n_matches=1; replace=true; caliper=set; bias_correction=false; se_method=abadie_imbens | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., caliper=0.01) |
| T4 | se | method=nearest; distance=propensity; n_matches=1; replace=false; caliper=none; bias_correction=false; se_method=abadie_imbens | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., replace=False, m_order='smallest') |
| T2 | estimate, se | method=nearest; distance=mahalanobis; n_matches=1/3; replace=true; caliper=none; bias_correction=false; se_method=abadie_imbens | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., distance='mahalanobis') |
| T2 | estimate, se | method=kernel; distance=propensity; n_matches=1; replace=true; caliper=none; bias_correction=false; se_method=psmatch2 | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='kernel', kernel=k) |
| T2 | estimate, se | method=radius; distance=propensity; n_matches=1; replace=true; caliper=set; bias_correction=false; se_method=psmatch2 | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='radius', caliper=0.02) |
| T2 | estimate, se | method=stratify; distance=propensity; n_matches=1; replace=true; caliper=none; bias_correction=false; se_method=analytic | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., method='stratify') |
| T2 | estimate, se | method=stratify; distance=propensity; n_matches=1; replace=true; caliper=none; bias_correction=false; se_method=analytic | tests/reference_parity/test_qiu_jiaping_methods_stata.py |
sp.match(data, ..., method='stratify', strata='b1') |
| T2 | estimate, se | method=nearest; distance=propensity; n_matches=1; replace=true; caliper=none; bias_correction=true; se_method=abadie_imbens | tests/reference_parity/test_psm_options_parity.py |
sp.match(df, ..., bias_correction=True) |
se_method is ignored for estimate: the variance estimator does not change the matches
qreg¶
Dimensions: vce in {iid, robust, nid, kernel, ker, cluster, powell}; weights in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vce=nid; weights=none | tests/r_parity/40_qreg.py |
sp.qreg(...) |
| T2 | estimate, se | vce=iid/robust; weights=none | tests/reference_parity/test_ldv_design_stata_parity.py |
sp.qreg(...) |
| T2 | estimate, se, vcov | vce=cluster/kernel; weights=none | tests/reference_parity/test_qreg_cluster_stata_parity.py |
sp.qreg(...) |
| T2 | estimate, se | vce=robust; weights=set | tests/reference_parity/test_ldv_gaps_stata_parity.py |
sp.qreg(...) |
| T2 | estimate, se | vce=ker/nid; weights=none/set | tests/reference_parity/test_linear_model_extensions_parity.py |
sp.qreg(...) |
vce is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
rddensity¶
Dimensions: code_path in {native, rddensity}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | diagnostic | code_path=native | tests/r_parity/09_rddensity.py |
sp.rddensity(backend='native') |
| T2 | diagnostic, estimate, se | code_path=native | tests/reference_parity/test_rddensity_parity.py |
sp.rddensity(df, x, c) |
| T2 | diagnostic, estimate | code_path=native | tests/reference_parity/test_rddensity_all_stata.py |
sp.rddensity(df, x) |
rdrobust¶
Dimensions: design in {sharp, fuzzy, kink}; bwselect in {mserd, msetwo, msesum, msecomb1, msecomb2, cerrd, certwo, cersum, cercomb1, cercomb2, cct, manual}; kernel in {triangular, epanechnikov, uniform}; p in {0, 1, 2, 3, 4}; vce in {nn, hc0, hc1, hc2, hc3, cluster}; covariates in {none, set}; code_path in {native, port}; weights in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=none | tests/r_parity/06_rd.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=manual; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=none | tests/r_parity/06_rd.py |
sp.rdrobust(h=15) |
| B | coverage | design=sharp; bwselect=mserd; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=none | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=sharp; bwselect=msetwo; kernel=triangular; p=1; vce=hc1; covariates=none; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=sharp; bwselect=cerrd; kernel=triangular; p=2; vce=nn; covariates=none; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=triangular; p=1; vce=nn; covariates=set; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=triangular; p=1; vce=cluster; covariates=none; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=uniform; p=1; vce=hc3; covariates=none; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=sharp; bwselect=manual; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=fuzzy; bwselect=mserd; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=fuzzy; bwselect=msecomb2; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=set | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=fuzzy; bwselect=msecomb2; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rd_weights_parity.py |
sp.rdrobust(weights=) |
| T2 | estimate, se | design=sharp; bwselect=cerrd/cersum/certwo/mserd/msesum/msetwo; kernel=epanechnikov/triangular/uniform; p=1/2; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rdrobust_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=cerrd/cersum/certwo/mserd/msesum/msetwo; kernel=epanechnikov/triangular/uniform; p=0/3/4; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rdrobust_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=triangular; p=1/2; vce=hc0/hc1/hc2/hc3/nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rd_vce_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=triangular; p=1; vce=hc0/hc2/hc3/nn; covariates=set; code_path=native; weights=none | tests/reference_parity/test_rd_vce_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=triangular; p=1/2; vce=cluster; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rd_vce_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=mserd; kernel=triangular; p=1; vce=cluster; covariates=set; code_path=native; weights=none | tests/reference_parity/test_rd_vce_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=cerrd; kernel=triangular; p=1; vce=cluster; covariates=set; code_path=native; weights=none | tests/reference_parity/test_rd_cluster_cer_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=fuzzy; bwselect=mserd; kernel=triangular; p=1/2; vce=nn; covariates=none/set; code_path=native; weights=none | tests/reference_parity/test_rdrobust_fuzzy_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=fuzzy; bwselect=cerrd/msetwo; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rdrobust_fuzzy_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=fuzzy; bwselect=mserd; kernel=uniform; p=1; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rdrobust_fuzzy_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=fuzzy; bwselect=mserd; kernel=triangular; p=1; vce=hc0/hc1/hc2/hc3; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rdrobust_fuzzy_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=kink; bwselect=mserd; kernel=triangular; p=2; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rdrobust_params_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=sharp; bwselect=cercomb1/cercomb2/msecomb1/msecomb2; kernel=epanechnikov/triangular/uniform; p=1/2; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rdrobust_comb_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=fuzzy; bwselect=cercomb1/cercomb2/msecomb1/msecomb2; kernel=triangular; p=1; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rdrobust_comb_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=kink; bwselect=mserd; kernel=triangular; p=1/2; vce=nn; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rd_iv_rd_R_parity.py |
sp.rdrobust(df, y, x, c) |
| T2 | estimate, se | design=kink; bwselect=manual/mserd; kernel=triangular; p=1; vce=hc1; covariates=none; code_path=native; weights=none | tests/reference_parity/test_rd_iv_rd_R_parity.py |
sp.rdrobust(df, y, x, c) |
regress¶
Dimensions: vce in {classical, hc0, hc1, hc2, hc3, hc4, cr1, cr2, cr3, cluster_multiway, hac, wild, conley, jackknife}; weights in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | vce=hc1; weights=none | tests/r_parity/01_ols.py |
sp.regress(robust='hc1') |
| T2 | estimate, se | vce=classical/cr1/hc1/hc3; weights=none | tests/reference_parity/test_vce_grammar_stata_parity.py |
sp.regress(vce=...) |
| T2 | joint_test | vce=classical/cr1/hc1; weights=none | tests/reference_parity/test_r2_postest_parity.py |
sp.test(result, 'C(g)[T.2] = ... = 0') |
| T2 | joint_test | vce=classical/cr1/hc1/hc2/hc3; weights=none | tests/reference_parity/test_joint_wald_stata_parity.py |
sp.regress(formula, data, robust=..., cluster=...) |
| T2 | estimate, se | vce=hc2/hc3; weights=none | tests/r_parity/55_hc2_hc3.py |
sp.regress(robust='hc2'|'hc3') |
| T2 | estimate, se | vce=hc4; weights=none/set | tests/reference_parity/test_linear_model_extensions_parity.py |
sp.regress(F_ALL, df, robust=...) |
| T2 | estimate, se | vce=cr1; weights=none | tests/r_parity/14_ols_cluster.py |
sp.regress(cluster=...) |
| T2 | estimate, se | vce=hac; weights=none | tests/r_parity/51_newey.py |
sp.regress(robust='hac') |
| T2 | estimate, se | vce=classical/cr1/cr2/hc1/hc2/hc3; weights=set | tests/reference_parity/test_regress_vce_weights_stata_parity.py |
sp.regress(FORMULA, data, weights=..., vce=...) |
| T2 | estimate, se | vce=cr2; weights=none | tests/reference_parity/test_regress_vce_weights_stata_parity.py |
sp.regress(FORMULA, data, vce='cr2', cluster=...) |
| T1 | se | vce=cr3; weights=none/set | tests/reference_parity/test_regress_vce_weights_stata_parity.py |
sp.regress(FORMULA, data, vce='cr3', cluster=...) |
| T4 | se | vce=cr3; weights=none | tests/reference_parity/test_regress_vce_weights_stata_parity.py |
sp.regress(FORMULA, data, vce='cr3', cluster=...) |
| T4 | se | vce=cluster_multiway; weights=none/set | tests/reference_parity/test_regress_vce_weights_stata_parity.py |
sp.regress(FORMULA, data, cluster=[a, b]) |
| B | coverage | vce=hc1; weights=none | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.regress(robust='hc1') |
| T2 | estimate, se | vce=classical/cluster_multiway/cr1/cr3/hac/hc0/hc1/hc2/hc3/hc4; weights=none/set | tests/reference_parity/test_vce_menu_parity.py |
sp.regress(F, data, weights=..., **opts) |
| T2 | estimate, se | vce=cr2; weights=none | tests/reference_parity/test_vce_menu_parity.py |
sp.regress(F, data, vce='cr2', cluster='g') |
| T2 | estimate, se | vce=jackknife; weights=none/set | tests/reference_parity/test_vce_menu_parity.py |
sp.regress(F, data, vce='jackknife', cluster='g') |
| T4 | se | vce=cr2; weights=set | tests/reference_parity/test_vce_menu_parity.py |
sp.regress(F, data, vce='cr2', cluster='g', weights='w') |
| T2 | estimate, se | vce=wild; weights=none | tests/reference_parity/test_vce_menu_parity.py |
sp.regress(F, data, vce='wild', cluster='g') |
| T2 | diagnostic | vce=wild; weights=none | tests/reference_parity/test_vce_menu_parity.py |
sp.regress(F, data, vce='wild', cluster='g') |
| T2 | estimate, se | vce=conley; weights=none | tests/reference_parity/test_vce_menu_parity.py |
sp.regress(F, data, vce='conley', ...) |
| T2 | estimate, se | vce=hac; weights=none/set | tests/reference_parity/test_vce_menu_parity.py |
sp.regress(F, data, robust='hac', hac_small=True, ...) |
vce is ignored for estimate: the least-squares / k-class point estimate is computed before, and independently of, the covariance estimator
sdid¶
Dimensions: method in {sdid, sc, did}; se_method in {placebo, bootstrap, jackknife, noinference}; code_path in {native, synthdid, r}; interface in {treated_unit, treat}; design in {block, staggered}; covariates in {none, projected}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate | method=sdid; se_method=placebo; code_path=native; interface=treated_unit; design=block; covariates=none | tests/r_parity/12_sdid.py |
sp.sdid(backend='native') |
| T2 | estimate, se | method=did/sc/sdid; se_method=jackknife/noinference; code_path=native; interface=treat; design=block/staggered; covariates=none/projected | tests/reference_parity/test_sdid_staggered_parity.py |
sp.sdid(treat=...) |
| B | coverage | method=sdid; se_method=placebo; code_path=native; interface=treated_unit; design=block; covariates=none | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.sdid() |
| T2 | estimate, se | method=did/sc/sdid; se_method=jackknife; code_path=native; interface=treated_unit; design=block; covariates=none | tests/reference_parity/test_did_synth_R_parity.py |
sp.sdid(treated_unit=...) |
| T2 | estimate | method=sdid; se_method=placebo; code_path=native; interface=treated_unit; design=block; covariates=none | tests/reference_parity/test_sdid_parity.py |
sp.sdid() |
| S | se | method=did/sc/sdid; se_method=bootstrap/placebo; code_path=native; interface=treated_unit; design=block; covariates=none | tests/reference_parity/test_sdid_resampling_screen.py |
sp.sdid(treated_unit=...) |
| S | se | method=did/sc/sdid; se_method=placebo; code_path=native; interface=treat; design=block; covariates=none | tests/reference_parity/test_sdid_resampling_screen.py |
sp.sdid(treat=...) |
| S | se | method=sdid; se_method=bootstrap/placebo; code_path=native; interface=treat; design=staggered; covariates=none | tests/reference_parity/test_sdid_resampling_screen.py |
sp.sdid(treat=...) |
se_method is ignored for estimate: the SE method resamples after the unit and time weights are solved; the ATT is unchanged
sun_abraham¶
Dimensions: control_group in {nevertreated, lastcohort, control_cohort}; aggregation in {fixest_att, event_time}; share_variance in {estimated, fixed}; window_rule in {report, bin, reference}; crit_dist in {normal, t_resid, t_cluster}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | control_group=nevertreated; aggregation=fixest_att; share_variance=estimated/fixed; window_rule=report; crit_dist=normal | tests/r_parity/05_sunab.py |
sp.sun_abraham(aggregation='fixest_att') |
| T2 | estimate, se | control_group=nevertreated; aggregation=event_time; share_variance=estimated/fixed; window_rule=report; crit_dist=normal | tests/reference_parity/test_sunab_event_time_aggregate_parity.py |
sp.sun_abraham() |
| B | coverage | control_group=nevertreated; aggregation=event_time; share_variance=estimated; window_rule=report; crit_dist=normal | tests/coverage_monte_carlo/results_b1000/coverage_b1000.json |
sp.sun_abraham() |
| T2 | vcov | control_group=nevertreated; aggregation=event_time; share_variance=fixed; window_rule=report; crit_dist=normal | tests/reference_parity/test_event_study_vcov_R_parity.py |
sp.sun_abraham(share_variance=False) |
| T2 | estimate, se | control_group=nevertreated; aggregation=event_time; share_variance=estimated; window_rule=bin; crit_dist=normal | tests/reference_parity/test_dcdh_textbook_stata_parity.py |
sp.sun_abraham(window_rule='bin') |
| T2 | estimate, se | control_group=control_cohort/lastcohort; aggregation=event_time/fixest_att; share_variance=estimated/fixed; window_rule=report; crit_dist=normal | tests/reference_parity/test_sunab_options_parity.py |
sp.sun_abraham(control_group='lastcohort') |
| T2 | estimate, se | control_group=control_cohort/nevertreated; aggregation=event_time; share_variance=estimated; window_rule=report; crit_dist=normal | tests/reference_parity/test_sunab_control_cohort_parity.py |
sp.sun_abraham(control_cohort=2007) |
| T2 | estimate, se | control_group=lastcohort/nevertreated; aggregation=event_time/fixest_att; share_variance=estimated/fixed; window_rule=reference; crit_dist=normal | tests/reference_parity/test_sunab_options_parity.py |
sp.sun_abraham(window_rule='reference') |
| T2 | estimate, se, interval | control_group=nevertreated; aggregation=event_time; share_variance=estimated/fixed; window_rule=report; crit_dist=t_cluster/t_resid | tests/reference_parity/test_es_crit_parity.py |
sp.sun_abraham( |
aggregation is ignored for vcov: the event-time covariance is formed before the summary aggregate is chosen
crit_dist is ignored for estimate, se, vcov: the critical value turns an SE into a p-value and an interval; coefficients and SEs are computed before it is chosen (asserted equal across parity= in tests/reference_parity/test_es_crit_parity.py)
synth¶
Dimensions: v_method in {equal, nested, regression}; weights in {unique, nonunique}; code_path in {native, synth}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate | v_method=equal; weights=unique; code_path=native | tests/r_parity/52_scm_unique.py |
sp.synth(method='classic') |
| T4 | estimate | v_method=nested; weights=nonunique/unique; code_path=native | tests/r_parity/07_scm.py |
sp.synth(method='classic', special predictors) |
| T1 | estimate | v_method=nested/regression; weights=unique; code_path=native | tests/reference_parity/test_synth_unique_options_parity.py |
sp.synth(method='classic', special_predictors=...) |
| T2 | se | v_method=equal; weights=unique; code_path=native | tests/reference_parity/test_synth_unique_options_parity.py |
sp.synth(method='classic') |
| T4 | estimate | v_method=regression; weights=unique; code_path=native | tests/reference_parity/test_synth_regression_v_stata.py |
sp.synth(v_method='regression') |
| T4 | estimate | v_method=regression; weights=unique; code_path=native | tests/reference_parity/test_synth2_stata_parity.py |
sp.synth(method='classic', v_method='regression') |
tmle¶
Dimensions: estimand in {ate, att, atc, ey1, ey0, rr, or}; fluctuation in {single, per_arm}; nuisance in {supplied, user_library, default_library}; se_method in {eif, bootstrap}; outcome in {binary, continuous}; weights in {none, set}; cluster in {none, set}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | estimand=ate; fluctuation=per_arm; nuisance=user_library; se_method=eif; outcome=binary/continuous; weights=none/set; cluster=none/set | tests/reference_parity/test_tmle_design_R_parity.py |
sp.tmle(...) |
| T2 | estimate, se | estimand=ate/ey0/ey1; fluctuation=per_arm; nuisance=supplied; se_method=eif; outcome=binary/continuous; weights=none/set; cluster=none/set | tests/reference_parity/test_tmle_parameters_R_parity.py |
sp.tmle(...) |
| T2 | estimate, se | estimand=or/rr; fluctuation=per_arm; nuisance=supplied; se_method=eif; outcome=binary; weights=none; cluster=none/set | tests/reference_parity/test_tmle_parameters_R_parity.py |
sp.tmle(...) |
| T2 | estimate | estimand=or/rr; fluctuation=per_arm; nuisance=supplied; se_method=eif; outcome=binary; weights=set; cluster=none/set | tests/reference_parity/test_tmle_parameters_R_parity.py |
sp.tmle(...) |
| T4 | se | estimand=or; fluctuation=per_arm; nuisance=supplied; se_method=eif; outcome=binary; weights=set; cluster=none/set | tests/reference_parity/test_tmle_parameters_R_parity.py |
sp.tmle(...) |
| T2 | estimate, se | estimand=ate; fluctuation=per_arm; nuisance=supplied; se_method=eif; outcome=binary; weights=none; cluster=none | tests/r_parity/72_tmle.py |
sp.tmle(fluctuation=...) |
| T2 | estimate, se | estimand=ate; fluctuation=single; nuisance=user_library; se_method=eif; outcome=binary; weights=none; cluster=none | tests/reference_parity/test_tmle_parity.py |
sp.tmle(...) |
tobit¶
Dimensions: method in {mle, scls}; vce in {classical, robust, cluster}; weights in {none, set}; censoring in {left, right, two_sided}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se | method=mle; vce=classical; weights=none; censoring=left | tests/r_parity/41_tobit.py |
sp.tobit(data=...) |
| T2 | estimate, se | method=mle; vce=classical; weights=none; censoring=left | tests/reference_parity/test_count_quantile_parity.py |
sp.tobit(...) |
| T2 | estimate, se | method=mle; vce=classical/cluster/robust; weights=none; censoring=left | tests/reference_parity/test_ldv_design_stata_parity.py |
sp.tobit(...) |
| T2 | estimate, se | method=mle; vce=cluster/robust; weights=set; censoring=left | tests/reference_parity/test_ldv_design_stata_parity.py |
sp.tobit(...) |
| T2 | estimate, se | method=mle; vce=classical; weights=none; censoring=two_sided | tests/reference_parity/test_ldv_design_stata_parity.py |
sp.tobit(...) |
| T2 | estimate, se | method=mle; vce=cluster; weights=set; censoring=two_sided | tests/reference_parity/test_ldv_design_stata_parity.py |
sp.tobit(...) |
| T2 | estimate, se | method=mle; vce=cluster/robust; weights=none/set; censoring=two_sided | tests/reference_parity/test_ldv_gaps_stata_parity.py |
sp.tobit(...) |
| T2 | estimate, se | method=mle; vce=classical/cluster/robust; weights=none; censoring=right | tests/reference_parity/test_ldv_gaps_stata_parity.py |
sp.tobit(...) |
| T2 | estimate | method=scls; vce=classical; weights=none; censoring=left | tests/reference_parity/test_binary_r2_and_scls_parity.py |
sp.tobit(...) |
vce is ignored for estimate: the maximum-likelihood point estimate is computed before, and independently of, the covariance estimator
xtabond¶
Dimensions: model in {difference, ah, system_h3_iv_both, system_h3_iv_diff, system_h3_no_iv, system_h2_iv_both, system_h2_iv_diff, system_h2_no_iv, system_iv_level, system_no_constant, h1}; steps in {onestep, twostep, beyond_two}; robust in {true, false}; cluster in {unit, coarser}; transform in {fd, fod}; collapse in {false, true}; gmm_window in {default, max_capped, min_raised, min_and_max}; regressors in {none, x, x_pre_window, x_endo_window, dummies, x_endo_window_dummies, other}; lags in {1, 2, 3plus}; panel in {gap_free, gapped}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se, diagnostic | model=difference; steps=onestep/twostep; robust=false/true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se, diagnostic | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=2; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=max_capped; regressors=none; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=min_raised; regressors=none; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se, diagnostic | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=true; gmm_window=default; regressors=none; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se, diagnostic | model=difference; steps=onestep/twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=2; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=2; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/r_parity/50_xtabond.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x_endo_window/x_pre_window; lags=2; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | diagnostic | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T4 | diagnostic | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none/x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se, diagnostic | model=difference; steps=onestep/twostep; robust=true; cluster=unit; transform=fod; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se, diagnostic | model=difference; steps=onestep; robust=true; cluster=coarser; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=ah; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none/x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep/twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=1; panel=gapped | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep; robust=true; cluster=unit; transform=fod; collapse=false; gmm_window=default; regressors=none; lags=1; panel=gapped | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gapped | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T2 | estimate, se | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=true; gmm_window=max_capped/min_and_max; regressors=none; lags=1; panel=gapped | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(...) |
| T1 | estimate | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_gmm_dynamic_panel_parity.py |
sp.xtabond(...) |
| S | estimate | model=difference; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_gmm_dynamic_panel_parity.py |
sp.xtabond(...) |
| T2 | estimate, se, diagnostic | model=system_h3_iv_both; steps=onestep/twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se, diagnostic | model=system_h3_iv_both; steps=twostep; robust=true; cluster=unit; transform=fd; collapse=true; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se, diagnostic | model=system_h3_iv_both; steps=onestep/twostep; robust=true; cluster=unit; transform=fod; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se, diagnostic | model=system_h3_iv_both; steps=onestep; robust=true; cluster=coarser; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se | model=system_h3_no_iv; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=1; panel=gapped | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T4 | diagnostic | model=system_h3_iv_both; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se | model=system_h2_no_iv; steps=onestep/twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se | model=system_h2_iv_diff; steps=onestep/twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se | model=system_h2_iv_diff; steps=onestep; robust=false; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se, diagnostic | model=system_h2_iv_both; steps=onestep; robust=false; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=dummies; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | se | model=system_h2_iv_both; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=dummies; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se | model=system_h2_iv_both; steps=twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=dummies; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se, diagnostic | model=system_h2_no_iv; steps=twostep; robust=false; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | se | model=system_h2_no_iv; steps=twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se | model=system_h2_iv_both; steps=twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=max_capped; regressors=x_endo_window_dummies; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.stata(...) |
robust is ignored for estimate: the coefficients are solved before, and independently of, the choice between the classical and the robust / Windmeijer variance (robust= only switches the reported VCE)
xtdpdsys¶
Dimensions: model in {system_h3_iv_both, system_h3_iv_diff, system_h3_no_iv, system_h2_iv_both, system_h2_iv_diff, system_h2_no_iv, system_iv_level, system_no_constant, h1}; steps in {onestep, twostep, beyond_two}; robust in {true, false}; cluster in {unit, coarser}; transform in {fd, fod}; collapse in {false, true}; gmm_window in {default, max_capped, min_raised, min_and_max}; regressors in {none, x, x_pre_window, x_endo_window, dummies, x_endo_window_dummies, other}; lags in {1, 2, 3plus}; panel in {gap_free, gapped}.
| Kind | Outputs | Configuration run | Artifact | Entry point |
|---|---|---|---|---|
| T2 | estimate, se, diagnostic | model=system_h3_iv_both; steps=onestep/twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se, diagnostic | model=system_h3_iv_both; steps=twostep; robust=true; cluster=unit; transform=fd; collapse=true; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se, diagnostic | model=system_h3_iv_both; steps=onestep/twostep; robust=true; cluster=unit; transform=fod; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se, diagnostic | model=system_h3_iv_both; steps=onestep; robust=true; cluster=coarser; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se | model=system_h3_no_iv; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=1; panel=gapped | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T4 | diagnostic | model=system_h3_iv_both; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtabond(method='system') |
| T2 | estimate, se | model=system_h2_no_iv; steps=onestep/twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se | model=system_h2_iv_diff; steps=onestep/twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se | model=system_h2_iv_diff; steps=onestep; robust=false; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se, diagnostic | model=system_h2_iv_both; steps=onestep; robust=false; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=dummies; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | se | model=system_h2_iv_both; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=dummies; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se | model=system_h2_iv_both; steps=twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=dummies; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se, diagnostic | model=system_h2_no_iv; steps=twostep; robust=false; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | se | model=system_h2_no_iv; steps=twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=none; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.xtdpdsys(...) |
| T2 | estimate, se | model=system_h2_iv_both; steps=twostep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=max_capped; regressors=x_endo_window_dummies; lags=2; panel=gap_free | tests/reference_parity/test_hansen_methods_stata_parity.py |
sp.stata(...) |
| T1 | estimate | model=system_h3_iv_both; steps=onestep; robust=true; cluster=unit; transform=fd; collapse=false; gmm_window=default; regressors=x; lags=1; panel=gap_free | tests/reference_parity/test_dynpanel_abdata_parity.py |
sp.xtdpdsys(...) |
robust is ignored for estimate: the coefficients are solved before, and independently of, the choice between the classical and the robust / Windmeijer variance (robust= only switches the reported VCE)
Option-level Stata fixtures¶
Fixtures under tests/stata_parity/option_parity/ pin option switches within an estimator and sit outside the Track A enumeration on purpose, so TIER_A_FIXTURE_LOCK.json does not hash them. The SHA-256 below is their lock: an edited fixture fails --check until this file is regenerated. A fixture read by no test fails the build.
| Fixture | Read by | SHA-256 (first 16) |
|---|---|---|
tests/stata_parity/option_parity/results/82_csdid_conventions_Stata.json |
tests/reference_parity/test_csdid_conventions_stata_parity.py |
c988134a90bb0dec |
tests/stata_parity/option_parity/results/83_sunab_control_cohort_Stata.json |
tests/reference_parity/test_sunab_control_cohort_parity.pytests/reference_parity/test_sunab_options_parity.py |
fd4d59285d8606fb |
tests/stata_parity/option_parity/results/84_bjs_fe_covariates_Stata.json |
tests/reference_parity/test_bjs_fe_covariates_parity.pytests/reference_parity/test_option_fixture_bindings.py |
eead3fb4a701b770 |
tests/stata_parity/option_parity/results/85_multiplegt_dyn_options_Stata.json |
tests/reference_parity/test_multiplegt_dyn_options_parity.py |
a6b6c27ad860d8a7 |
tests/stata_parity/option_parity/results/86_lprobust_Stata.json |
tests/reference_parity/test_lprobust_parity.py |
5dc6478d44596acd |
tests/stata_parity/option_parity/results/87_did_had_Stata.json |
tests/reference_parity/test_did_had_parity.py |
0f158aa295005c95 |
tests/stata_parity/option_parity/results/92_vce_menu_Stata.json |
tests/reference_parity/test_vce_menu_parity.py |
320c9f3720262c4f |
tests/stata_parity/option_parity/results/93_sunab_options_Stata.json |
tests/reference_parity/test_sunab_options_parity.py |
696642f7337dbc76 |
tests/stata_parity/option_parity/results/94_bjs_options_Stata.json |
tests/reference_parity/test_bjs_options_parity.py |
8f7d765f8a78ad27 |
tests/stata_parity/option_parity/results/95_rdrobust_comb_Stata.json |
tests/reference_parity/test_rdrobust_comb_parity.py |
a640f1fd03604042 |
tests/stata_parity/option_parity/results/96_csdid_options_Stata.json |
tests/reference_parity/test_csdid_options_stata_parity.py |
f54b8457546789eb |
tests/stata_parity/option_parity/results/97_dcdh_options_Stata.json |
tests/reference_parity/test_dcdh_option_values_stata_parity.py |
f26a2a96ef115c11 |
Stata translation holdout¶
A frozen corpus of 42 Stata commands and the numbers Stata 18 MP gives for the 36 that run, scored on five layers by tests/test_stata_translation_holdout.py. Hashed here so the corpus cannot drift towards what the translator already handles.
| File | SHA-256 (first 16) |
|---|---|
tests/stata_translation_holdout/corpus.json |
88e8f103d0d65361 |
tests/stata_translation_holdout/holdout_Stata.json |
4023297b3cd0b260 |
tests/stata_translation_holdout/holdout_cross.csv |
5eca4a3640048a41 |
tests/stata_translation_holdout/holdout_panel.csv |
f5f2b30439c32471 |
Inference reliability (Track B)¶
Reference evidence says an estimator reproduces another implementation. Whether its interval covers is a separate question, answered here from the committed Monte Carlo runs under tests/coverage_monte_carlo/results_b1000/. Every replication is in the denominator, failed ones included. MC SE is the Monte Carlo standard error of the rate; a rate within two of them of 0.95 is not distinguishable from nominal at this B.
| Design | B | Failed | Coverage | MC SE | Mean SE / MC SD | Within 2 MC SE of 0.95 |
|---|---|---|---|---|---|---|
| sp.regress (HC1) on RCT | 1000 | 0 | 0.952 | 0.0068 | 1.001 | yes |
| sp.regress 2x2 DiD | 1000 | 0 | 0.955 | 0.0066 | 1.026 | yes |
| sp.ivreg (HC1) on strong-Z IV | 1000 | 0 | 0.962 | 0.0060 | 0.984 | yes |
| sp.callaway_santanna simple ATT (staggered) | 1000 | 0 | 0.947 | 0.0071 | 1.009 | yes |
| sp.sun_abraham overall ATT (staggered) | 1000 | 0 | 0.950 | 0.0069 | 1.017 | yes |
| sp.panel two-way FE | 1000 | 0 | 0.948 | 0.0070 | 0.990 | yes |
| sp.fast.feols two-way FE (CR1 by unit) | 1000 | 0 | 0.955 | 0.0066 | 0.987 | yes |
| sp.rdrobust sharp (robust CI) | 1000 | 0 | 0.934 | 0.0079 | 0.982 | no |
| sp.sdid placebo (1 treated) | 1000 | 0 | 0.928 | 0.0082 | 0.992 | no |
| sp.ebalance (CIA, ATT) | 1000 | 0 | 0.945 | 0.0072 | 0.969 | yes |
| sp.causal_question(design='dml') IRM ATE | 1000 | 0 | 0.968 | 0.0056 | 1.045 | no |
| sp.dml(model='plr') theta | 1000 | 0 | 0.883 | 0.0102 | 0.885 | no |
| sp.causal_question(design='causal_forest') AIPW ATE | 1000 | 0 | 0.959 | 0.0063 | 1.036 | yes |
Designs built to break an assumption. The band is the range documented in advance for that design, not a pass mark for nominal coverage.
| Stress design | B | Coverage | MC SE | Documented band | Note |
|---|---|---|---|---|---|
| sp.ivreg (HC1) weak instrument (pi=0.10) | 1000 | 0.882 | 0.0102 | 0.85 to 0.95 | |
| sp.callaway_santanna heterogeneous timing+magnitude | 1000 | 0.954 | 0.0066 | 0.92 to 0.96 | |
| sp.causal_forest AIPW under overlap loss | 300 | 0.900 | 0.0173 | 0.85 to 0.99 | Capped at B=300 (wall-clock cap; AIPW IF dominates). |
| Design | B | Size at 5% | MC SE | Power by effect size |
|---|---|---|---|---|
| sp.regress (HC1) RCT | 1000 | 0.043 | 0.0064 | 0.0: 0.043, 0.1: 0.208, 0.2: 0.596, 0.3: 0.903 |
| sp.did 2x2 | 1000 | 0.024 | 0.0048 | 0.0: 0.024, 0.2: 0.291, 0.4: 0.871, 0.6: 0.996 |
| sp.ivreg strong-Z | 1000 | 0.046 | 0.0066 | 0.0: 0.046, 0.2: 0.453, 0.4: 0.935, 0.6: 0.996 |
| sp.rdrobust sharp | 500 | 0.076 | 0.0119 | 0.0: 0.076, 0.2: 0.404, 0.4: 0.888, 0.6: 1.000 |
| sp.panel two-way FE | 1000 | 0.052 | 0.0070 | 0.0: 0.052, 0.15: 0.231, 0.3: 0.652, 0.45: 0.954 |
| sp.callaway_santanna staggered | 300 | 0.050 | 0.0126 | 0.0: 0.050, 0.3: 0.777, 0.6: 1.000, 0.9: 1.000 |
| sp.ebalance (M-estimation SE) | 1000 | 0.055 | 0.0072 | 0.0: 0.055, 0.4: 1.000, 0.7: 1.000, 1.0: 1.000 |
Reliability studies¶
Simulation studies under tests/reliability/, each with its design fixed in the script before the first run. A row of a study is one method on one design; a fit that was refused counts in the denominator. The table gives, per study and method, how many designs land within two Monte Carlo standard errors of the nominal rate, and the design furthest from it. Every row is in docs/evidence_inventory.json; the reading of each study is in tests/reliability/README.md.
| Study | Method | Quantity | B | Designs | At nominal | Furthest from nominal |
|---|---|---|---|---|---|---|
dml_learners |
ols | coverage | 300 | 4 | 2 | 0.000 (shape=nonlinear, n=500) |
dml_learners |
lasso | coverage | 300 | 4 | 2 | 0.000 (shape=nonlinear, n=500) |
dml_learners |
rf | coverage | 300 | 4 | 1 | 0.433 (shape=nonlinear, n=500) |
dml_learners |
gbm | coverage | 300 | 4 | 0 | 0.867 (shape=nonlinear, n=500) |
dml_learners |
stacking | coverage | 300 | 4 | 2 | 0.727 (shape=nonlinear, n=500) |
extreme_weights_binary_iv |
classical | coverage | 2000 | 24 | 8 | 0.146 (model=glm, n=1000, sigma=2.0) |
extreme_weights_binary_iv |
robust | coverage | 2000 | 24 | 9 | 0.814 (model=probit, n=200, sigma=2.0) |
extreme_weights_fast |
iid | coverage | 2000 | 12 | 2 | 0.223 (model=fast_fepois, size=200, sigma=2.0) |
extreme_weights_fast |
hc1 | coverage | 2000 | 12 | 6 | 0.870 (model=fast_feols, size=50, sigma=2.0) |
extreme_weights_fast |
cr1 | coverage | 2000 | 12 | 5 | 0.793 (model=fast_feols, size=50, sigma=2.0) |
extreme_weights_fast |
classical | coverage | 2000 | 6 | 2 | 0.140 (model=nbreg, size=1000, sigma=2.0) |
extreme_weights_fast |
robust | coverage | 2000 | 6 | 2 | 0.841 (model=nbreg, size=200, sigma=2.0) |
extreme_weights_models |
classical | coverage | 2000 | 12 | 4 | 0.143 (model=poisson, size=1000, sigma=2.0) |
extreme_weights_models |
robust | coverage | 2000 | 12 | 6 | 0.840 (model=poisson, size=200, sigma=2.0) |
extreme_weights_models |
cluster | coverage | 2000 | 6 | 2 | 0.777 (model=panel_fe, size=50, sigma=2.0) |
extreme_weights |
classical | coverage | 2000 | 12 | 8 | 0.340 (errors=sampling, n=1000, sigma=2.0) |
extreme_weights |
hc1 | coverage | 2000 | 12 | 5 | 0.842 (errors=sampling, n=200, sigma=2.0) |
extreme_weights |
hc2 | coverage | 2000 | 12 | 6 | 0.895 (errors=sampling, n=200, sigma=2.0) |
extreme_weights |
hc3 | coverage | 2000 | 12 | 10 | 0.932 (errors=sampling, n=1000, sigma=2.0) |
few_clusters |
cr1 | rejection | 2000 | 29 | 7 | 0.749 (treated=1, G=40) |
few_clusters |
cr2 | rejection | 2000 | 16 | 4 | 0.234 (treated=two, sizes=balanced, G=40) |
few_clusters |
cr3 | rejection | 2000 | 22 | 12 | 0.170 (treated=two, sizes=balanced, G=40) |
few_clusters |
wild | rejection | 2000 | 16 | 3 | 0.126 (treated=half, sizes=unbalanced, G=40) |
few_clusters |
placebo | rejection | 2000 | 5 | 0 | 0.139 (treated=10, G=40) |
forest_split_evaluation |
own/AUTOC | rejection | 400 | 1 | 0 | 0.160 (model=tau = 0.3 + 0.0 z, N=150) |
forest_split_evaluation |
split_bjs/AUTOC | rejection | 400 | 1 | 0 | 0.005 (model=tau = 0.3 + 0.0 z, N=150) |
forest_split_evaluation |
split_forest/AUTOC | rejection | 400 | 1 | 0 | 0.005 (model=tau = 0.3 + 0.0 z, N=150) |
forest_split_evaluation |
own/QINI | rejection | 400 | 1 | 0 | 0.122 (model=tau = 0.3 + 0.0 z, N=150) |
forest_split_evaluation |
split_bjs/QINI | rejection | 400 | 1 | 0 | 0.000 (model=tau = 0.3 + 0.0 z, N=150) |
forest_split_evaluation |
split_forest/QINI | rejection | 400 | 1 | 0 | 0.000 (model=tau = 0.3 + 0.0 z, N=150) |
forest_split_evaluation |
split/gain | rejection | 400 | 1 | 0 | 0.000 (model=tau = 0.3 + 0.0 z, N=200) |
rate_cross_section |
rate_own_ranking | rejection | 400 | 1 | 0 | 0.360 (n=800) |
rate_cross_section |
rate_split | rejection | 100 | 1 | 0 | 0.000 (n=800) |
rd_mass_points |
adjust | coverage | 1000 | 10 | 6 | 0.021 (n=4000, support_per_side=5, 976 refused) |
rd_mass_points |
off | coverage | 1000 | 10 | 5 | 0.021 (n=4000, support_per_side=5, 976 refused) |
rd_mass_points |
cluster | coverage | 1000 | 8 | 0 | 0.001 (n=4000, support_per_side=5, 976 refused) |
unbalanced_panel |
cs | coverage | 1000 | 8 | 5 | 0.023 (pattern=attrit_outcome, N=400) |
unbalanced_panel |
cs_rcs | coverage | 1000 | 8 | 4 | 0.000 (pattern=attrit_outcome, N=400) |
unbalanced_panel |
bjs | coverage | 1000 | 8 | 5 | 0.000 (pattern=attrit_outcome, N=400) |
unbalanced_panel |
twfe | coverage | 1000 | 8 | 2 | 0.000 (pattern=attrit_outcome, N=400) |
Inputs those do-files read (the other fixtures use tests/orig_parity/data/02_mpdta_original.csv):
| Input | SHA-256 (first 16) |
|---|---|
tests/stata_parity/option_parity/data_85_dcdh_switch.csv |
776bafc6c4c8e2f4 |
tests/stata_parity/option_parity/data_86_lprobust.csv |
895c4205c6d1012b |
tests/stata_parity/option_parity/data_87_did_had.csv |
7609daa994c6aca4 |
tests/stata_parity/option_parity/data_94_bjs_options.csv |
38192ebdc07262fc |
tests/stata_parity/option_parity/data_96_csdid_unbalanced.csv |
e63036296fd3fcb1 |
tests/stata_parity/option_parity/data_97_dcdh_options.csv |
dc79c9f35475ab39 |