Skip to content

feat(psychometric): recover 2017-era commented asymptotes=TRUE TRAITVAR rewrite on main - #347

Draft
seonghobae wants to merge 2 commits into
mainfrom
agent/psychometric-asymptotes-true-trait-var-on-main
Draft

seonghobae wants to merge 2 commits into
mainfrom
agent/psychometric-asymptotes-true-trait-var-on-main

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Summary

psychometric_core recovers the 2017-era commented asymptotes=TRUE TRAITVAR rewrite as the scalar a² · trait on current main.

This is an independent successor of queued asymTRAITVAR trait / a² (#330) and queued TRAITVARstd (on main). It does not depend on unpublished crates and is not stacked on those PRs. cran/ctsem 2.5.0 summary.ctsemFit.R comments if(asymptotes==TRUE) TRAITVAR <- DRIFT %&% TRAITVAR immediately after TRAITVAR <- mxEval(TRAITVAR, mxobj, compute=TRUE). That rewrite is not in the active outlist. OpenMx %&% is t(A) %*% B %*% A. Driver, Oud, and Voelkle (2017, Table 2, p. 12; §4.3, p. 9; §7.1, pp. 18–19; Eq. 1, p. 4; p. 16; JSS PDF re-opened 2026-08-31T05:20Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104) name TRAITVAR φ_ξ the latent trait variance of a stable extra process with DRIFT and DIFFUSION fixed to zero. Form a first, then square, then multiply by trait. Active companion rewrites convert asymptotic parameterization back to original CINT and TIPREDEFFECT by multiplying by -DRIFT. Do not import unpublished #330 trait / a² helpers.

A zero trait is exactly zero even if a ≥ 0. a ≥ 0 with a nonzero trait fails closed. Numeric: a = −0.5, trait = 1 recovers 0.25, distinct from TRAITVARstd (1), from asymDIFFUSION -q / (2 a) (0.4 when q = 0.4), and from addedTIPREDVAR (B / a)² v (1 when B = 0.5, v = 1). Stored trait / a² = 4 recovers original TRAITVAR 1. Unstandardised TRAITVAR is not this rewrite. A non-event clock fails closed.

Meredith (1993) remains unread (Unpaywall 2026-08-31T05:10Z: is_oa: false; Springer content/pdf is an HTML stub; escholarship hits are citations). Mislevy (1991, Psychometrika, 56, 177–196, DOI 10.1007/bf02294457) remains unread on the same terms. Still not a Kalman filter, not a matrix expm, not ESEM estimation, not DSEM, and not ctsem estimation.

Verification

  • cargo fmt --all
  • cargo clippy -p psychometric_core --all-targets -- -D warnings
  • cargo test -p psychometric_core --lib (189 passed)
  • cargo test -p psychometric_core --test multilevel_event_time_recovery_contract (108 passed)
  • cargo test -p psychometric_core --test scientific_claim_boundary_contract (53 passed)
  • RUSTDOCFLAGS='-D warnings' cargo doc -p psychometric_core --no-deps

Do not self-approve. Do not merge without independent non-author APPROVE + exact-head required-check success.

…AR rewrite on main

Restore the commented summary.ctsemFit.R rewrite
`if(asymptotes==TRUE) TRAITVAR <- DRIFT %&% TRAITVAR` as the scalar
map `a² · trait` on current main. Form a first, then square, then
multiply by trait. Zero trait is exactly zero even if a ≥ 0. Nonzero
trait with a ≥ 0 fails closed. Do not import unpublished #330 helpers.
@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.

…n-main

Resolve the CHANGELOG.md append conflict by keeping both entries.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Restack on protected main (a243f18)

Non-force merge of origin/main (merge commit aebe0878); the only conflict was the CHANGELOG.md append, both entries kept.

Local evidence on the pushed head (toolchain 1.98.0): cargo test -p psychometric_core 367 passed / 0 failed, clippy -D warnings clean, cargo fmt --all --check clean, documentation/workspace/docstring contracts PASS, git diff --check clean.

🤖 Generated with Claude Code

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