Skip to content

feat(psychometric): restore Driver Eq. 5 of addedT0TIPREDVAR λ² t0_b² v on main - #308

Draft
seonghobae wants to merge 3 commits into
mainfrom
agent/psychometric-eq5-added-t0-tipred-var-on-main
Draft

seonghobae wants to merge 3 commits into
mainfrom
agent/psychometric-eq5-added-t0-tipred-var-on-main

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Outcome

Restores the executable Driver, Oud, and Voelkle (2017) Eq. 5 of 2017-era addedT0TIPREDVAR scalar λ² t0_b² v on current main after 0ce16e8 dropped the pre-consolidation code while research notes already named the map (register items 71–72).

Independent of open #307 addedT0TIPREDVAR t0_b² v, #306 addedTIPREDVARstd, #305 discreteTIPREDEFFECTstd, #304 TDPREDEFFECTstd, #303 T0TDPREDEFFECTstd, #302 T0TIPREDEFFECTstd, #300 TIPREDEFFECTstd, #299 asymTIPREDEFFECTstd, #298 DRIFTstd, #297 DIFFUSIONstd, #296 discreteDIFFUSIONstd, #280 discreteDRIFTstd, and #272 TIPREDVARstd. Do not stack on those PRs. Unpublished #307 recover_initial_time_independent_predictor_variance is not called; the latent extra is formed inline.

JSS PDF re-opened 2026-08-30T14:06Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104. Equation 5 (p. 5), Table 3 (p. 13), Table 2 (p. 12), p. 16, and §7.2 (pp. 20–21) were read from that PDF in this cycle. 2017-era summary.ctsemFit.R in ctsem 2.1.0 (lines 429–431) was re-read from the prior restore notes.

  • Equation 5 writes y_i(t) = Γ + Λ η_i(t) + ζ_i(t) with ζ ~ N(0, Θ) and Γ ~ N(τ, Ψ).
  • Immediately after T0TIPREDEFFECTstd, the 2017-era summary.ctsemFit.R forms addedT0TIPREDVAR = T0TIPREDEFFECT %*% TIPREDVAR %*% t(T0TIPREDEFFECT) when verbose = TRUE and 'TOTIPRED' is not in stationary. That source comments #is this valid?.
  • The scalar analog of that quadratic form is t0_b² v. Equation 5 of that extra, with θ = 0 and ψ = 0, is λ² t0_b² v.
  • Form t0_b first, then square, then multiply by v, then (λ extra) λ. Do not form λ² first: at λ = 1e308, extra = 1e-308, λ² overflows and λ² extra is non-finite, but (λ extra) λ = 1e308.
  • A zero loading or zero extra is exactly zero. v < 0 fails closed. T0 is an event-time occasion, so a non-event clock fails closed. An overflowing product fails closed.
  • Free T0TIPREDEFFECT does not require stable a < 0.
  • t0_b² v is the latent extra and is not this observed extra.
  • λ² p_0 + θ is first-occasion observed variance and is not this extra.
  • λ² (B / a)² v is Eq. 5 of addedTIPREDVAR and is not this first-occasion observed extra.
  • MANIFESTVAR θ is measurement error and is not this extra.

Meredith (1993) remains unread (Unpaywall historically is_oa: false; Springer content/pdf is an HTML stub). Mislevy (1991, Psychometrika, 56, 177–196) remains unread on the same terms (DOI 10.1007/bf02294457).

Still not a Kalman filter, not a matrix expm, not ESEM estimation, not DSEM, and not ctsem estimation.

Local cargo test -p psychometric_core: 189 lib tests, 109 multilevel tests, 53 scientific-claim tests, plus crate/ESEM/plausible/Rubin contracts, all passed.

Do not squash-merge without independent non-author APPROVE plus exact-head required-check success. Do not self-approve. Do not wait on Checks for this or sibling psychometric PRs.

… v on main

Form t0_b first, then square, then multiply by v, then (λ extra) λ with θ = 0.
JSS PDF re-opened 2026-08-30T14:06Z. Register items 71–72. Independent of #307.
@coderabbitai

coderabbitai Bot commented Aug 30, 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.

seonghobae added a commit that referenced this pull request Aug 30, 2026
…v on main

Form addedTIPREDVAR first, then (λ extra) λ with θ = 0. JSS PDF re-opened
2026-08-30T14:06Z. Register items 73–74. Independent of #308.
cargo fmt --all -- --check failed on 0841f8d: wrap long test signatures
and rustfmt-sort psychometric_core imports. No measurement change.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Head is now 16fc3ae (style(psychometric): rustfmt Eq. 5 of addedT0TIPREDVAR restore on 0841f8d). Format/lint failed on the first head; cargo fmt --all -- --check is clean locally. Independent non-author APPROVE still required. Do not self-approve.

@coderabbitai

coderabbitai Bot commented Aug 30, 2026 •

Copy link
Copy Markdown

@seonghobae I will review pull request #308 at head 16fc3ae. I will not approve the pull request.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

#325 is the Eq. 5 composition with MANIFESTVAR: λ² t0_b² v + θ on a fresh branch (agent/psychometric-eq5-added-t0-tipred-var-plus-theta). This PR remains the θ = 0 extra λ² t0_b² v. They are distinct maps. Four-file constraint on #325. Not merging either without independent non-author APPROVE.

…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 6f17d608); 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 368 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