Skip to content

docs: add CiC/QDiD paper reviews (Athey-Imbens 2006, Callaway-Li-Oka 2018, Melly-Santangelo 2015, Ciaccio 2024)#678

Merged
igerber merged 2 commits into
mainfrom
change-in-change
Jul 12, 2026
Merged

docs: add CiC/QDiD paper reviews (Athey-Imbens 2006, Callaway-Li-Oka 2018, Melly-Santangelo 2015, Ciaccio 2024)#678
igerber merged 2 commits into
mainfrom
change-in-change

Conversation

@igerber

@igerber igerber commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • PR-A of the Changes-in-Changes / distributional DiD initiative (2-PR workflow: reviews merge first, implementation follows in PR-B against the reviewed scope)
  • docs/methodology/papers/athey-imbens-2006-review.md (413 lines): the core source, reviewed from the published Econometrica 74(2) typeset. Covers CiC identification (Theorem 3.1 / eq. 9), the exact inf-based and sup-based inverse-CDF conventions where implementations diverge (eqs. 8, 24, 34-35, A.1-A.2), the plug-in ATT/quantile estimators (eqs. 36, 17-18), the QDiD variant (eq. 22 + p. 447 transformation), influence-function inference (Theorems 5.1-5.7), discrete-outcome bounds (Section 4/5.2), covariate routes, and the Section 6 multi-group machinery with Appendix B's 26-case covariance rule
  • docs/methodology/papers/callaway-li-oka-2018-review.md (417 lines): two-period panel QTT under Distributional DiD + Copula Invariance (arXiv:1702.03618v1, pinned; JoE 206(2) is the version of record). Reviewed as panel-mode grounding and qte-package foundations; carries the exchangeable-bootstrap validity machinery relevant to v1's bootstrap-first inference
  • docs/methodology/papers/melly-santangelo-2015-review.md (522 lines): CiC with covariates via quantile regression (October 2015 working paper, pinned; still unpublished). Documents the QR pipeline blueprint and the DiD-bias motivation; flags draft typos verbatim
  • docs/methodology/papers/ciaccio-2024-review.md (619 lines): staggered/multi-period distributional DiD (arXiv:2408.01208v2, pinned). Un-parks the ROADMAP "Distributional DiD for staggered timing" row to reviewed-deferred; documents the Unc-vs-Cond Monte Carlo bias evidence backing the covariates-deferral documentation
  • v1 scope decisions (2026-07-12) recorded inside each review: ship ChangesInChanges + QDiD (2x2, continuous outcomes, bootstrap inference, panel + repeated cross-section modes, qte::CiC()/qte::QDiD() golden-file parity); defer covariates, discrete bounds, analytical SEs, and staggered extension - reviewed here so every deferral is documented, not silent

Methodology references (required if estimator / math changes)

  • Method name(s): ChangesInChanges (CiC) + QDiD (planned v1 estimators); PanelQTT (Callaway-Li-Oka), CiC with covariates (Melly-Santangelo), staggered distributional DiD (Ciaccio) - reviewed, implementation deferred
  • Paper / source link(s):
  • Any intentional deviations from the source (and why): None - documentation-only PR. Library-convention choices vs the papers (e.g. bootstrap-first inference where Athey-Imbens is analytical-only) are explicitly flagged inside the reviews as conventions to document at implementation time, not silent deviations
  • REGISTRY.md is intentionally untouched: registry entries land with the implementation in PR-B (each review states this in its header)

Validation

  • Tests added/updated: No test changes (documentation-only PR)
  • Backtest / simulation / notebook evidence (if applicable): N/A

Security / privacy

  • Confirm no secrets/PII in this PR: Yes (PDFs remain local-only under gitignored papers/)

Generated with Claude Code

🤖 Generated with Claude Code

https://claude.ai/code/session_011hismLBFcUbUzvDRq8ruWb

…2018, Melly-Santangelo 2015, Ciaccio 2024)

PR-A of the Changes-in-Changes / distributional DiD initiative: four
version-pinned methodology reviews scoping the ChangesInChanges + QDiD
v1 estimators (2x2, continuous outcomes, bootstrap inference, panel +
repeated cross-section modes, R qte parity) and documenting the
reviewed-but-deferred extensions (covariates, discrete-outcome bounds,
analytical SEs, staggered adoption).

- athey-imbens-2006-review.md: core CiC + QDiD source (published
  Econometrica typeset); exact inverse-CDF conventions, influence-
  function inference, discrete bounds, Section 6 multi-group machinery
- callaway-li-oka-2018-review.md: two-period panel QTT under copula
  invariance (arXiv v1); exchangeable-bootstrap validity machinery
- melly-santangelo-2015-review.md: CiC with covariates via quantile
  regression (Oct 2015 working paper); QR pipeline blueprint
- ciaccio-2024-review.md: staggered distributional DiD (arXiv v2);
  un-parks the ROADMAP row to reviewed-deferred status

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011hismLBFcUbUzvDRq8ruWb
@github-actions

Copy link
Copy Markdown

Overall Assessment

Looks good — no unmitigated P0/P1 findings. The PR is documentation-only and does not change estimator code, inference behavior, defaults, or public APIs. I found several P2/P3 documentation issues that should be cleaned up before these notes become implementation guidance.

Executive Summary

  • No live statistical-output, NaN/Inf, control-group, weighting, or variance code paths changed.
  • The new reviews are generally careful about deferrals and unresolved source-paper ambiguities.
  • A few formulas/source mappings are misleading enough to matter for future implementation work.
  • The ROADMAP status claimed by the new Ciaccio review is not actually updated in ROADMAP.md.
  • No security or secret exposure found in the changed markdown.

Methodology

Finding 1

Severity: P2
Location: docs/methodology/papers/athey-imbens-2006-review.md:L322-L348, docs/methodology/papers/ciaccio-2024-review.md:L529-L531
Impact: The Athey-Imbens review groups “Ciaccio / ecic” together as the reference for the deferred multi-group/period CiC extension, but the Ciaccio review correctly says Ciaccio is a copula-based Callaway-Li-style staggered QTT method and explicitly warns not to conflate it with ecic, which is staggered event-study CiC. This could send a future implementer to the wrong identification strategy or parity target.
Concrete fix: In the Athey-Imbens review, separate these threads: Athey-Imbens Section 6 / ecic for staggered or multi-group CiC; Ciaccio for a distinct staggered distributional DiD/QTT estimator.

Finding 2

Severity: P2
Location: docs/methodology/papers/ciaccio-2024-review.md:L251-L259
Impact: The IPW estimator display is labeled as F^{p,-1} while the prose says it is a reweighted CDF, and the summation is written over i in r while multiplying by the never-treated indicator C. If copied literally, this produces zero weights for a treated-cohort-only sum. The prose partially mitigates this, but the formula is still dangerous as implementation guidance.
Concrete fix: Add a Gaps/Uncertainties note for the sum_{i in r} + C inconsistency, and rewrite the implementation checklist formula as a Hájek-normalized CDF over the never-treated/all-sample observations using C_i * p_r(X_i) / (p_r * (1 - p_r(X_i))), then invert it.

Finding 3

Severity: P2
Location: docs/methodology/papers/athey-imbens-2006-review.md:L170-L174
Impact: The analytical-SE note calls Y_tilde_gt the support midpoint but defines it as (y_upper_gt - y_lower_gt)/2, which is half the range, not the midpoint unless the lower endpoint is zero. If later copied into the deferred analytical variance path, the one-sided density switch can be wrong near boundaries.
Concrete fix: Verify the paper’s footnote 31 expression and either change this to (y_upper_gt + y_lower_gt)/2 or explicitly document the source text if it is an as-printed typo requiring correction before implementation.

Finding 4

Severity: P2
Location: docs/methodology/papers/melly-santangelo-2015-review.md:L285-L289
Impact: The derivative for phi^{PP}(F, G) = F^{-1} o G shows a negative sign on the h_2 perturbation term. By the standard inverse-map derivative, the perturbation through G should enter with a positive sign, unless the paper uses an unusual sign convention. This matters for any future analytical covariance derivation.
Concrete fix: Re-check the source PDF and either correct the sign or add it to the suspected-typos list with an instruction to re-derive the derivative before analytical SE implementation.

Code Quality

No findings. The PR adds markdown only; no Python/Rust/R code quality issues are in scope.

Performance

No findings. No executable path or benchmark-sensitive code changed.

Maintainability

Finding 5

Severity: P3
Location: docs/methodology/papers/ciaccio-2024-review.md:L16-L16, docs/methodology/papers/ciaccio-2024-review.md:L553-L553, ROADMAP.md:L35-L35, ROADMAP.md:L87-L91
Impact: The new Ciaccio review says the ROADMAP row has moved from “commit when a user reports need” to “reviewed, implementation deferred pending demand,” but ROADMAP.md still contains the old wording. This creates two competing sources of truth.
Concrete fix: Update ROADMAP.md to the reviewed-deferred status, or remove the “row moves” claim from the paper review.

