Skip to content

Releases: igerber/diff-diff

v3.6.2

Choose a tag to compare

@igerber igerber released this 03 Jul 20:49
bb31d8a

What's Changed

  • feat(efficient_did): survey-weighted Silverman bandwidth in conditional Omega* by @igerber in #594
  • feat(had): cluster-robust SE on the continuous paths (Phase 2a) by @igerber in #596
  • ci: SHA-pin all GitHub Actions and add CODEOWNERS (supply-chain hardening) by @igerber in #595
  • Add LP-DiD launch carousel (local-projections crossover narrative) by @igerber in #597
  • fix: define zero-column rank detection contract by @shawcharles in #578
  • feat(synthetic_control): split cv-infeasible from failed in placebo/LOO diagnostics by @igerber in #598
  • bench: FE-absorption benchmark lane with BEFORE baselines + pyfixest yardstick (scenarios 7-13) by @igerber in #600
  • feat(diagnostic_report): register SpilloverDiDResults routing by @igerber in #599
  • perf: factorize-once + bincount MAP demeaning, max_iter 10k parity, FE-spanned regressor guard by @igerber in #601
  • perf(rust): compiled MAP demeaning kernel - rayon across columns, 1.4-2.8x on FE-absorption workloads by @igerber in #603
  • refactor(survey): consolidate panel-to-unit collapse (ContinuousDiD/EfficientDiD) by @igerber in #602
  • docs: clarify DiD predict support contract by @shawcharles in #580
  • docs(paper): finalize JOSS submission - 20 estimators, required sections, draft-pdf CI by @igerber in #604
  • perf(utils): opt-in chunked demean_map dispatch + corrected solver-phase memory attribution by @igerber in #605
  • perf(linalg): slim solve_ols marshalling - 15.3->7.8 GB rust-side footprint, -21% firm-panel fits, outputs preserved by @igerber in #607
  • feat(synthetic_control): ADH-2015 §4 tail diagnostics (regression_weights + sparse_synthetic_control) by @igerber in #608
  • Bump version to 3.6.2 by @igerber in #609

Full Changelog: v3.6.1...v3.6.2

v3.6.1

Choose a tag to compare

@igerber igerber released this 01 Jul 13:18
2bb4be9

What's Changed

  • docs: align SciPy lower bound with package metadata by @shawcharles in #572
  • Add LPDiD R-parity validation harness (Dube et al. 2025), Phase B2 by @igerber in #583
  • feat(staggered): materialize non-estimable (g,t) cells as NaN in CallawaySantAnna by @igerber in #582
  • Add LPDiD non-absorbing treatment (entry-effect estimands), Phase C1 by @igerber in #584
  • fix: surface BusinessReport appendix render failures by @shawcharles in #574
  • feat(estimators): iterative alternating-projection demeaning for N-way absorbed FE by @igerber in #586
  • Add LPDiD non-absorbing R-parity (independent feols Eq.12/13), Phase C2 by @igerber in #587
  • Add LPDiD complex-survey-design support (Phase D1) by @igerber in #590
  • docs(survey): waive zero-weight-PSU SE-invariance item; lock Lumley full-design convention by @igerber in #589
  • Add TROP non-absorbing (on/off) treatment support (opt-in, local method) by @igerber in #592
  • Add LPDiD complex-survey R-parity validation vs survey::svyglm (Phase D2) by @igerber in #591
  • Release 3.6.1 by @igerber in #593

New Contributors

Full Changelog: v3.6.0...v3.6.1

v3.6.0

Choose a tag to compare

@igerber igerber released this 29 Jun 12:50
96c6e61

What's Changed

  • chore(deps): bump pyo3 + numpy to 0.29 in /rust (RUSTSEC-2026-0176/0177) by @igerber in #548
  • test: add Tutorial 24 drift guard (staggered-vs-collapsed power claims) by @igerber in #549
  • chore(deps): bump actions/checkout from 6 to 7 by @igerber in #550
  • chore(deps): bump rust blas-src from 0.10 to 0.14 by @igerber in #551
  • docs(methodology): add Bertrand-Duflo-Mullainathan (2004) paper review by @igerber in #553
  • ci: pre-merge guard for the PyPI release build path (+ CHANGELOG fix) by @igerber in #552
  • refactor: extract shared TROP bootstrap resampling loop by @igerber in #554
  • feat(diagnostics): PlaceboTests methodology validation (PR-B) — exact RI p-value + R parity by @igerber in #555
  • perf(efficient-did): cache polynomial sieve basis across DR nuisance fits by @igerber in #556
  • docs(methodology): Binder (1983) survey TSL variance paper review by @igerber in #557
  • docs(todo): reorganize into Actionable / Deferred / Reference buckets by @igerber in #559
  • test(survey): validate Survey Data Support methodology + promote to Complete by @igerber in #558
  • docs(roadmap): make ROADMAP forward-looking; drop stale present-state sections by @igerber in #560
  • perf(callaway-santanna): chunk multiplier-bootstrap weight generation to bound peak memory by @igerber in #561
  • perf(imputation): cache untreated-projection factorization per fit (#141) by @igerber in #562
  • docs(paper): refresh JOSS paper for current library and submission requirements by @igerber in #564
  • perf(efficient-did, had): chunk multiplier-bootstrap weight generation to bound peak memory by @igerber in #563
  • perf(linalg): compute hc2_bm CR2 sandwich once, not twice (#475) by @igerber in #565
  • perf(within-transform): drop the redundant full-frame copy in within_transform by @igerber in #567
  • perf(linalg,mpd): compute MPD cluster+hc2_bm CR2 precomputes once by @igerber in #566
  • docs(methodology): add LP-DiD (Dube et al. 2025) paper review and registry entry by @igerber in #568
  • bench(memory): durable peak-RSS benchmark + docs for the memory-scaling work by @igerber in #569
  • fix(staggered): scale-equilibrate CS / StaggeredTripleDiff covariate OR fits by @igerber in #570
  • Add LPDiD (Local Projections DiD) estimator (Dube et al. 2025) by @igerber in #575
  • fix(linalg): rank-guard structural (non-covariate) matrix inverses by @igerber in #576
  • Release 3.6.0 by @igerber in #581

Full Changelog: v3.5.3...v3.6.0

v3.5.3

Choose a tag to compare

@igerber igerber released this 25 Jun 12:21
1cc73bf

What's Changed

  • fix: clamp negative vcov diagonal in LinearRegression SE (no NaN SE for degenerate coefs) by @igerber in #542
  • docs: Gardner (2022) paper review — TwoStageDiD (PR-A) by @igerber in #539
  • Add synthetic control tutorial + generate_synthetic_control_data generator by @igerber in #540
  • fix: route TripleDifference power to panel DGP when n_periods > 2 by @igerber in #544
  • TwoStageDiD methodology validation (PR-B): did2s parity + exact GMM variance by @igerber in #545
  • Fix wild cluster bootstrap p-value / CI inconsistency (WCR + test inversion, #543) by @igerber in #546
  • Release v3.5.3 by @igerber in #547

Full Changelog: v3.5.2...v3.5.3

v3.5.2

Choose a tag to compare

@igerber igerber released this 08 Jun 15:25
30c2cb9

What's Changed

  • SyntheticControl: confidence sets by test inversion (Firpo-Possebom 2018, PR-B) by @igerber in #527
  • test: pin AI-review workflow Codex-action contract by @igerber in #528
  • docs: Borusyak, Jaravel & Spiess (2024) paper review — ImputationDiD (PR-A) by @igerber in #529
  • SyntheticControl: conformal inference (Chernozhukov-Wüthrich-Zhu 2021) by @igerber in #530
  • refactor: rename SyntheticDiDResults.placebo_effects → variance_effects (deprecated alias) by @igerber in #532
  • docs: add CBWSDID (Ustyuzhanin 2026) paper review by @igerber in #531
  • ImputationDiD methodology validation (PR-B): exact FE variance + unit-clustered Eq.8 + R parity by @igerber in #533
  • Add CBWSDID covariate balancing to StackedDiD (Ustyuzhanin 2026) by @igerber in #534
  • docs: correct stale R-comparison-tests TODO row (R not in CI) by @igerber in #535
  • Release v3.5.2: version bump + CHANGELOG reconciliation by @igerber in #536

Full Changelog: v3.5.1...v3.5.2

v3.5.1

Choose a tag to compare

@igerber igerber released this 02 Jun 13:07
302d03f

What's Changed

  • EfficientDiD methodology review (PR-A): Chen-Sant'Anna-Xie (2025) paper-review fidelity artifact by @igerber in #515
  • SyntheticControl: leave-one-out + in-time placebo (ADH 2015 §4) by @igerber in #514
  • docs: close TODO L160 (bread_inv vcov reuse) as not bit-identically achievable by @igerber in #517
  • Reject covariate names colliding with reserved structural terms (DifferenceInDifferences, MultiPeriodDiD, TwoWayFixedEffects) by @igerber in #518
  • Upgrade AI PR reviewer model: gpt-5.4 → gpt-5.5 (CI + local) by @igerber in #522
  • chore: add CI integrity check for docs/doc-deps.yaml by @igerber in #519
  • SyntheticControl: cv (out-of-sample) + inverse-variance V-selection (ADH 2015 / Abadie 2021) by @igerber in #523
  • EfficientDiD methodology validation (PR-B): sieve outcome-regression upgrade + Verified Components by @igerber in #521
  • docs: Firpo & Possebom (2018) paper review — SCM CI by test inversion (PR-A) by @igerber in #524
  • HAD fit(): extensive-margin warning + covariates= NotImplementedError by @igerber in #525
  • Bump version to 3.5.1 by @igerber in #526

Full Changelog: v3.5.0...v3.5.1

v3.5.0

Choose a tag to compare

@igerber igerber released this 01 Jun 11:43
57c7f28

What's Changed

  • efficient-did: thread vcov_type as narrow {hc1} contract per Chen-Sant'Anna-Xie 2025 (Phase 1b #4) by @igerber in #495
  • ConleySpatialHAC methodology-review-tracker promotion + Bertanha-Imbens 2014 citation correction by @igerber in #496
  • synthetic control: PR-A paper reviews (ADH 2010/2015, Abadie 2021 JEL, CWZ 2021) by @igerber in #497
  • StaggeredTripleDifference PR-A: Ortiz-Villavicencio & Sant'Anna (2025) paper review by @igerber in #499
  • TwoStageDiD: thread vcov_type as narrow {hc1} contract (Phase 1b interstitial #5, final) by @igerber in #498
  • chore: prune completed-vcov-initiative leftovers + audit-verified stale TODO rows by @igerber in #502
  • linalg: scale-invariant rank detection + solve; fix rank-0 IndexError (both backends) by @igerber in #500
  • Add SyntheticControl estimator (classic SCM, Abadie-Diamond-Hainmueller 2010) — PR-1 core by @igerber in #501
  • StaggeredTripleDifference methodology validation + opt-in Eq-4.14 overall ATT by @igerber in #504
  • Right-size pure-Python CI test runtime (SyntheticControl regression + SDID safe trims) by @igerber in #505
  • Thread vcov_type="conley" through SunAbraham + WooldridgeDiD (defer StackedDiD) by @igerber in #503
  • PowerAnalysis methodology review (PR-A): Bloom 1995 + Burlig 2020 source audits by @igerber in #506
  • ci: only re-run gated matrices on ready-for-ci label transitions by @igerber in #509
  • tutorial: staggered rollout vs collapsed 2×2 — a power-analysis decision guide by @igerber in #508
  • SyntheticControl: in-space placebo permutation inference + reporting-stack integration by @igerber in #511
  • Rank-guarded generalized inverse for DR/OR influence-function SEs (CallawaySantAnna, TripleDifference, StaggeredTripleDifference) by @igerber in #507
  • PowerAnalysis methodology review (PR-B): Burlig Eq.2 equicorrelated panel variance + tracker Complete by @igerber in #512
  • WooldridgeDiD: outcome-fit hint for OLS on binary/count outcomes by @igerber in #513
  • reviewer-eval: add a minimal Codex-reviewer A/B comparison harness by @igerber in #510
  • Bump version to 3.5.0 by @igerber in #516

Full Changelog: v3.4.2...v3.5.0

v3.4.2

Choose a tag to compare

@igerber igerber released this 26 May 10:20
1c8ded2

What's Changed

  • PR-A: DCDH paper reviews (2020 AER + 2022 NBER WP) by @igerber in #478
  • Thread vcov_type through StackedDiD (Phase 1b 2/8) by @igerber in #479
  • ChaisemartinDHaultfoeuille (DCDH) methodology-review-tracker promotion: In Progress -> Complete by @igerber in #481
  • SpilloverDiD Wave E.3: SurveyDesign.subpopulation() full-design retention by @igerber in #482
  • wooldridge: thread vcov_type through OLS path (Phase 1b 3/8) by @igerber in #483
  • PR-A: WooldridgeDiD primary-source review (Wooldridge 2025 EmpEcon) by @igerber in #484
  • TwoStageDiD Wave E.3 parity: always-treated full-design retention by @igerber in #485
  • PR-B: WooldridgeDiD tracker promotion + methodology bundle by @igerber in #486
  • callaway-santanna: fix cluster= silent no-op + narrow vcov_type contract by @igerber in #487
  • Phase 1b interstitial #2: TripleDifference vcov_type narrow contract by @igerber in #488
  • spillover-conley: dedup serial Bartlett kernel + PSD guard helpers by @igerber in #489
  • LinkedIn launch carousel for SpilloverDiD (Butts 2021) by @igerber in #490
  • trop: methodology-review tracker promotion + test_methodology_trop.py by @igerber in #491
  • T23 SpilloverDiD tutorial: TVA-style ~40% understatement walkthrough by @igerber in #493
  • ImputationDiD: thread vcov_type as narrow {hc1} contract per BJS Theorem 3 (Phase 1b interstitial #3) by @igerber in #492
  • Bump version to 3.4.2 by @igerber in #494

Full Changelog: v3.4.1...v3.4.2

v3.4.1

Choose a tag to compare

@igerber igerber released this 21 May 15:04
0c82547

What's Changed

  • Lift Gate 1: HC2/HC2-BM for TwoWayFixedEffects via full-dummy auto-route by @igerber in #469
  • PR-C: PreTrendsPower R pretrends parity goldens at commit 122731d082 by @igerber in #471
  • SpilloverDiD survey_design= on HC1/CR1 via Binder TSL (Wave E.1) by @igerber in #468
  • Thread vcov_type through SunAbraham (Phase 1b 1/8) by @igerber in #472
  • SpilloverDiD vcov_type='conley' + survey_design= via panel-aware stratified-Conley sandwich on per-period PSU totals (Wave E.2) by @igerber in #474
  • HeterogeneousAdoptionDiD methodology-review-tracker promotion: In Progress -> Complete by @igerber in #473
  • ContinuousDiD methodology-review-tracker promotion: In Progress -> Complete by @igerber in #476
  • Lift hc2_bm + weights gates via clubSandwich WLS-CR2 port by @igerber in #475
  • SpilloverDiD conley + survey + lag>0 via panel-block composition (Wave E.2 follow-up) by @igerber in #477
  • Release 3.4.1: SpilloverDiD survey + Conley lifts, SunAbraham vcov_type, WLS-CR2 BM, methodology-tracker promotions by @igerber in #480

Full Changelog: v3.4.0...v3.4.1

v3.4.0

Choose a tag to compare

@igerber igerber released this 19 May 15:51
12acbdf

What's Changed

  • TODO.md cleanup: drop SHIPPED rows, refresh stale refs, add Tier A/B/C/D backlog by @igerber in #447
  • dCDH heterogeneity: per-path + global placebo predict_het R-parity + df threading by @igerber in #449
  • Refresh METHODOLOGY_REVIEW.md to reflect current estimator catalog by @igerber in #448
  • Add Goodman-Bacon (2021) paper review by @igerber in #451
  • Regenerate clubsandwich_cr2_golden.json from authoritative R clubSandwich by @igerber in #450
  • SpilloverDiD: ring-indicator spillover-aware DiD (Butts 2021) by @igerber in #446
  • dCDH heterogeneity wrap-up: post-drop rank df + negative-baseline path test by @igerber in #452
  • Wave 3 estimator observability: HonestDiD M=0 test, Wooldridge canonical-link warning, ARP vertex diagnostic by @igerber in #453
  • BaconDecomposition methodology audit (Goodman-Bacon 2021) by @igerber in #454
  • Wave 4 Tier A drain: EfficientDiD anticipation note, generate_ddd_panel_data, TROP data-setup helper by @igerber in #455
  • BaconDecomposition R parity goldens by @igerber in #457
  • SpilloverDiD: event_study=True per-event-time × ring decomposition (Wave C) by @igerber in #456
  • DiD-absorb HC2/HC2-BM: auto-route to fixed_effects internally by @igerber in #458
  • Lift MultiPeriodDiD-absorb HC2/HC2-BM gate via auto-route by @igerber in #459
  • SpilloverDiD: Gardner GMM first-stage correction (Wave D) by @igerber in #462
  • PreTrendsPower: Roth (2022) paper review + silent-failure guard by @igerber in #463
  • Lift Gate 6: cluster-aware CR2 Bell-McCaffrey contrast DOF for MultiPeriodDiD avg_att by @igerber in #465
  • Surface agent_workflow() + curated dir() for LLM discoverability (#460) by @igerber in #464
  • Add agent-discoverability contract test (#461) by @igerber in #467
  • PreTrendsPower implementation audit (Roth 2022 — PR-B) by @igerber in #466
  • Release 3.4.0: SpilloverDiD (Butts 2021), Bacon R-parity goldens, agent-discoverability surface, PreTrendsPower R-parity audit by @igerber in #470

Full Changelog: v3.3.3...v3.4.0