Skip to content

feat(psychometric): recover Eq. 5 of Driver later-occasion predetermined T0VAR on main - #365

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

feat(psychometric): recover Eq. 5 of Driver later-occasion predetermined T0VAR on main#365
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-eq5-predetermined-later-t0var-on-main

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Summary

psychometric_core recovers Equation 5 of later-occasion §4.3 predetermined T0VAR independently on current main (register item 46). Driver, Oud, and Voelkle (2017, Eq. 5, p. 5; 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-31T09:55Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104) write y_i(t) = Γ + Λ η_i(t) + ζ_i(t) with ζ ~ N(0, Θ) and Γ ~ N(τ, Ψ).

This is an independent companion of still-unmerged 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 is not imported; the later latent is formed INLINE from on-main recover_discrete_latent_variance, recover_trait_plus_state_latent_variance, and recover_asymptotic_time_independent_predictor_variance, then recover_manifest_trait_plus_state_observed_variance. Stationary later-occasion observed variance is already on main as recover_stationary_later_observed_variance.

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–4 evolve that state as e^{2 a Δt} p_0 + Q_Δt. Trait variance and addedTIPREDVAR are time-invariant between-subject and do not enter Q_Δt. The later-occasion latent composition is trait + e^{2 a Δt} p_0 + Q_Δt + (B / a)² v. Equation 5 of that composition is λ²(trait + e^{2 a Δt} p_0 + Q_Δt + (B / a)² v) + θ + ψ.

  • A zero loading is exactly θ + ψ.
  • Setting p_0 = −q / (2 a) recovers the stationary later-occasion observed variance.
  • Stationary later observed variance uses −q / (2 a) in place of free p_0 and is not this map when p_0 is free.
  • MANIFESTVAR θ is not Var(y_t).
  • The predetermined later-occasion latent variance is not Var(y_t).
  • Nonzero diffusion with a ≥ 0 is a growing process and is kept (unlike the stationary later-occasion map, which fails closed on a ≥ 0).

Fail-closed EventTime-only clocks, non-positive Δt, and invalid numeric input. Three refuse helpers: refuse_predetermined_later_latent_variance_as_observed_variance, refuse_measurement_error_as_predetermined_later_observed_variance, refuse_stationary_later_observed_variance_as_predetermined_later_observed_variance.

Meredith (1993) remains unread (Unpaywall 2026-08-31T09:50Z: 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-31T09:50Z: is_oa: false; title Randomization-Based Inference about Latent Variables from Complex Samples). 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_later_observed_variance(λ, trait, p_0, q, B, v, a, Δt, θ, ψ, clock) as λ²(trait + e^{2 a Δt} p_0 + Q_Δt + (B / a)² v) + θ + ψ on origin/main, forming the later latent INLINE from on-main recoveries, with three refuse helpers, three error variants, CHANGELOG, ADR 0005 timestamp, CLAUDE.md, research notes item 46 timestamp, and crate/contract tests. Independent of #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_later_observed (3 passed; 186 filtered)
  • cargo test -p psychometric_core --test multilevel_event_time_recovery_contract predetermined_later_observed (2 passed)
  • cargo test -p psychometric_core --test scientific_claim_boundary_contract predetermined_later_observed (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.

…ned T0VAR on main

Restore the §4.3 predetermined later-occasion observed variance on current
main independently of unpublished #363. Form the later latent INLINE from
on-main recoveries, then λ²p + θ + ψ. Setting p_0 = −q/(2a) recovers the
stationary later observed map as a number, not as the same named quantity.
Nonzero diffusion with a ≥ 0 is a growing process and is kept.

JSS PDF re-opened 2026-08-31T09:55Z 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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant