Skip to content

feat(psychometric): recover 2017-era commented asymTOTALVAR after addedTIPREDVAR on main - #341

Draft
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-asym-total-var-after-added-tipred
Draft

feat(psychometric): recover 2017-era commented asymTOTALVAR after addedTIPREDVAR on main#341
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-asym-total-var-after-added-tipred

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Summary

psychometric_core recovers the 2017-era commented-out asymTOTALVAR after addedTIPREDVAR as the three-term scalar -q / (2 a) + trait / a² + (B / a)² v on current main.

This is an independent successor of queued two-term asymTOTALVAR (#340). It does not depend on unpublished crates and is not stacked on #340. Table 2/3 do not name asymTOTALVAR. 2017-era ctsem summary.ctsemFit.R (cran/ctsem 2.5.0) comments asymTOTALVAR <- asymDIFFUSION + asymTRAITVAR with asymTRAITVAR <- solve(DRIFT) %*% TRAITVAR %*% t(solve(DRIFT)), then later comments asymTOTALVAR <- asymTOTALVAR + addedTIPREDVAR immediately after forming addedTIPREDVAR <- asymTIPREDEFFECT %*% TIPREDVAR %*% t(asymTIPREDEFFECT). Driver, Oud, and Voelkle (2017, Eq. 1, p. 4; Eq. 4, p. 5; Table 2, p. 12; §4.3, p. 9; §7.2, pp. 20–21; JSS PDF re-opened 2026-08-31T04:40Z) write dη = (Aη + ξ + Bz + Mx) dt + G dW. The Lyapunov within-subject variance is asymDIFFUSION -q / (2 a). At a stable equilibrium a random intercept in CINT units has process-mean variance trait / a². Section 7.2 names addedTIPREDVAR the stable between-subject variance accounted for by a time-independent predictor, (B / a)² v. Form the two-term total first (1 / a, then square, then multiply by trait, then add asymDIFFUSION). Then include addedTIPREDVAR (unit asymptotic effect, then square, then multiply by v). Then add. This crate does not currently export recover_asymptotic_total_variance or recover_asymptotic_trait_variance; form those terms inline.

A zero trait, a zero diffusion, and a zero TI extra is exactly zero even if a ≥ 0. a ≥ 0 with a nonzero contribution fails closed. A zero TI extra keeps the two-term total. A zero trait and a zero diffusion keep addedTIPREDVAR. p + trait / a² is the two-term commented total and is not this map when addedTIPREDVAR ≠ 0. Stationary T0VAR trait + p + (B / a)² v keeps TRAITVAR in process units and is not this map. (B / a)² v is addedTIPREDVAR and equals this total when q = 0 and trait = 0 and remains a distinct named quantity.

Numeric: a = -0.5, trait = 1, q = 0.4, B = 0.5, v = 1p = 0.4, trait / a² = 4, (B / a)² v = 1, total 5.4. Two-term 4.4 and stationary T0VAR 2.4 are the refuses.

Still not a Kalman filter, not a matrix expm, not ESEM estimation, not DSEM, and not ctsem estimation. Meredith (1993) and Mislevy (1991) remain unread (closed OA).

Claim boundary

Test plan

  • cargo fmt --all
  • cargo clippy -p psychometric_core --all-targets -- -D warnings
  • cargo test -p psychometric_core --all-targets
  • RUSTDOCFLAGS='-D warnings' cargo doc -p psychometric_core --no-deps

Do not convert #310. Do not self-approve. Do not merge without independent non-author APPROVE and exact-head required-check success.

…edTIPREDVAR on main

Recover the later commented three-term total
-q/(2a) + trait/a² + (B/a)² v independently of queued two-term #340.
Form the two-term total first, then include addedTIPREDVAR, then add.
@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

enhancement New feature or request priority: medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant