Conversation
…iscontinuity Local Wald ratio estimand with rdrobust 4.0.0 parity end-to-end: linearized bias correction and delta-method variances (T stacked as a second response column), fuzzy-ratio bandwidth objective with R's sharpbw / one-sided perfect-compliance auto-switch, full first-stage three-row mirror + summary block, weak-first-stage warning (documented deviation - R is silent), and R's exact identification error. 7 new fuzzy golden configs (23 total). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QGca52n6H8oDDXALjjrsp4
Overall Assessment✅ Looks good. No unmitigated P0/P1 findings. Executive Summary
MethodologyNo unmitigated findings. Cross-check: fuzzy ratio assembly, linearized Code QualityNo findings. PerformanceNo findings. MaintainabilityNo findings. Tech DebtNo findings. Deferred limitations such as covariates, cluster variance, weak-IV-robust fuzzy inference, and diagnostics are documented in the registry. SecurityNo findings. Documentation/TestsP3 — Stale internal documentation reference
Verification note: attempted |
The port entry point was renamed to rdbwselect when fuzzy support landed; this internal README reference was the one site the rename sweep missed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QGca52n6H8oDDXALjjrsp4
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall Assessment✅ Looks good. No unmitigated P0/P1 findings. Executive Summary
MethodologyNo findings. Cross-check: the registry specifies fuzzy RD as the local Wald ratio with linearized Code QualityNo findings. PerformanceNo findings. MaintainabilityNo findings. Tech DebtNo findings. Deferred RD seams are documented in the registry, including covariates, cluster variance, weights, kink estimands, and weak-IV-robust fuzzy inference ( SecurityNo findings. Documentation/TestsP3 — Benchmark README overstates fuzzy coverage in
Verification note: attempted |
rdrobust_golden.json is the frozen 17-config SHARP bandwidth fixture; fuzzy bandwidth/estimation parity lives in rdrobust_estimates_golden.json. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QGca52n6H8oDDXALjjrsp4
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall Assessment✅ Looks good. No unmitigated P0/P1 findings. Executive Summary
MethodologyNo findings. The fuzzy implementation matches Code QualityNo findings. PerformanceNo findings. MaintainabilityNo findings. Tech DebtNo findings. Deferred RD seams remain documented in the registry, including covariates, cluster variance, weights, kink estimands, and weak-IV-robust fuzzy inference. SecurityNo findings. Documentation/TestsP3 — Some user-facing prose still overstates fuzzy RD as complier LATE without the binary-takeup qualifier
VerificationAttempted: PYTHONDONTWRITEBYTECODE=1 python -m pytest tests/test_rdd.py tests/test_rdd_methodology.py tests/test_rdd_parity.py tests/test_rdrobust_port.py -q -p no:cacheproviderCould not run because |
…verywhere The estimand field and fit docstring were already conditional; the module docstring intro, API page intro, and llms-full description/example now carry the same binary-take-up-under-monotonicity qualifier. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QGca52n6H8oDDXALjjrsp4
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall Assessment✅ Looks good. No unmitigated P0/P1 findings. Executive Summary
MethodologyNo findings. The fuzzy RD implementation aligns with the registry and in-code references: Code QualityNo findings. PerformanceNo findings. MaintainabilityNo findings. Tech DebtNo findings. Deferred RD seams remain documented: covariates, cluster-robust variance, weights, kink estimands, weak-IV-robust fuzzy inference, and diagnostics. SecurityNo findings. Documentation/TestsP3 — Residual prose still says “complier LATE” without the binary-takeup qualifier in the same sentence
VerificationAttempted: PYTHONDONTWRITEBYTECODE=1 python -m pytest tests/test_rdd.py tests/test_rdd_methodology.py tests/test_rdd_parity.py tests/test_rdrobust_port.py -q -p no:cacheproviderCould not run: |
CHANGELOG entry, class docstring, and doctest comment were the last unqualified sites (repo-wide grep now clean). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QGca52n6H8oDDXALjjrsp4
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall Assessment✅ Looks good. No unmitigated P0/P1 findings. Executive Summary
MethodologyNo findings. Cross-check focused on fuzzy RD changes against Relevant locations reviewed: Code QualityNo findings. PerformanceNo findings. MaintainabilityNo findings. Tech DebtNo findings. Deferred seams such as covariates, cluster-robust variance, weights, kink estimands, weak-IV-robust fuzzy inference, and diagnostics are documented as non-blocking follow-ups. SecurityNo findings. Documentation/TestsNo findings. The prior review’s P3 wording concern around “complier LATE” appears addressed in the changed prose. Verification was limited: tests could not be executed because the review environment lacks |
Summary
RegressionDiscontinuityas a fit-time option -fit(data, outcome_col, running_col, treatment_col=...)(R'sfuzzy=);Noneremains the sharp design. No new estimator class; estimator count unchanged.estimandlabel - "fuzzy (LATE for compliers at the cutoff)" for binary take-up, "fuzzy (local Wald ratio at the cutoff; non-binary take-up)" otherwise, so the label never overclaims.tau_bc = tau_cl - s_Y . B_F), delta-method variances with the Y-T covariance via theres @ s_Ycollapse, first-stage variance viasV_T = [0, 1], and the linearized per-side biases.sharpbw=Falseconstructor knob, and the one-sided perfect-compliance auto-switch to the sharp reduced form.first_stage*mirror (robust-row canonical binding likeatt), a first-stage block insummary(), and per-side take-up coefficients (rdplot seam). AllNoneon sharp fits;to_dict()splits None-safe.UserWarningwhen the first-stage robust CI is finite and contains zero (documented deviation - R is verified silent; CCT 2014 Theorem 3 "guard and warn"); R's exact no-variation-no-jump identification error raised on both entry points, ordered before mass-point detection as in R.rdbwselect,rdrobust_fit,rdrobust_vce,RdFitResult); sharpt=Nonepaths unchanged (all pre-existing goldens reproduce value-exact).Methodology references (required if estimator / math changes)
diff_diff/_rdrobust_port.py).docs/methodology/REGISTRY.md(RegressionDiscontinuity section) - weak-first-stage warning with a finite-CI gate (R silent; no-silent-failures policy), first-stage se=0 NaN-gating under perfect compliance (R prints z=Inf), fail-closed degenerate-pilot error (R flows Inf/NaN), warn-and-ignoresharpbwon sharp fits (R silent), data-dependent estimand labeling.Validation
tests/test_rdd_parity.py(23-config R golden parity at rtol=1e-9 incl. 7 fuzzy configs with full first-stage three-row pins - default/sharpbw/manual-h/epa/msetwo/one-sided-compliance/ties),tests/test_rdrobust_port.py(port-level fuzzy parity incl. the linearized per-side bias pins + fuzzy input validation),tests/test_rdd_methodology.py(perfect-compliance == sharp reproduction, perf_comp/sharpbw bandwidth switch locks, outcome-scaling equivariance, R-exact identification error ordering, weak/strong first-stage warning gate, degenerate-pilot fail-closed, N<20 fuzzy fallback, constant-outcome contracts),tests/test_rdd.py(treatment_col API, estimand labels incl. non-binary, first-stage None-on-sharp, sharpbw plumbing).benchmarks/R/generate_rdrobust_estimates_golden.R); all 16 pre-existing configs reproduced value-exact; worst observed fuzzy parity deviation ~3.3e-11 (bandwidths ~5.9e-13 across all 10 selectors).Security / privacy
Generated with Claude Code
https://claude.ai/code/session_01QGca52n6H8oDDXALjjrsp4