You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rewrite Hausman pretest to ES(e) per Theorem A.1, guard cluster+survey
Address rerun-3 review findings:
P1 fixes:
- Hausman pretest now aggregates to post-treatment event-study ES(e)
before computing test statistic, matching Theorem A.1 (was using raw
(g,t) cells including pre-treatment placebos)
- Raise NotImplementedError when both cluster and survey_design are set
(cluster was silently ignored under survey TSL dispatch)
- Add clustered bootstrap+aggregate='all' test covering bootstrap-updated
event-study and group effect SEs
P2: Update REGISTRY.md Hausman note to describe ES(e) aggregation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/methodology/REGISTRY.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -680,7 +680,7 @@ where `q_{g,e} = pi_g / sum_{g' in G_{trt,e}} pi_{g'}`.
680
680
-**Note:** EfficientDiD bootstrap with survey weights deferred to Phase 5
681
681
-**Note:** EfficientDiD covariates (DR path) with survey weights deferred — the doubly robust nuisance estimation does not yet thread survey weights through sieve/kernel steps
682
682
-**Note:** Cluster-robust SEs use the standard Liang-Zeger clustered sandwich estimator applied to EIF values: aggregate EIF within clusters, center, and compute variance with G/(G-1) small-sample correction. Cluster bootstrap generates multiplier weights at the cluster level (all units in a cluster share the same weight). Analytical clustered SEs are the default when `cluster` is set; cluster bootstrap is opt-in via `n_bootstrap > 0`.
683
-
-**Note:** Hausman pretest uses the full cross-(g,t) covariance matrix from EIF values (Theorem A.1), not a diagonal approximation. The variance-difference matrix V = Cov(ATT_post) - Cov(ATT_all) is inverted via Moore-Penrose pseudoinverse to handle finite-sample non-positive-definiteness. Effective rank of V (number of positive eigenvalues) is used as degrees of freedom. Substantially negative eigenvalues trigger a warning.
683
+
-**Note:** Hausman pretest operates on the post-treatment event-study vector ES(e) per Theorem A.1. Both PT-All and PT-Post fits are aggregated to ES(e) using cohort-size weights before computing the test statistic H = delta' V^{-1} delta where delta = ES_post - ES_all and V = Cov(ES_post) - Cov(ES_all). Covariance is computed from aggregated ES(e)-level EIF values. The variance-difference matrix V is inverted via Moore-Penrose pseudoinverse to handle finite-sample non-positive-definiteness. Effective rank of V (number of positive eigenvalues) is used as degrees of freedom.
684
684
-**Note:** Last-cohort-as-control (`control_group="last_cohort"`) reclassifies the latest treatment cohort as pseudo-never-treated and drops time periods at/after that cohort's treatment start. This is distinct from CallawaySantAnna's `not_yet_treated` option which dynamically selects not-yet-treated units per (g,t) pair.
0 commit comments