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
v1.0.1: close NEEDS_VERIFICATION items — Abadie complier QTE + real dual-path PCI bridge
Patch release that turns the two items v1.0.0 shipped with
``# NEEDS_VERIFICATION`` markers into paper-grounded implementations,
with dedicated pinning tests that fail the instant either bug returns.
Fixed — NEEDS_VERIFICATION closeout
- ``beyond_average_late`` (qte/beyond_average.py): replaced the ad-hoc
``cdf_diff * (Y95 - Y05)`` rescaling with the Abadie (2002)
κ-weighted complier-CDF construction. For each target quantile the
complier CDFs
F_{Y1|c}(y) = [P(Y ≤ y, D = 1 | Z = 1) − P(Y ≤ y, D = 1 | Z = 0)] / Δp
F_{Y0|c}(y) = [P(Y ≤ y, D = 0 | Z = 0) − P(Y ≤ y, D = 0 | Z = 1)] / Δp
are built via sorted cumulative sums and isotonised to [0, 1], then
inverted to give the proper complier QTE Q_{1,c}(q) − Q_{0,c}(q).
The previous output had no standard econometric interpretation.
- ``bridge.surrogate_pci`` path B (bridge/surrogate_pci.py): path B no
longer reduces to plain OLS on (D, S, X). It now fits *arm-specific*
outcome models m_0 and m_1 on (S, X) and reports the treated-arm
counterfactual
ATT_{PCI} = E[m_1(S, X) − m_0(S, X) | D = 1],
which leans on a different identifying assumption from Path A
(surrogate index, control-arm extrapolation only). The dual-path
agreement test is therefore a genuine doubly-robust bridge: if
either identifying assumption fails, paths A and B diverge.
Tests
- tests/test_v101_verified_fixes.py: 5 pinning tests verifying
- complier QTE recovers monotone heterogeneity under simulated LATE,
- no-effect simulation yields near-zero QTEs,
- non-binary instrument raises,
- surrogate_pci path B is materially different from pooled OLS on D
under outcome-model heterogeneity,
- surrogate_pci agreement p-value lies in [0, 1].
- tests/test_v100_integration.py::test_v1_version now accepts any
v1.x.y so patch bumps don't trip the integration contract.
Full-suite regression: 2 706 tests pass (v1.0.0 fix pass + v1.0.1),
zero regressions across the 2 701-test pre-existing suite.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments