Skip to content

feat(psychometric): recover Driver lagged covariance of predetermined T0VAR - #182

Closed
seonghobae wants to merge 3 commits into
agent/psychometric-predetermined-later-t0varfrom
agent/psychometric-predetermined-lagged-t0var
Closed

feat(psychometric): recover Driver lagged covariance of predetermined T0VAR#182
seonghobae wants to merge 3 commits into
agent/psychometric-predetermined-later-t0varfrom
agent/psychometric-predetermined-lagged-t0var

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Stacked on #181 (542806b) / #49 (6f95142). ADR 0005 executable slice stays inside psychometric_core. This is not a second invariance crate and does not recreate #78 or #80.

psychometric_core recovers the Driver, Oud, and Voelkle (2017, §4.3, pp. 9–10; Eq. 3–5, pp. 4–5; Table 2, p. 12; p. 16; §7.2, pp. 20–21; JSS PDF re-opened 2026-08-23T09:04Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104) scalar lagged covariance of §4.3 predetermined T0VAR. Section 4.3 treats the first time point as predetermined when no assumptions are made about the process prior to the initial time point. Free T0VAR p_0 is then estimated.

Equation 3 writes η(t) = exp(A Δt) η(t0) + …. Equation 4 writes cov(η_t, η_{t-1}) = A_Δt cov(η_{t-1}). Trait variance and addedTIPREDVAR are time-invariant between-subject and do not decay with e^{a Δt}. The lagged composition is trait + e^{a Δt} p_0 + (B / a)² v. Form the lagged free first-occasion covariance first, then include the trait, then include the TI extra variance, then add.

  • Setting p_0 = −q / (2 a) recovers the stationary lagged map.
  • Stationary lagged covariance uses −q / (2 a) in place of p_0 and is not this map when p_0 is free.
  • Evolving trait + p_0 + (B / a)² v as if it were all state is not this map.
  • Free T0VAR p_0 is not this map.
  • Later-occasion variance includes Q_Δt and is not this map.
  • As Δt → ∞ with stable a < 0 the state term vanishes.
  • As Δt → 0+ the composition approaches trait + p_0 + (B / a)² v.
  • A zero-diffusion carry with a ≥ 0 is e^{a Δt} p_0 and is kept.

Equation 5 of that lagged covariance is λ²(trait + e^{a Δt} p_0 + (B / a)² v) + ψ. Independent ε_t does not enter. MANIFESTVAR is not that lagged observed covariance. The predetermined lagged latent covariance is not the predetermined lagged observed covariance. Predetermined later observed variance includes Q_Δt and θ and is not that lagged observed covariance. Stationary lagged observed covariance is not that observed covariance when p_0 is free.

Still not a Kalman filter, not a matrix expm, not ESEM estimation, not DSEM, and not ctsem estimation. Meredith (1993) remains unread (Unpaywall 2026-08-23T09:04Z: is_oa: false; title Measurement Invariance, Factor Analysis and Factorial Invariance). Mislevy (1991, Psychometrika, 56, 177–196) remains unread (Unpaywall 2026-08-23T09:04Z: is_oa: false; title Randomization-Based Inference about Latent Variables from Complex Samples).

Do not merge, self-approve, or request Copilot.

@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

This was referenced Aug 23, 2026
@seonghobae
seonghobae force-pushed the agent/psychometric-predetermined-later-t0var branch from 542806b to 96e8d1c Compare August 23, 2026 20:11
… T0VAR

Map the Driver, Oud, and Voelkle (2017, Eq. 3–5 of §4.3 predetermined
first occasion) lagged covariance of free T0VAR as
trait + e^{aΔt} p_0 + (B/a)²v. Trait and addedTIPREDVAR do not
decay. Setting p_0 = −q/(2a) recovers the stationary lagged map.
Stationary lagged covariance, later-occasion variance, the decayed
total, and p_0 itself remain refused as this composition. Observed
lagged covariance is λ² of that map plus ψ. Independent ε_t does
not enter. A zero-diffusion carry with a ≥ 0 is kept.
@seonghobae

Copy link
Copy Markdown
Contributor Author

Review update

  • Exact head: ee999e1
  • Finding fixed: the scientific boundary test now asserts the direct Driver §4.3 oracle trait + exp(aΔt)·p₀ + addedTIPREDVAR, in addition to distinction checks; this prevents a mutually-different-but-wrong implementation from passing.
  • Local verification: cargo fmt --all -- --check, cargo test -p psychometric_core --all-features (169 unit + 2 crate + 5 ESEM + 94 multilevel + 4 numeric + 6 Rubin + 46 scientific + doctests), cargo clippy -p psychometric_core --all-targets --all-features -- -D warnings, and git diff --check passed.
  • Hosted checks for the new exact head are pending.
  • No qualifying human approval is present and the PR remains Draft; no merge is authorized. Decision: WAIT_AND_REMEDIATE.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Folded into the consolidation vehicle #231; this draft stays open until the vehicle merges, then closes as superseded-by-consolidation.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Superseded by consolidation: this slice's Driver et al. (2017) standardization recovery landed on protected main through the integration vehicles (#231/#232), and its contract coverage is carried by the reconciled suites (multilevel_event_time_recovery_contract, rubin_and_mean_gate_contract) with test-signature repair tracked in #234. The stacked-draft form is retired to keep the delivery queue at review-ready work only; no capability is lost — the exact-head provenance remains in the vehicle PR descriptions and CHANGELOG.

@seonghobae seonghobae closed this Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant