Skip to content

feat(psychometric): recover Driver p.16 TRAITVARstd after positive TRAITVAR - #207

Closed
seonghobae wants to merge 2 commits into
agent/psychometric-standardised-initial-latent-variancefrom
agent/psychometric-standardised-trait-variance
Closed

feat(psychometric): recover Driver p.16 TRAITVARstd after positive TRAITVAR#207
seonghobae wants to merge 2 commits into
agent/psychometric-standardised-initial-latent-variancefrom
agent/psychometric-standardised-trait-variance

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Stacked on #205 (T0VARstd). Next licensed 2017-era summary.ctsemFit.R std after forming T0VAR/T0VARstd is TRAITVARstd.

Driver, Oud, and Voelkle (2017, Table 2, p. 12 TRAITVAR φ_ξ; §7.1, pp. 18–19; p. 16 suffix std; footnote 4; JSS PDF re-opened 2026-08-23T22:21Z) name traits the stable between-subject differences. The 2017-era source forms TRAITVARstd only when TRAITVAR != 0:

TRAITVARdiag <- diag(diag(TRAITVAR))
TRAITVARstd <- solve(sqrt(TRAITVARdiag)) %&% TRAITVAR

OpenMx %&% is t(A) %*% B %*% A. Unlike T0VARstd, there is no +diag(c(ridging)) addend. Scalar map after strictly positive TRAITVAR is trait / trait = 1.

Recovery

  • recover_standardised_trait_variance(trait, clock) forms strictly positive trait, then 1/√trait, then the quadratic.
  • Distinct positive trait recover the same 1 (to_bits equal).
  • Zero TRAITVAR fails closed (2017-era source skips forming TRAITVARstd).
  • Non-event clock fails closed.
  • TRAITVAR does not require a < 0.

Claim boundary

  • Unstandardised TRAITVAR is not TRAITVARstd (equal numbers when trait = 1 remain distinct named quantities).
  • T0VARstd is not TRAITVARstd even when both equal 1.
  • addedT0TIPREDVAR t0_b² v is not TRAITVARstd.

Meredith (1993) and Mislevy (1991) remain closed (Unpaywall 2026-08-23T22:21Z: is_oa: false, 0 locations).

Do not merge without an independent APPROVE plus exact-head required-check success. Do not self-approve. Do not request Copilot.

…AITVAR

Map between-subject TRAITVAR through 2017-era summary.ctsemFit.R as
solve(sqrt(diag(TRAITVAR))) %&% TRAITVAR after strictly positive
trait. OpenMx %&% is t(A)%*%B%*%A; unlike T0VARstd there is no ridge
addend. The scalar correlation is trait/trait = 1. Refuse
unstandardised TRAITVAR, T0VARstd even when both equal 1, and
addedT0TIPREDVAR. TRAITVAR does not require a<0.
@coderabbitai

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

Copy link
Copy Markdown
Contributor Author

Folded into the consolidation vehicle #231; this draft stays open until the vehicle merges, then closes as superseded-by-consolidation.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Superseded by consolidation: this slice's Driver et al. (2017) standardization recovery landed on protected main through the integration vehicles (#231/#232), and its contract coverage is carried by the reconciled suites (multilevel_event_time_recovery_contract, rubin_and_mean_gate_contract) with test-signature repair tracked in #234. The stacked-draft form is retired to keep the delivery queue at review-ready work only; no capability is lost — the exact-head provenance remains in the vehicle PR descriptions and CHANGELOG.

@seonghobae seonghobae closed this Aug 25, 2026
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