Skip to content

Commit dbad4cd

Browse files
igerberclaude
andcommitted
Bump version to 2.9.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 54bea41 commit dbad4cd

5 files changed

Lines changed: 20 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [2.9.0] - 2026-04-04
11+
1012
### Added
1113
- **WooldridgeDiD (ETWFE)** estimator — Extended Two-Way Fixed Effects from Wooldridge (2025, 2023). Supports OLS, logit, and Poisson QMLE paths with ASF-based ATT and delta-method SEs. Four aggregation types (simple, group, calendar, event) matching Stata `jwdid_estat`. Alias: `ETWFE`. (PR #216, thanks @wenddymacro)
14+
- **EfficientDiD survey + covariates** — doubly robust covariate path now threads survey weights through all four nuisance estimation stages (outcome regression, propensity ratio sieve, inverse propensity sieve, kernel-smoothed conditional Omega*). Previously raised `NotImplementedError`.
1215
- **Survey real-data validation** (Phase 9) — 15 cross-validation tests against R's `survey` package using three real federal survey datasets:
1316
- **API** (R `survey` package): TSL variance with strata, FPC, subpopulations, covariates, and Fay's BRR replicates
1417
- **NHANES** (CDC/NCHS): TSL variance with strata + PSU + nest=TRUE, validating the ACA young adult coverage provision DiD
1518
- **RECS 2020** (U.S. EIA): JK1 replicate weight variance with 60 pre-computed replicate columns
1619
- ATT, SE, df, and CI match R to machine precision (< 1e-10) where directly comparable; known deviations documented in REGISTRY.md (TWFE SE differs due to unit FE absorption; subpopulation df differs due to strata preservation)
20+
- **Label-gated CI** — test workflows now require `ready-for-ci` label before running, reducing wasted CI during AI review rounds. AI review workflow always runs.
21+
- **Documentation dependency map** (`docs/doc-deps.yaml`) — maps source files to impacted documentation. New `/docs-impact` skill flags which docs need updating when source files change.
22+
23+
### Changed
24+
- WooldridgeDiD: full interacted covariate basis (D_g × X, f_t × X) for OLS path
25+
- `/submit-pr`, `/push-pr-update`, `/pre-merge-check`, `/docs-check` skills updated for label-gated CI and doc-deps workflow
26+
27+
### Fixed
28+
- Fix WooldridgeDiD OLS unbalanced demeaning and nonlinear never-treated identification
29+
- Fix WooldridgeDiD Poisson dropped-cell bug and anticipation propagation
30+
- Fix EfficientDiD IF-scale mismatch in survey aggregation and zero-weight never-treated guard
31+
- Fix bootstrap clustering and delta-method reduced space in WooldridgeDiD
1732

1833
## [2.8.4] - 2026-04-04
1934

@@ -1137,6 +1152,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11371152
- `to_dict()` and `to_dataframe()` export methods
11381153
- `is_significant` and `significance_stars` properties
11391154

1155+
[2.9.0]: https://github.com/igerber/diff-diff/compare/v2.8.4...v2.9.0
11401156
[2.8.4]: https://github.com/igerber/diff-diff/compare/v2.8.3...v2.8.4
11411157
[2.8.3]: https://github.com/igerber/diff-diff/compare/v2.8.2...v2.8.3
11421158
[2.8.2]: https://github.com/igerber/diff-diff/compare/v2.8.1...v2.8.2

diff_diff/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@
214214
EDiD = EfficientDiD
215215
ETWFE = WooldridgeDiD
216216

217-
__version__ = "2.8.4"
217+
__version__ = "2.9.0"
218218
__all__ = [
219219
# Estimators
220220
"DifferenceInDifferences",

docs/llms-full.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> A Python library for Difference-in-Differences causal inference analysis. Provides sklearn-like estimators with statsmodels-style output for econometric analysis.
44

5-
- Version: 2.8.4
5+
- Version: 2.9.0
66
- Repository: https://github.com/igerber/diff-diff
77
- License: MIT
88
- Dependencies: numpy, pandas, scipy (no statsmodels dependency)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "maturin"
44

55
[project]
66
name = "diff-diff"
7-
version = "2.8.4"
7+
version = "2.9.0"
88
description = "Difference-in-Differences causal inference with sklearn-like API. Callaway-Sant'Anna, Synthetic DiD, Honest DiD, event studies, parallel trends."
99
readme = "README.md"
1010
license = "MIT"

rust/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "diff_diff_rust"
3-
version = "2.8.4"
3+
version = "2.9.0"
44
edition = "2021"
55
description = "Rust backend for diff-diff DiD library"
66
license = "MIT"

0 commit comments

Comments
 (0)