Skip to content

feat(psychometric): recover Driver lagged covariance of predetermined T0VAR on main - #367

Draft
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-predetermined-lagged-t0var-on-main
Draft

feat(psychometric): recover Driver lagged covariance of predetermined T0VAR on main#367
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-predetermined-lagged-t0var-on-main

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Summary

psychometric_core recovers the lagged covariance of §4.3 predetermined T0VAR independently on current main (register item 47). Driver, Oud, and Voelkle (2017, Eq. 3–4, pp. 4–5; §4.3, pp. 9–10; Table 2, p. 12; p. 16; §7.2, pp. 20–21; JSS PDF re-opened 2026-08-31T10:02Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104) treat the first time point as predetermined when no assumptions are made about the process prior to T0.

This is an independent companion of still-unmerged PR #365 (item 46, Eq. 5 of predetermined later observed), PR #363 (item 45, predetermined later latent), PR #310 (discreteDRIFTstd), PR #357 (asymptotes=TRUE DIFFUSION rewrite), PR #355 / #352 (asymptotes=TRUE TIPREDEFFECT rewrite), and PR #349 (asymptotes=TRUE CINT rewrite). It branches from origin/main 1bc02f58, does not wait for those drafts, and is not stacked on them. Unpublished #363 recover_predetermined_later_latent_variance and unpublished #365 observed maps are not imported; the lagged composition is formed INLINE from on-main recover_trait_plus_state_lagged_covariance and recover_asymptotic_time_independent_predictor_variance. Stationary lagged covariance is already on main as recover_stationary_lagged_latent_covariance.

Section 4.3 treats the first time point as predetermined when no assumptions are made about the process prior to T0: free first-occasion variance p_0 is 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.

  • Setting p_0 = −q / (2 a) recovers the stationary lagged map.
  • Stationary lagged covariance uses −q / (2 a) in place of free p_0 and is not this map when p_0 is free.
  • Later-occasion variance includes Q_Δt and is not this lagged map (formed INLINE from on-main recoveries).
  • Evolving trait + p_0 + (B / a)² v as if it were all state is not this map.
  • Free p_0 is not this map.
  • A zero-diffusion carry with a ≥ 0 is e^{a Δt} p_0 and is kept.
  • Nonzero TI extra still requires a < 0.

Fail-closed EventTime-only clocks, non-positive Δt, and invalid numeric input. Three refuse helpers: refuse_stationary_lagged_latent_covariance_as_predetermined_lagged_latent_covariance, refuse_predetermined_later_latent_variance_as_predetermined_lagged_latent_covariance, refuse_decayed_predetermined_total_as_predetermined_lagged_latent_covariance.

Meredith (1993) remains unread (Unpaywall 2026-08-31T10:02Z: is_oa: false; title Measurement Invariance, Factor Analysis and Factorial Invariance; Springer content/pdf historically an HTML stub). Mislevy (1991, Psychometrika, 56, 177–196, DOI 10.1007/bf02294457) remains unread (Unpaywall 2026-08-31T10:02Z: is_oa: false). The 1988 ETS RR of the same title is OA-flagged by Unpaywall (10.1002/j.2330-8516.1988.tb00310.x) but Wiley pdfdirect returned Cloudflare 403; it is not the 1991 journal article. Still not a Kalman filter, not a matrix expm, not ESEM estimation, not DSEM, and not ctsem estimation.

Plan

Fail-closed scalar recover_predetermined_lagged_latent_covariance(trait, p_0, B, v, a, Δt, clock) as trait + e^{a Δt} p_0 + (B / a)² v on origin/main, forming the lagged composition INLINE from on-main recoveries, with three refuse helpers, three error variants, CHANGELOG, ADR 0005 timestamp, CLAUDE.md, research notes item 47 timestamp, and crate/contract tests. Independent of #365, #363, #310, #357, #355, #352, and #349.

Verification

  • cargo clippy -p psychometric_core --all-targets -- -D warnings (clean)
  • cargo test -p psychometric_core --lib predetermined_lagged_latent (3 passed; 186 filtered)
  • cargo test -p psychometric_core --test multilevel_event_time_recovery_contract predetermined_lagged_latent (2 passed)
  • cargo test -p psychometric_core --test scientific_claim_boundary_contract predetermined_lagged_latent (1 passed)
  • cargo test -p psychometric_core --lib stationary_later_variance_boundary_messages (1 passed)

Do not rustfmt lib.rs (reorders types after functions).

Opened by: Grok Build (xAI) on behalf of Seongho Bae.

Do not merge without independent non-author APPROVE + exact-head required-check success. Do not convert from draft. Do not self-approve. Do not request Copilot.

… T0VAR on main

Restore the §4.3 predetermined lagged T0VAR map on current main independently
of unpublished #363 and #365. Form trait + e^{a Δt} p_0 + (B / a)² v INLINE
from on-main recoveries. Setting p_0 = −q/(2a) recovers the stationary lagged
map as a number, not as the same named quantity. A zero-diffusion carry with
a ≥ 0 is kept.

JSS PDF re-opened 2026-08-31T10:02Z from
https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104
@coderabbitai

coderabbitai Bot commented Aug 31, 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant