Commit 7d5ecd6
PR #458 R2: move auto-route ahead of multi-absorb-survey guard
R2 review flagged that REGISTRY/CHANGELOG documented
`DiD(absorb=..., vcov_type in {hc2,hc2_bm})` as SUPPORTED, but the
legacy `len(absorb) > 1 + survey_weights` guard at estimators.py:347
fired BEFORE the auto-route, so weighted multi-absorb fits still raised.
The guard's rationale ("single-pass demeaning isn't the correct weighted
FWL projection for N>1 absorbed dimensions") doesn't apply when we're
auto-routing to fixed_effects= — the fixed_effects= path builds the
full-dummy design and solves WLS directly with no within-transform.
Reorder: move the auto-route block above the multi-absorb-survey guard.
The guard now only fires when absorb was NOT consumed by the auto-route
(i.e., hc1/classical/conley/etc. — paths that still demean).
Adds `test_absorb_hc2_bm_survey_multi_absorb_auto_routes` to pin the
new placement against silent regression. The existing `test_survey.py`
multi-absorb-survey rejection tests continue to pass (they use the
default vcov_type=hc1 path which still hits the guard).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent d883546 commit 7d5ecd6
2 files changed
Lines changed: 72 additions & 19 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
344 | 344 | | |
345 | 345 | | |
346 | 346 | | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
353 | | - | |
354 | | - | |
355 | | - | |
356 | | - | |
357 | | - | |
358 | | - | |
359 | | - | |
360 | | - | |
361 | | - | |
362 | | - | |
363 | | - | |
364 | | - | |
365 | | - | |
366 | 347 | | |
367 | 348 | | |
368 | 349 | | |
| |||
379 | 360 | | |
380 | 361 | | |
381 | 362 | | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
382 | 372 | | |
383 | 373 | | |
384 | 374 | | |
385 | 375 | | |
386 | 376 | | |
387 | 377 | | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
388 | 399 | | |
389 | 400 | | |
390 | 401 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1095 | 1095 | | |
1096 | 1096 | | |
1097 | 1097 | | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
| 1135 | + | |
| 1136 | + | |
| 1137 | + | |
| 1138 | + | |
| 1139 | + | |
1098 | 1140 | | |
1099 | 1141 | | |
1100 | 1142 | | |
| |||
0 commit comments