Skip to content

Commit aec5671

Browse files
authored
Merge pull request #235 from igerber/release/v2.7.5
Bump version to 2.7.5
2 parents c9914bc + 1e911e8 commit aec5671

5 files changed

Lines changed: 29 additions & 10 deletions

File tree

CHANGELOG.md

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

88
## [Unreleased]
99

10+
## [2.7.5] - 2026-03-23
11+
1012
### Added
11-
- Refactor `visualization.py` into `visualization/` subpackage for better organization
12-
- Add `plot_synth_weights()` — bar chart of Synthetic DiD unit/time weights
13-
- Add `plot_staircase()` — treatment adoption visualization for staggered designs
14-
- Add `plot_dose_response()` — dose-response curve for Continuous DiD
15-
- Add `plot_group_time_heatmap()` — heatmap of ATT(g,t) from staggered estimators
16-
- Add interactive plotly backend (`backend="plotly"`) for all visualization functions
13+
- **Phase 4 survey support** for ImputationDiD, TwoStageDiD, and CallawaySantAnna estimators
14+
- ImputationDiD/TwoStageDiD: analytical survey inference with weights, strata, and PSU (FPC not supported; bootstrap+survey deferred)
15+
- CallawaySantAnna: weights-only analytical IF/WIF inference matching R `did::wif()` (strata/PSU/FPC deferred)
16+
- Survey-aware aggregation for group-time, event-study, and overall ATT
17+
- **EfficientDiD enhancements**: doubly robust covariates path, sieve inverse propensity (Eq 3.12), conditional Omega*
18+
- **Cluster-robust SEs** for EfficientDiD with last-cohort control and Hausman pretest
19+
- **Enhanced visualizations**: synth weights, staircase, dose-response, group-time heatmap, plotly backend
20+
- **Local AI review skill** (`/ai-review-local`) with Responses API, delta-diff re-review, and cost visibility
1721
- Add `plotly` optional dependency group (`pip install diff-diff[plotly]`)
1822

23+
### Changed
24+
- Migrate AI local review from Chat Completions to Responses API
25+
- Split TROP estimator into mixin modules (`trop_local.py`, `trop_global.py`) for maintainability
26+
- Refactor `visualization.py` into `visualization/` subpackage
27+
- Improve review script: full-file context, content-first parsing, tiered matching, fingerprint stability
28+
29+
### Fixed
30+
- Fix CallawaySantAnna reg+cov control IF normalization and survey df calculation
31+
- Fix TripleDifference TSL double-weighting and RA nuisance linearization with survey weights
32+
- Fix ContinuousDiD bread normalization, fweight TSL scaling, and weighted-mass IF linearization
33+
- Fix BaconDecomposition exact-weight survey unit_share and empty-cell guard
34+
- Fix SunAbraham survey weight floor in overall ATT aggregation
35+
- Fix plotly event study for non-numeric periods, heatmap masking, color parser
36+
1937
## [2.7.4] - 2026-03-21
2038

2139
### Added
@@ -960,6 +978,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
960978
- `to_dict()` and `to_dataframe()` export methods
961979
- `is_significant` and `significance_stars` properties
962980

981+
[2.7.5]: https://github.com/igerber/diff-diff/compare/v2.7.4...v2.7.5
963982
[2.7.4]: https://github.com/igerber/diff-diff/compare/v2.7.3...v2.7.4
964983
[2.7.3]: https://github.com/igerber/diff-diff/compare/v2.7.2...v2.7.3
965984
[2.7.2]: https://github.com/igerber/diff-diff/compare/v2.7.1...v2.7.2

diff_diff/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@
191191
Bacon = BaconDecomposition
192192
EDiD = EfficientDiD
193193

194-
__version__ = "2.7.4"
194+
__version__ = "2.7.5"
195195
__all__ = [
196196
# Estimators
197197
"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.7.4
5+
- Version: 2.7.5
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.7.4"
7+
version = "2.7.5"
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.7.4"
3+
version = "2.7.5"
44
edition = "2021"
55
description = "Rust backend for diff-diff DiD library"
66
license = "MIT"

0 commit comments

Comments
 (0)