Tech Debt

No blocker findings. The docs clearly mark covariates, discrete bounds, analytical SEs, and staggered extensions as deferred. Because no implementation is added in this PR, lack of TODO.md entries is not a release blocker.

Security

No findings. The diff contains paper-review markdown only; no credentials, tokens, private data, or workflow execution changes.

Documentation/Tests

Finding 6

Severity: P3
Location: docs/methodology/papers/athey-imbens-2006-review.md:L211-L211
Impact: Minor markdown/readability issue: `F_hat^{-1}(0) = ` sample minimum closes the inline code before “sample minimum,” making the convention harder to scan.
Concrete fix: Change to `F_hat^{-1}(0) = sample minimum` or equivalent prose.

No tests are needed for this documentation-only PR.

- Separate the ecic (staggered event-study CiC, Section 6 lineage) and
  Ciaccio (copula-based staggered distributional DiD) threads in the
  Athey-Imbens review's Section 6 deferral notes (Finding 1)
- Flag Ciaccio p. 22 IPW display's sum_{i in r} + C-indicator
  inconsistency; give the implementable Hajek-normalized never-treated
  form inline and as Gaps item 17 (Finding 2)
- Verify AI 2006 footnote 31 against journal p. 463: the paper itself
  prints half-range (y_upper - y_lower)/2 while calling it the support
  midpoint; flag as suspected typo, instruct true-midpoint split
  (Finding 3)
- Verify MS 2015 Lemma 3 against p. 14: the paper prints the negative
  h_2 sign (and cites G^{-1} inversion in a proof that inverts F);
  flag as suspected copy-paste typo from Lemma 2 with re-derive
  instruction (Finding 4)
- Update ROADMAP Ciaccio row to reviewed-deferred status so it matches
  the review doc's claim (Finding 5)
- Fix inline-code backticks on the F_hat^{-1}(0) convention (Finding 6)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011hismLBFcUbUzvDRq8ruWb
@github-actions

Copy link
Copy Markdown

🔁 AI review rerun (requested by @igerber)

Head SHA: ce5972ca057f70e4b4cd098b37ab187ef8f71d49


Overall Assessment

Looks good — no unmitigated P0/P1 findings. This re-review found the previous issues addressed, and the PR remains documentation-only with no estimator, inference, default, or public API changes.

Executive Summary

  • No live statistical or estimator code paths changed.
  • Prior methodology-doc issues were resolved: ecic vs Ciaccio is no longer conflated, IPW notation hazards are documented, and suspected source typos are called out.
  • ROADMAP.md now matches the Ciaccio review’s reviewed-deferred status at ROADMAP.md:L35.
  • No new NaN/Inf inference, weighting, variance, control-group, or parameter-propagation risks were introduced.
  • No secrets or security-sensitive changes found in the changed markdown.

Methodology

No findings.

Prior findings are resolved:

  • Athey-Imbens now separates Section 6 / ecic from Ciaccio’s copula-based staggered QTT method: docs/methodology/papers/athey-imbens-2006-review.md:L322-L328.
  • Ciaccio IPW notation is explicitly treated as an as-printed issue with implementable Hájek-normalized guidance: docs/methodology/papers/ciaccio-2024-review.md:L251-L259, docs/methodology/papers/ciaccio-2024-review.md:L620.
  • Athey-Imbens footnote 31 midpoint/half-range issue is documented as a suspected typo: docs/methodology/papers/athey-imbens-2006-review.md:L170-L174, docs/methodology/papers/athey-imbens-2006-review.md:L391.
  • Melly-Santangelo PP derivative sign concern is flagged with a re-derive-before-implementation warning: docs/methodology/papers/melly-santangelo-2015-review.md:L285-L291, docs/methodology/papers/melly-santangelo-2015-review.md:L509.

Code Quality

No findings. The PR changes markdown only.

Performance

No findings. No executable or benchmark-sensitive path changed.

Maintainability

No findings. The previous ROADMAP inconsistency is fixed at ROADMAP.md:L35.

Tech Debt

No findings. Deferred scope is explicitly documented in the paper reviews, e.g. Ciaccio not shipping in v1 at docs/methodology/papers/ciaccio-2024-review.md:L16-L21 and Melly-Santangelo covariates deferred at docs/methodology/papers/melly-santangelo-2015-review.md:L16-L20.

Security

No findings. No credentials, tokens, workflow execution changes, or sensitive files are added.

Documentation/Tests

