Commit 6bd07e7
Address PR #359 CI review round 5 (1 P0 + 1 P3)
P0 — zero-weight units must not drive HAD design resolution. Previously
``fit()`` aggregated all units first, then ran ``_detect_design``,
``d_lower`` resolution, the 2% mass-point threshold, and treated/control
counts on the full ``d_arr`` — so a zero-weight unit at ``d.min() = 0``
(the standard SurveyDesign.subpopulation encoding) could flip a
weighted sample from ``continuous_near_d_lower`` to
``continuous_at_zero``, shift ``d_lower``, misstate cohort counts, or
trigger the wrong ``NotImplementedError``. The weighted kernel already
dropped those units at fit time via lprobust's ``w > 0`` selector, so
the fit NUMBERS were correct; the DESIGN DECISION was contaminated.
Fixed by filtering ``d_arr`` / ``dy_arr`` / ``weights_unit`` /
``raw_weights_unit`` / ``resolved_survey_unit`` to
``weights_unit > 0`` immediately after survey/weights resolution and
before any design-resolution logic. New ``_filter_resolved_survey``
helper rebuilds the ResolvedSurveyDesign on the positive-weight subset
(recomputing ``n_strata`` / ``n_psu`` for compute_survey_if_variance).
A UserWarning fires when units are dropped so the behavior is
introspectable.
Three new regression tests lock the fix:
- ``test_zero_weight_unit_at_d_min_does_not_flip_design``: full panel
with zero-weight unit at ``d=0`` vs physically-dropped panel —
design, d_lower, att, and se all match to 1e-10.
- ``test_zero_weight_filter_warns_user``: UserWarning emitted.
- ``test_zero_weight_counts_reflect_positive_subset``: ``n_obs`` on the
result is the positive-weight unit count, not the full panel size.
P3 — CHANGELOG + ``to_dict()`` docstring accuracy. CHANGELOG claimed
``to_dict`` / ``summary`` / ``__repr__`` render the survey metadata
consistently including ``weight_sum`` / ``n_strata`` / ``n_psu``; in
practice each surface renders a different subset. Rewrote the CHANGELOG
entry to enumerate exactly what each surface prints, and rewrote
``HeterogeneousAdoptionDiDResults.to_dict()`` docstring to name the
weighted-path keys and clarify that ``survey_metadata`` is a
SurveyMetadata object (not a dict).
All 363 tests pass. Ruff clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 188021b commit 6bd07e7
3 files changed
Lines changed: 207 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
455 | 455 | | |
456 | 456 | | |
457 | 457 | | |
458 | | - | |
459 | | - | |
460 | | - | |
461 | | - | |
462 | | - | |
463 | | - | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
464 | 478 | | |
465 | 479 | | |
466 | 480 | | |
| |||
1659 | 1673 | | |
1660 | 1674 | | |
1661 | 1675 | | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | + | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
1662 | 1733 | | |
1663 | 1734 | | |
1664 | 1735 | | |
| |||
2492 | 2563 | | |
2493 | 2564 | | |
2494 | 2565 | | |
| 2566 | + | |
| 2567 | + | |
| 2568 | + | |
| 2569 | + | |
| 2570 | + | |
| 2571 | + | |
| 2572 | + | |
| 2573 | + | |
| 2574 | + | |
| 2575 | + | |
| 2576 | + | |
| 2577 | + | |
| 2578 | + | |
| 2579 | + | |
| 2580 | + | |
| 2581 | + | |
| 2582 | + | |
| 2583 | + | |
| 2584 | + | |
| 2585 | + | |
| 2586 | + | |
| 2587 | + | |
| 2588 | + | |
| 2589 | + | |
| 2590 | + | |
| 2591 | + | |
| 2592 | + | |
| 2593 | + | |
| 2594 | + | |
| 2595 | + | |
| 2596 | + | |
| 2597 | + | |
| 2598 | + | |
| 2599 | + | |
| 2600 | + | |
2495 | 2601 | | |
2496 | 2602 | | |
2497 | 2603 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3803 | 3803 | | |
3804 | 3804 | | |
3805 | 3805 | | |
| 3806 | + | |
| 3807 | + | |
| 3808 | + | |
| 3809 | + | |
| 3810 | + | |
| 3811 | + | |
| 3812 | + | |
| 3813 | + | |
| 3814 | + | |
| 3815 | + | |
| 3816 | + | |
| 3817 | + | |
| 3818 | + | |
| 3819 | + | |
| 3820 | + | |
| 3821 | + | |
| 3822 | + | |
| 3823 | + | |
| 3824 | + | |
| 3825 | + | |
| 3826 | + | |
| 3827 | + | |
| 3828 | + | |
| 3829 | + | |
| 3830 | + | |
| 3831 | + | |
| 3832 | + | |
| 3833 | + | |
| 3834 | + | |
| 3835 | + | |
| 3836 | + | |
| 3837 | + | |
| 3838 | + | |
| 3839 | + | |
| 3840 | + | |
| 3841 | + | |
| 3842 | + | |
| 3843 | + | |
| 3844 | + | |
| 3845 | + | |
| 3846 | + | |
| 3847 | + | |
| 3848 | + | |
| 3849 | + | |
| 3850 | + | |
| 3851 | + | |
| 3852 | + | |
| 3853 | + | |
| 3854 | + | |
| 3855 | + | |
| 3856 | + | |
| 3857 | + | |
| 3858 | + | |
| 3859 | + | |
| 3860 | + | |
| 3861 | + | |
| 3862 | + | |
| 3863 | + | |
| 3864 | + | |
| 3865 | + | |
| 3866 | + | |
| 3867 | + | |
| 3868 | + | |
| 3869 | + | |
| 3870 | + | |
| 3871 | + | |
| 3872 | + | |
| 3873 | + | |
| 3874 | + | |
| 3875 | + | |
| 3876 | + | |
| 3877 | + | |
| 3878 | + | |
| 3879 | + | |
| 3880 | + | |
| 3881 | + | |
| 3882 | + | |
| 3883 | + | |
| 3884 | + | |
| 3885 | + | |
| 3886 | + | |
| 3887 | + | |
| 3888 | + | |
| 3889 | + | |
| 3890 | + | |
| 3891 | + | |
| 3892 | + | |
| 3893 | + | |
| 3894 | + | |
| 3895 | + | |
| 3896 | + | |
| 3897 | + | |
| 3898 | + | |
| 3899 | + | |
3806 | 3900 | | |
3807 | 3901 | | |
3808 | 3902 | | |
| |||
0 commit comments