Skip to content

Commit 8aaed67

Browse files
authored
Merge pull request #158 from igerber/release/v2.4.0
Bump version to 2.4.0
2 parents c7bd27c + 9521f38 commit 8aaed67

4 files changed

Lines changed: 24 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2.4.0] - 2026-02-16
9+
10+
### Added
11+
- **Gardner (2022) Two-Stage DiD estimator** (`TwoStageDiD`)
12+
- Two-stage estimator: (1) estimate unit+time FE on untreated obs, (2) regress residualized outcomes on treatment indicators
13+
- `TwoStageDiDResults` with overall ATT, event study, group effects, per-observation treatment effects
14+
- `TwoStageBootstrapResults` for multiplier bootstrap inference on GMM influence function
15+
- `two_stage_did()` convenience function for quick estimation
16+
- Point estimates identical to ImputationDiD; different variance estimator (GMM sandwich vs. conservative)
17+
- No finite-sample adjustments (raw asymptotic sandwich, matching R `did2s`)
18+
- Proposition 5 detection for unidentified long-run horizons without never-treated units
19+
20+
### Changed
21+
- Workflow improvements to reduce PR review rounds
22+
23+
### Fixed
24+
- Zero-observation horizons/cohorts producing se=0 instead of NaN in TwoStageDiD
25+
- Edge case fixes for TwoStageDiD (PR review feedback)
26+
- Grep PCRE patterns updated to use POSIX character classes
27+
828
## [2.3.2] - 2026-02-16
929

1030
### Added
@@ -719,6 +739,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
719739
- `to_dict()` and `to_dataframe()` export methods
720740
- `is_significant` and `significance_stars` properties
721741

742+
[2.4.0]: https://github.com/igerber/diff-diff/compare/v2.3.2...v2.4.0
722743
[2.3.2]: https://github.com/igerber/diff-diff/compare/v2.3.1...v2.3.2
723744
[2.3.1]: https://github.com/igerber/diff-diff/compare/v2.3.0...v2.3.1
724745
[2.3.0]: https://github.com/igerber/diff-diff/compare/v2.2.1...v2.3.0

diff_diff/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@
148148
load_mpdta,
149149
)
150150

151-
__version__ = "2.3.2"
151+
__version__ = "2.4.0"
152152
__all__ = [
153153
# Estimators
154154
"DifferenceInDifferences",

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.3.2"
7+
version = "2.4.0"
88
description = "A library for Difference-in-Differences causal inference analysis"
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.3.2"
3+
version = "2.4.0"
44
edition = "2021"
55
description = "Rust backend for diff-diff DiD library"
66
license = "MIT"

0 commit comments

Comments
 (0)