No findings. No tests are needed for this documentation-only PR. The previous minor markdown readability issue around F_hat^{-1}(0) is fixed/readable at docs/methodology/papers/athey-imbens-2006-review.md:L211.

@igerber igerber added the ready-for-ci Triggers CI test workflows label Jul 12, 2026
@igerber igerber merged commit 2080014 into main Jul 12, 2026
11 of 12 checks passed
@igerber igerber deleted the change-in-change branch July 12, 2026 16:22
igerber added a commit that referenced this pull request Jul 12, 2026
Athey & Imbens (2006) nonlinear DiD for the 2x2 design with continuous
outcomes: ChangesInChanges (alias CiC) recovers the treated group's full
counterfactual outcome distribution and quantile treatment effects; QDiD
is the paper's additive quantile-DiD comparison estimator.

- Point estimation matches R qte 1.3.1 exactly: CiC via an exact port of
  R quantile.default type-1 arithmetic incl. fuzz (bit-exact golden
  parity); QDiD via qte's type-7 additive form (REGISTRY Note documents
  the finite-sample deviation from the paper's k^QDID transformation)
- Bootstrap-only inference per qte's schemes (panel unit-block / RCS
  pooled resample; seedable; n_bootstrap=200; replicate-SD SEs, normal
  CIs, sup-t uniform bands at qte's fixed 95% level)
- Diagnostics: eq.-17 interior-range guard (NaN inference outside),
  support-violation / heavy-ties / QDiD-non-monotonicity warnings;
  joint-NaN inference contract via safe_inference(_batch)
- Golden fixtures: benchmarks/R/generate_qte_golden.R (qte pinned 1.3.1
  in requirements.R) -> benchmarks/data/qte_golden.json; parity tests
  cover 4 scenarios x {CiC,QDiD} x {panel,RCS} at atol=1e-10, type-1
  micro-fixtures at atol=0, seeded-R SE block statistically
- Docs: REGISTRY entry + cross-reference rows, api rst, references,
  llms(-full).txt, README/choosing/r_comparison/practitioner catalogs,
  estimator count 20 -> 22 (incl. paper.md + new Athey2006 bib entry),
  TODO deferral rows (covariates/bounds/analytical-SE/staggered/ATC +
  tutorial and practitioner-handler follow-ups)

Deferred and documented per the merged PR-A review stack (#678):
covariates, discrete-outcome bounds, analytical SEs, staggered designs,
treatment-on-controls.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011hismLBFcUbUzvDRq8ruWb
igerber added a commit that referenced this pull request Jul 12, 2026
Athey & Imbens (2006) nonlinear DiD for the 2x2 design with continuous
outcomes: ChangesInChanges (alias CiC) recovers the treated group's full
counterfactual outcome distribution and quantile treatment effects; QDiD
is the paper's additive quantile-DiD comparison estimator.

- Point estimation matches R qte 1.3.1 exactly: CiC via an exact port of
  R quantile.default type-1 arithmetic incl. fuzz (bit-exact golden
  parity); QDiD via qte's type-7 additive form (REGISTRY Note documents
  the finite-sample deviation from the paper's k^QDID transformation)
- Bootstrap-only inference per qte's schemes (panel unit-block / RCS
  pooled resample; seedable; n_bootstrap=200; replicate-SD SEs, normal
  CIs, sup-t uniform bands at qte's fixed 95% level)
- Diagnostics: eq.-17 interior-range guard (NaN inference outside),
  support-violation / heavy-ties / QDiD-non-monotonicity warnings;
  joint-NaN inference contract via safe_inference(_batch)
- Golden fixtures: benchmarks/R/generate_qte_golden.R (qte pinned 1.3.1
  in requirements.R) -> benchmarks/data/qte_golden.json; parity tests
  cover 4 scenarios x {CiC,QDiD} x {panel,RCS} at atol=1e-10, type-1
  micro-fixtures at atol=0, seeded-R SE block statistically
- Docs: REGISTRY entry + cross-reference rows, api rst, references,
  llms(-full).txt, README/choosing/r_comparison/practitioner catalogs,
  estimator count 20 -> 22 (incl. paper.md + new Athey2006 bib entry),
  TODO deferral rows (covariates/bounds/analytical-SE/staggered/ATC +
  tutorial and practitioner-handler follow-ups)

Deferred and documented per the merged PR-A review stack (#678):
covariates, discrete-outcome bounds, analytical SEs, staggered designs,
treatment-on-controls.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011hismLBFcUbUzvDRq8ruWb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-ci Triggers CI test workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant