Skip to content

feat(psychometric): recover Driver Eq. 5 of T0TOTALVAR as λ² (t0_trait² · trait + p_0) + θ - #328

Draft
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-eq5-t0-total-var-on-main
Draft

feat(psychometric): recover Driver Eq. 5 of T0TOTALVAR as λ² (t0_trait² · trait + p_0) + θ#328
seonghobae wants to merge 1 commit into
mainfrom
agent/psychometric-eq5-t0-total-var-on-main

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

One atomic recover on current main (6444a81). Driver, Oud, and Voelkle (2017, Eq. 5, p. 5; Table 2, p. 12 TRAITVAR / T0VAR / LAMBDA / MANIFESTVAR; §7.1, pp. 18–19; 2017-era summary.ctsemFit.R lines 322–339; JSS PDF re-opened 2026-08-30T20:06Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104).

Map. 2017-era source forms T0TRAITVAR <- T0TRAITEFFECT %*% TRAITVAR %*% t(T0TRAITEFFECT) then T0TOTALVAR <- T0TRAITVAR + T0VAR. Equation 5 of that total, with MANIFESTTRAITVAR zero, is λ² (t0_trait² · trait + p_0) + θ. Form extra first, then add free T0VAR, then recover_manifest_observed_variance(λ, total, θ). Do not form λ² first. This crate does not export recover_initial_total_variance; form extra and the sum inline.

Fail closed. trait < 0 or p_0 < 0 fails closed. Non-event clock fails closed. Zero extra, zero p_0, or zero loading is exactly θ. Free T0TRAITEFFECT and free T0VAR do not require stable a < 0.

Distinct from unstandardised T0TOTALVAR extra + p_0 (unpublished #324), T0TOTALVARstd total / total = 1 (unpublished #326), Eq. 5 of free T0VAR λ² p_0 + θ, Eq. 5 of T0TRAITVAR λ² extra + θ (unpublished #321), and MANIFESTVAR θ. Also distinct from §4.3 predetermined first-occasion observed variance λ²(trait + p_0 + (B / a)² v) + θ + ψ, which uses raw TRAITVAR not the T0TRAITEFFECT quadratic. Does not implement unstd T0TOTALVAR or T0TOTALVARstd.

Independent of sibling psychometric PRs #327, #326, #325, #324, #322, #321, #320, #319, #318, #317, #316, #315/#272, #314, #313, #312, #311, #310, #309, #308, #307, #306, #305, #304, #303, #302, #300, #299. Does not reuse their branches.

Nine files: event_time.rs, error.rs, lib.rs, scientific_claim_boundary_contract.rs, multilevel_event_time_recovery_contract.rs, ADR 0005, CHANGELOG, CLAUDE.md, research notes (CONTRIBUTING requires the docs slice).

Local verification on fab63b3: cargo fmt -- --check; cargo clippy -p psychometric_core --all-targets -- -D warnings; cargo test -p psychometric_core --lib 188 passed; cargo test -p psychometric_core --test scientific_claim_boundary_contract 53 passed; cargo test -p psychometric_core --test multilevel_event_time_recovery_contract 108 passed.

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.

Do not merge without independent non-author APPROVE plus exact-head required-check success.

…t² · trait + p_0) + θ

One named Driver quantity on current main. Form extra then add free T0VAR
inline, then recover_manifest_observed_variance. Independent of unpublished
#324 recover_initial_total_variance and of #326 T0TOTALVARstd.
@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 57 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f62131aa-be3a-450e-957b-f09f9cac249f

📥 Commits

Reviewing files that changed from the base of the PR and between 6444a81 and fab63b3.

📒 Files selected for processing (9)
  • CHANGELOG.md
  • CLAUDE.md
  • crates/psychometric_core/src/error.rs
  • crates/psychometric_core/src/event_time.rs
  • crates/psychometric_core/src/lib.rs
  • crates/psychometric_core/tests/multilevel_event_time_recovery_contract.rs
  • crates/psychometric_core/tests/scientific_claim_boundary_contract.rs
  • docs/adr/0005-posterior-esem-dsem.md
  • docs/research/multilevel-event-time-recovery.md

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.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown
⚠️ 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.

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