Skip to content

Commit 807dd89

Browse files
igerberclaude
andcommitted
Bump version to 2.1.3
Release includes TROP paper conformance fixes: - Control set includes pre-treatment obs of eventually-treated units - Unit distance excludes target period per Equation 3 - Weighted proximal gradient for nuclear norm update - Stratified bootstrap sampling per Algorithm 3 - Cleaned up unused Rust API parameters Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent fa69c5f commit 807dd89

4 files changed

Lines changed: 21 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,23 @@ 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.1.3] - 2026-01-19
9+
10+
### Fixed
11+
- TROP estimator paper conformance issues (Athey et al. 2025)
12+
- Control set now includes pre-treatment observations of eventually-treated units (Issue A)
13+
- Unit distance computation excludes target period per Equation 3 (Issue B)
14+
- Nuclear norm update uses weighted proximal gradient instead of unweighted soft-thresholding (Issue C)
15+
- Bootstrap sampling now stratifies by treatment status per Algorithm 3 (Issue D)
16+
- TROP Rust backend alignment with paper specification
17+
- Weight normalization to sum to 1 (probability weights)
18+
- Weighted proximal gradient for L update with step size η ≤ 1/max(W)
19+
20+
### Changed
21+
- Cleaned up unused parameters from TROP Rust API
22+
- Removed `control_unit_idx` and `unit_dist_matrix` from public functions
23+
- Per-observation distances now computed dynamically (more accurate, slightly slower)
24+
825
## [2.1.2] - 2026-01-19
926

1027
### Added
@@ -453,6 +470,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
453470
- `to_dict()` and `to_dataframe()` export methods
454471
- `is_significant` and `significance_stars` properties
455472

473+
[2.1.3]: https://github.com/igerber/diff-diff/compare/v2.1.2...v2.1.3
456474
[2.1.2]: https://github.com/igerber/diff-diff/compare/v2.1.1...v2.1.2
457475
[2.1.1]: https://github.com/igerber/diff-diff/compare/v2.1.0...v2.1.1
458476
[2.1.0]: https://github.com/igerber/diff-diff/compare/v2.0.3...v2.1.0

diff_diff/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136
load_mpdta,
137137
)
138138

139-
__version__ = "2.1.2"
139+
__version__ = "2.1.3"
140140
__all__ = [
141141
# Estimators
142142
"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.1.2"
7+
version = "2.1.3"
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.1.2"
3+
version = "2.1.3"
44
edition = "2021"
55
description = "Rust backend for diff-diff DiD library"
66
license = "MIT"

0 commit comments

Comments
 (0)