Skip to content

feat(psychometric): recover 2017-era active asymptotes=TRUE CINT rewrite on main - #349

Draft
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-asymptotes-true-cint-on-main
Draft

feat(psychometric): recover 2017-era active asymptotes=TRUE CINT rewrite on main#349
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-asymptotes-true-cint-on-main

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Summary

psychometric_core recovers the 2017-era active asymptotes=TRUE CINT rewrite as the scalar −a · κ on current main.

This is an independent successor of on-main asymCINT -κ / a and on-main discreteCINT / CINTstd. It does not depend on unpublished crates and is not stacked on queued #318#348. cran/ctsem 2.5.0 summary.ctsemFit.R forms if(asymptotes==TRUE) CINT <- -DRIFT %*% CINT immediately after CINT <- mxobj$CINT$values. That rewrite is active and is in the outlist. Driver, Oud, and Voelkle (2017, Table 2, p. 12; Eq. 1, p. 4; Eq. 3, p. 5; p. 16; JSS PDF re-opened 2026-08-31T05:20Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104) name κ CINT. Form a first, then negate, then multiply by κ. When asymptotes=TRUE the stored CINT is the asymptotic parameterization Table 2 names asymCINT -κ / a; multiplying by -DRIFT converts that stored value back to original κ. The companion active rewrite TIPREDEFFECT <- -DRIFT %*% TIPREDEFFECT uses the same operator on a different matrix and is not this intercept map.

A zero intercept is exactly zero even if a ≥ 0. a ≥ 0 with a nonzero intercept fails closed. Numeric: a = −0.5, κ = 0.4 recovers 0.2, distinct from unstandardised CINT (0.4), from asymCINT -κ / a (0.8), from discreteCINT at Δt = 1 (≈ 0.3148), and from CINTstd κ / √p (≈ 0.6325 when p = 0.4). Stored -κ / a = 0.8 recovers original CINT 0.4. Unstandardised CINT 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)
  • cargo test -p psychometric_core --test multilevel_event_time_recovery_contract (108)
  • cargo test -p psychometric_core --test scientific_claim_boundary_contract (53)
  • RUSTDOCFLAGS='-D warnings' cargo doc -p psychometric_core --no-deps

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

@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