Commit bb6bf5c
Add (1-W) weight masking to TROP global method + rename joint→global
Align the TROP global method with the paper's Eq. 2 by adding (1-W)
masking so the model is fit on control data only, then extracting
treatment effects post-hoc as residuals (tau_it = Y - mu - alpha - beta - L).
Key changes:
- Apply (1-W) masking in _compute_joint_weights, zeroing treated cells
- Remove tau from the joint solvers (no longer identifiable under masking)
- Extract per-observation treatment effects post-hoc; ATT = mean(tau_it)
- Add FISTA/Nesterov acceleration to the nuclear norm solver (O(1/k²))
- Rename method='joint' to method='global' with FutureWarning deprecation
- Extract _solve_joint_model and _extract_posthoc_tau helpers to reduce duplication
- Mirror all changes in Rust backend
Monte Carlo validation (20 reps × 5 configs) shows:
- No-lowrank configs: exact match with CVXPY reference (|Δτ| = 0)
- Low-rank configs: mean |Δτ| = 0.0004 (λ_nn=0.1), 0.026 (λ_nn=0.01)
- 100% of comparisons within 0.10 of reference
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent 44124ca commit bb6bf5c
File tree
7 files changed
+546
-242
lines changed- diff_diff
- docs
- api
- methodology
- tutorials
- rust/src
- tests
7 files changed
+546
-242
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
0 commit comments