Skip to content

Commit 8d96f3e

Browse files
igerberclaude
andcommitted
wooldridge: REGISTRY bootstrap-cluster note scope (CI codex R2 P3)
CI codex R2 flagged that the bootstrap-cluster note described a one-way + explicit-cluster bootstrap scenario as if it were part of the supported contract, but the previous bullet rejects ``n_bootstrap > 0`` + ``vcov_type in {hc2, classical}`` regardless of cluster. Rewrote the note to scope it to the supported paths (``hc1`` / ``hc2_bm``) and explicitly reference the rejection bullet. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent c7107d7 commit 8d96f3e

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

docs/methodology/REGISTRY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1495,7 +1495,7 @@ where `g(·)` is the link inverse (logistic or exp), `η_i` is the individual li
14951495
- `survey_design=` + `vcov_type != "hc1"` — REJECTED at `fit()` with `NotImplementedError`. Survey TSL/replicate-refit overrides analytical sandwich. Use `vcov_type="hc1"` (default) for survey designs.
14961496
- `n_bootstrap > 0` + `vcov_type ∈ {"hc2","classical"}` — REJECTED at `fit()` regardless of `self.cluster` setting. The multiplier bootstrap is intrinsically clustered, but one-way vcov_type does not compose with `cluster_ids`: with `cluster=None` the auto-cluster is dropped (bootstrap has no cluster to draw weights at); with `cluster=X` the linalg validator rejects one-way + cluster_ids downstream with a less-informative error. User must drop bootstrap (`n_bootstrap=0`) or pick a cluster-compatible `vcov_type` (`hc1` or `hc2_bm`).
14971497
- **Note:** This routing is a documented synthesis of two existing methodology ingredients: the full-dummy auto-route from the Phase 1b PR 1/8 SunAbraham pattern (PR #472, which itself reused the Phase 1a Gate 1 TWFE lift from PR #469), and the clubSandwich WLS-CR2 algebra from the Phase 1a port (PR #475). The BM contrast DOF threading reuses `_compute_cr2_bm_contrast_dof` from PR #465 (MPD). No new methodology choice is introduced — the change is purely surface: extending the existing pattern from SA-OLS to WooldridgeDiD-OLS.
1498-
- **Note:** Bootstrap clusters at `self.cluster if self.cluster else unit` regardless of `vcov_type`. When the analytical sandwich is one-way + the user set an explicit `cluster=X`, the bootstrap matches the user's cluster. The bootstrap SE overrides the analytical SE for `overall_*` on `n_bootstrap > 0` paths; per-cell `(g, t)` SEs still come from the analytical vcov.
1498+
- **Note:** Bootstrap is supported only with `vcov_type ∈ {"hc1","hc2_bm"}` (one-way `classical`/`hc2` + bootstrap is rejected at `fit()` per the previous bullet). On the supported paths, the bootstrap clusters at `self.cluster if self.cluster else unit` — i.e., it matches the user's explicit cluster column if set, falling back to unit otherwise (the panel's natural unit of variation). The bootstrap SE overrides the analytical SE for `overall_*` on `n_bootstrap > 0` paths; per-cell `(g, t)` SEs still come from the analytical vcov.
14991499

15001500
*Aggregations (matching `jwdid_estat`):*
15011501
- `simple`: Weighted average across all post-treatment (g, t) cells with weights `n_{g,t}`:

0 commit comments

Comments
 (0)