You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,6 +21,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
21
21
-**`twowayfeweights()`** — standalone helper function for the TWFE decomposition diagnostic (Theorem 1 of de Chaisemartin & D'Haultfœuille 2020), available without instantiating the full estimator. Returns a `TWFEWeightsResult` with per-cell weights, fraction negative, `sigma_fe`, and `beta_fe`.
22
22
-**`generate_reversible_did_data()`** — new generator in `diff_diff.prep` producing reversible-treatment panel data for testing and tutorials. Patterns: `single_switch` (default, A5-safe), `joiners_only`, `leavers_only`, `mixed_single_switch`, `random`, `cycles`, `marketing`. Returns columns `group`, `period`, `treatment`, `outcome`, `true_effect`, `d_lag`, `switcher_type`.
23
23
-**REGISTRY.md `## ChaisemartinDHaultfoeuille` section** — single canonical source for dCDH methodology, equations, edge cases, and all documented deviations from the R `DIDmultiplegtDYN` reference implementation. Cites the AER 2020 paper and the dynamic companion paper (NBER WP 29873) by reference; primary papers are upstream sources, not in-repo files.
24
+
-**Phase 2: Multi-horizon event study for `ChaisemartinDHaultfoeuille`** — adds `L_max` parameter to `fit()` for computing `DID_l` at horizons `l = 1, ..., L_max` using the per-group building block from Equation 3 of the dynamic companion paper. Ships:
25
+
- Per-horizon point estimates and cohort-recentered analytical SE
|`n_groups_dropped_crossers`, `n_groups_dropped_singleton_baseline`| Filter counts (multi-switch groups dropped before estimation; singleton-baseline groups excluded from variance) |
1214
1214
|`n_groups_dropped_never_switching`| Backwards-compatibility metadata. Never-switching groups participate in the variance via stable-control roles; this field is no longer a filter count. |
1215
1215
1216
+
**Multi-horizon event study** (Phase 2 - pass `L_max` to `fit()`):
> **Note:** Phase 1 requires panels with a **balanced baseline** (every group observed at the first global period) and **no interior period gaps**. Late-entry groups (missing the baseline) raise `ValueError`; interior-gap groups are dropped with a warning; terminally-missing groups (early exit / right-censoring) are retained and contribute from their observed periods only. This is a documented deviation from R `DIDmultiplegtDYN`, which supports unbalanced panels — see [`docs/methodology/REGISTRY.md`](docs/methodology/REGISTRY.md) for the rationale, the defensive guards that make terminal missingness safe, and workarounds for unbalanced inputs.
1234
1260
1235
-
> **Note:** Survey design (`survey_design`), event-study aggregation (`aggregate`), covariate adjustment (`controls`), and HonestDiD integration (`honest_did`) are not yet supported. They raise `NotImplementedError` with phase pointers — see [`ROADMAP.md`](ROADMAP.md) for the full multi-phase rollout.
1261
+
> **Note:** Survey design (`survey_design`), covariate adjustment (`controls`), group-specific linear trends (`trends_linear`), and HonestDiD integration (`honest_did`) are not yet supported. They raise `NotImplementedError` with phase pointers - see [`ROADMAP.md`](ROADMAP.md) for the Phase 3 rollout.
Copy file name to clipboardExpand all lines: ROADMAP.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -148,18 +148,18 @@ The dynamic companion paper subsumes the AER 2020 paper: `DID_1 = DID_M`. The si
148
148
149
149
### Phase 2: Dynamic event study (multiple horizons)
150
150
151
-
*Goal: Add `aggregate="event_study"` mode to the same class. Loops the Phase 1 machinery over horizons `l = 1, ..., L`. No API breakage from Phase 1. No new tutorial — the comprehensive tutorial waits for Phase 3.*
151
+
*Goal: Add multi-horizon event study to the same class via the `L_max` parameter. Loops the Phase 1 machinery over horizons `l = 1, ..., L`. No API breakage from Phase 1. No new tutorial - the comprehensive tutorial waits for Phase 3.*
152
152
153
153
| Item | Priority | Status |
154
154
|------|----------|--------|
155
-
|**2a.** Multi-horizon `DID_l` via the cohort framework, with horizon parameter `L_max`| HIGH |Not started|
156
-
|**2b.** Multi-horizon analytical SE (same plug-in formula looped over horizons) | HIGH |Not started|
157
-
|**2c.** Dynamic placebos `DID^{pl}_l` for pre-trends testing (Web Appendix Section 1.1 of dynamic paper) | HIGH |Not started|
158
-
|**2d.** Normalized estimator `DID^n_l` (Section 3.2 of dynamic paper) | MEDIUM |Not started|
159
-
|**2e.** Cost-benefit aggregate `delta` (Section 3.3 of dynamic paper, Lemma 4) | MEDIUM |Not started|
160
-
|**2f.** Simultaneous (sup-t) confidence bands for event study plots | MEDIUM |Not started|
161
-
|**2g.**`plot_event_study()` integration; `< 50%`-of-switchers warning for far horizons | MEDIUM |Not started|
162
-
|**2h.** Parity tests vs `did_multiplegt_dyn` for multi-horizon designs | HIGH |Not started|
155
+
|**2a.** Multi-horizon `DID_l` via per-group `DID_{g,l}` building block, with `L_max`parameter | HIGH |Shipped|
156
+
|**2b.** Multi-horizon analytical SE (cohort-recentered plug-in per horizon) | HIGH |Shipped|
157
+
|**2c.** Dynamic placebos `DID^{pl}_l` for pre-trends testing (Web Appendix Section 1.1 of dynamic paper) | HIGH |Shipped|
158
+
|**2d.** Normalized estimator `DID^n_l` (Section 3.2 of dynamic paper) | MEDIUM |Shipped|
159
+
|**2e.** Cost-benefit aggregate `delta` (Section 3.3 of dynamic paper, Lemma 4) | MEDIUM |Shipped|
160
+
|**2f.** Simultaneous (sup-t) confidence bands for event study plots | MEDIUM |Shipped|
161
+
|**2g.**`plot_event_study()` integration; `< 50%`-of-switchers warning for far horizons | MEDIUM |Shipped|
162
+
|**2h.** Parity tests vs `did_multiplegt_dyn` for multi-horizon designs | HIGH |In progress|
0 commit comments