feat(psychometric): recover 2017-era discreteTDPREDEFFECT e^{a Δt} m on main - #336
feat(psychometric): recover 2017-era discreteTDPREDEFFECT e^{a Δt} m on main#336seonghobae wants to merge 1 commit into
Conversation
…on main
Driver, Oud, and Voelkle (2017, Eq. 3; Table 2; p. 16; 2017-era
summary.ctsemFit.R lines 491–494) form discreteTDPREDEFFECT as
expm(DRIFT * timeInterval) %*% TDPREDEFFECT. The scalar map is
e^{a Δt} m. This is not M, not M x, not e^{A(t−u)} M x, not
Voelkle Eq. 14, and not discreteDRIFT.
Still not a Kalman filter, not a matrix expm, not ESEM estimation,
not DSEM, and not ctsem estimation.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Source-paper check (ctsem 2.5.0, JSS PDF re-opened 2026-08-31)This PR's claim that 2017-era
Stay Draft until that source claim is withdrawn or a different opened source is cited. Not a self-approve. |
Recover the crate-owned footnote-4 standardisation of the discrete
time-dependent predictor coefficient as e^{a Δt} m · √v / √p after
strictly positive asymDIFFUSION and TDPREDVAR. CRAN ctsem 2.5.0 forms
discreteDRIFT and continuous TDPREDEFFECT only; it does not form
discreteTDPREDEFFECT or discreteTDPREDEFFECTstd.
Independent successor of queued unstandardised discreteTDPREDEFFECT
(#336). Do not self-approve.
Summary
psychometric_corerecovers the 2017-era ctsemdiscreteTDPREDEFFECTas the exact scalare^{a Δt} m.Driver, Oud, and Voelkle (2017, Eq. 3, p. 5; Table 2, p. 12; p. 16; 2017-era
summary.ctsemFit.Rlines 491–494; JSS PDF re-opened 2026-08-31T10:26Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104) print discrete-time transformations for a chosen event interval. The 2017-era source forms unstandardiseddiscreteTDPREDEFFECTwheneververbose = TRUEandn.TDpred > 0asOpenMx::expm(DRIFT * timeInterval) %*% TDPREDEFFECT. The scalar map ise^{a Δt} m. Formmfirst, thene^{a Δt} m.Claim boundary
TDPREDEFFECTMis note^{a Δt} m.M xis note^{a Δt} m.e^{A(t−u)} M xis note^{a Δt} m.a_yx Δtis note^{a Δt} m.discreteDRIFTe^{a Δt}is note^{a Δt} m.A^{-1}[e^{A Δt} − I] MisdiscreteCINTarithmetic onMand is not this map.A zero drift is
m. Binary64 underflow ofe^{a Δt}to+0is a vanishing discrete coefficient and is kept. A zero coefficient is exactly zero even if the exponential overflows. Whene^{a Δt}overflows at a finitea Δt, rewrite assign(m) exp(ln|m| + a Δt). Event time only. A non-positive event interval fails closed.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).
Tests
cargo test -p psychometric_core— 189 lib unit tests, 110 multilevel recovery tests, 53 scientific claim-boundary tests, plus crate/ESEM/plausible/Rubin contracts, all passing.cargo doc -p psychometric_core --no-depsis clean underdeny(missing_docs).Register items 106–107.
Stay Draft. Do not self-approve. Do not convert #310.