feat(psychometric): recover Driver p.16 MANIFESTVARstd after positive Θ - #210
Conversation
Map measurement-error MANIFESTVAR through 2017-era summary.ctsemFit.R as solve(sqrt(diag(MANIFESTVAR))) %&% MANIFESTVAR after strictly positive θ. OpenMx %&% is t(A)%*%B%*%A; unlike TRAITVARstd the 2017-era source adds ridging and the default ridge is 0. The 2017-era dimnames assignment to latentNames is a source bug and is not this map. The scalar correlation is θ/θ = 1. Zero θ makes solve(sqrt(0)) fail and fails closed. Refuse unstandardised MANIFESTVAR, MANIFESTTRAITVARstd even when both equal 1, and Eq. 5 Var(y). MANIFESTVAR does not require a<0.
|
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 |
Current-head verification\n\n- Exact head:
|
|
Folded into the consolidation vehicle #231; this draft stays open until the vehicle merges, then closes as superseded-by-consolidation. |
|
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. |
Stacked on #208 (
MANIFESTTRAITVARstd). Next licensed 2017-erasummary.ctsemFit.Rstd after the measurement-side trait matrix isMANIFESTVARstd(Θ correlation; counterpart to Ψ_τ).Driver, Oud, and Voelkle (2017, Table 2, p. 12
MANIFESTVARΘ; Eq. 5, p. 5; p. 16 suffixstd; footnote 4; JSS PDF re-opened 2026-08-23T22:40Z) nameMANIFESTVARthe residual covariance of the indicators. The 2017-era source formsMANIFESTVARstdwheneververbose = TRUE:OpenMx%&%ist(A) %*% B %*% A. UnlikeTRAITVARstd, the 2017-era source does adddiag(c(ridging), n.manifest). The defaultridging = FALSEadds 0, not0.0001; that ridge is a numerical hack and is not this exact map. The 2017-era source assignsdimnames(MANIFESTVARstd)tolatentNames; the matrix isn.manifest × n.manifest. That assignment is a source bug and is not this exact map. Scalar map after strictly positiveMANIFESTVARisθ / θ = 1.Recovery
recover_standardised_manifest_variance(θ, clock)forms strictly positiveθ, then1/√θ, then the quadratic.θrecover the same 1 (to_bitsequal).MANIFESTVARfails closed. UnlikeTRAITVAR/MANIFESTTRAITVAR, the 2017-era source does not skip formingMANIFESTVARstdwhenθ = 0;solve(sqrt(0))fails.MANIFESTVARdoes not requirea < 0.Claim boundary
MANIFESTVARis notMANIFESTVARstd.MANIFESTTRAITVARstdis notMANIFESTVARstdeven when both equal 1 (indicator-level trait vs contemporaneous measurement error).Var(y) = λ² Var(η) + θis notMANIFESTVARstd.Meredith (1993) and Mislevy (1991) remain closed (Unpaywall re-checked this cycle:
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.