Skip to content

Optional: WR → LS reverse-coupling LCSM (per-transition g_W_L, pooled over the three transitions) #429

Description

@frankbuckley

Note

Drafted by a LLM-based AI tool (Claude Code/Opus 4.8).

Status: optional — decide before building

Raised by notes/202607241600-findings-word-reading-bands.md, which rates it the second of three follow-ups and is explicit that it is weaker than the identification table first makes it look. This issue exists so the option is recorded and can be accepted or declined deliberately, rather than being rediscovered each time someone reads the note. Read the "Why you might not want it" section before scheduling any work.

What it would be

A two-process latent change-score model over word reading W and letter sounds L, with a single reverse coupling g_W_L — prior word-reading level predicting subsequent letter-sound change — pooled across all three transitions, plus arm × window change intercepts. A no-coupling companion (g_W_L dropped) gives the PSIS-LOO contrast, following the established mech-072 / mech-172 convention.

Adjustment set, machine-searched (not hand-written) against a crossover-aware three-slice unroll of dag/dag-language-reading-lagged.dagitty, with latent general ability GA removed throughout because no measured set blocks it: {age, hearing, LS, speech} on the randomised transition, {age, hearing, arm, LS, speech} post-crossover. That is the smallest adjustment set of any reverse coupling in the suite — smaller than the seven-node set lcsm-081 was built around — and the reason is structural: in the DAG letter sounds have exactly one skill parent, speech, so there is very little to block. Two processes rather than lcsm-081's three, and a smaller covariate block, so it is genuinely cheap to fit.

Ids are not free. lcsm-083 / lcsm-183 are unavailable (83 and 84 are dose-response models); pick the next free pair against definitions.MODEL_REGISTRY and docs/models/registry-counts.json at build time.

What it would add over what is already fitted

med-176 (reverse longitudinal mediation, W_t2 → L_t4, gate-passing) already answers the direction question: NIE +0.014 on the probability scale (89% CrI +0.001 to +0.035), +0.45 letters of 32, P = 0.963 — moderate evidence that reading feeds back into letter-sound knowledge. What it does not give is a per-transition coupling: it is a single t2 → t4 window and its estimand is the share of the intervention's effect on letter sounds that runs through word reading, not a lagged level → change coefficient. lcsm-081 shows the reverse-coupling programme works where it is identifiable (WR → TR +0.084, 89% CrI +0.049 to +0.121, P ≈ 1.000; WR → TE +0.062, +0.015 to +0.112, P = 0.984).

So the addition is: pooling across all three transitions instead of one window, and a coupling on the same scale as the rest of the LCSM family.

Why you might not want it

med-176 is fragile: its own sensitivity sweep tips the NIE to zero at an unmeasured mediator → outcome confounder worth 30% of the fitted coefficient (robust_over_full_sweep: false), and latent general ability — which confounds both directions symmetrically and is unblockable by construction — is exactly such a confounder. A cheap adjustment set buys freedom from measured confounding; it buys nothing against GA, so a second model inherits that fragility wholesale rather than firming the result up. Build this if the per-transition estimand is independently wanted, not in the expectation that it strengthens med-176.

Two related things are settled and should not be re-asked: the reverse blending coupling (lcsm-082 already returns prior reading → blending change +0.055, 89% CrI −0.036 to +0.147, P = 0.835, with no evidence either direction dominates), and the change-on-change form of the question (lcsm-091 shows those terms are not estimable at n ≈ 54 — intervals two to five times wider than the level terms and centred on zero).

Acceptance criteria (if built)

  • Two new modules in src/language_reading_predictors/statistical_models/ (coupling + no-coupling comparator), each a SPEC = ModelSpec(kind="lcsm", ...) + fit(), ids confirmed next-free against definitions.MODEL_REGISTRY.
  • Adjustment set as derived above, re-verified against the current dag/dag-language-reading-lagged.dagitty at build time (it may change if Decide whether WR_t → NW_{t+1} belongs in the lagged DAG (and refresh the stale d-separation asset) #428 adopts the WR_t → NW_{t+1} edge).
  • Registered via module auto-discovery; python scripts/check_statistical_documentation.py --write run and registry-counts.json regenerated.
  • Thin report templates under docs/models/{model_id}/ reusing _results_lcsm; docs/models/README.md LCSM table updated; PSIS-LOO coupling-vs-no-coupling comparison wired into scripts/compare_statistical_models.py.
  • --config reporting fits pass the convergence gate (R-hat ≤ 1.01, ESS ≥ 400, BFMI ≥ 0.3, 0 divergences); g_W_L reported as median + 50% / 89% CrI + P(>0), flagged an adjusted association with the residual-GA caveat and an explicit statement that it does not resolve med-176's sensitivity.
  • notes/202607241600-findings-word-reading-bands.md updated with the result, or with the decision not to build.
  • ruff check src/, npm run format:check, npm run spellcheck pass.

Related

notes/202607241600-findings-word-reading-bands.md (pass 3, "What would be worth building" item 2); design context in notes/202607141030-time-lagged-model-designs.md, notes/202607172100-reverse-mediation-wr-ls-direction-spec.md and notes/202607172230-riclpm-direction-plan.md. Models quoted: med-176, med-076, lcsm-081, lcsm-082, lcsm-091. Sequencing note: #428 may amend the lagged DAG, which would require the adjustment set to be re-derived.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions