feat: add LWDiD estimator (Lee & Wooldridge 2025, 2026)#588
Open
gorgeousfish wants to merge 1 commit into
Open
feat: add LWDiD estimator (Lee & Wooldridge 2025, 2026)#588gorgeousfish wants to merge 1 commit into
gorgeousfish wants to merge 1 commit into
Conversation
Native implementation of rolling-transformation DiD: - Transformations: demean, detrend, demeanq, detrendq - Estimation: RA, IPW, IPWRA, PSM - Inference: classical, HC0-HC4, cluster-robust, t-distribution - Designs: common timing + staggered adoption - Advanced: wild cluster bootstrap, randomization inference - Diagnostics: parallel trends, sensitivity, clustering - Visualization: cohort trends, event study, sensitivity plots Numerical equivalence validated against lwdid-py (tolerance ≤1e-10 for RA paths) and paper Tables 3-4 (LW 2026) reproduced exactly. Zero new runtime dependencies (uses existing numpy/pandas/scipy). References: - Lee, S.J. & Wooldridge, J.M. (2025). SSRN 4516518. - Lee, S.J. & Wooldridge, J.M. (2026). SSRN 5325686.
9712477 to
8c5ccce
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds native support for the Lee & Wooldridge (2025, 2026) rolling-transformation difference-in-differences method. The approach works by applying unit-specific time-series transformations (demeaning or detrending) to panel outcomes before treatment, converting the panel DiD problem into a standard cross-sectional one. Once transformed, any treatment-effect estimator — regression adjustment, inverse probability weighting, doubly robust, or propensity-score matching — can be applied directly to the cross-section. The method handles both common-timing and staggered-adoption designs with flexible control-group selection.
The implementation lives entirely within
diff_diff/lwdid*.py(9 modules) and introduces zero new runtime dependencies — it reuses the existingsolve_ols,solve_logit, andsafe_inferenceinfrastructure. The IPW and IPWRA standard errors use the full semiparametric influence function with propensity-score and outcome-model correction terms, matching the variance formula in the authors' Stata package.Numerical correctness has been validated against the reference lwdid Python package across all supported configurations. The RA path achieves machine-precision agreement (≤1e-10), and IPW/IPWRA paths agree to within 1%. The California Proposition 99 results from Table 3 of LW (2026) are reproduced exactly: demeaning ATT = −0.422, detrending ATT = −0.227.
Beyond core estimation, the PR includes wild cluster bootstrap inference (Rademacher/Mammen/Webb), Fisher randomization inference, parallel-trends pre-testing, sensitivity analysis, clustering-level diagnostics, and visualization methods. A tutorial notebook walks through the full workflow on the papers' empirical datasets (California smoking data, Castle Doctrine laws, Walmart county-level entry).
Methodology references (required if estimator / math changes)
Validation
docs/tutorials/26_lwdid.ipynb) reproduces Tables 3–4 from LW (2026) on California Proposition 99 data. ATT values match published results to 0.04% precision.Security / privacy