Unstandardized parameter estimates differ from std.lv estimates with standard normal latent variables

74 views
Skip to first unread message

Jeremiah Kokomo

unread,
May 19, 2022, 4:52:01 AM5/19/22
to lavaan
I fit an SEM where all observed measures of latent variables ("x") were standardized (mean = 0, var = 1) prior to fitting the model. As shown in the figure below, observed measures load onto 4 latent factors ("y"): 2 exogenous, 2 endogenous. Additionally, an observed, exogenous, unstandardizedbinary covariate ("treated") representing treatment status from a randomized experiment is included in the regression equations for the endogenous factors. The figure shows loadings and endogenous observed residual variances are freely estimated,  exogenous observed variable variance is fixed, and all latent factors are fixed to be standard normal (via e.g. y ~ 0*1 and y ~~ 1*y for all 4 factors). Note that I do not estimate a covariance between "treated" and exogenous factors {y1, y3} because it's an experiment.
example2.JPG
I fit my model with sem() and the unstandardized parameter estimates ("est") correctly reflect standard normal factors, as demonstrated in the red box below. 

However, given every observed variable except "treated" was standardized during pre-processing and I set the latent factors ("y") to be standard normal, why does est != std.lv in the blue-boxed cells?

example.jpg

Brett

unread,
May 19, 2022, 4:53:21 PM5/19/22
to lavaan
Someone else should confirm, but I think the reason is that endogenous latent variable y,  y ~~ 1*y fixes the RESIDUAL variance to 1 while std.lv == TRUE will fix the TOTAL variance of y to 1.

FWIW, would also help remind people that inferences about the standardized estimates can be quite different from the unstandardized estimates to add columns for the se, z statistic, ec. to the result - se.std.lv, z.sd.lv.

Terrence Jorgensen

unread,
May 23, 2022, 1:48:51 PM5/23/22
to lavaan

Someone else should confirm, but I think the reason is that endogenous latent variable y,  y ~~ 1*y fixes the RESIDUAL variance to 1 while std.lv == TRUE will fix the TOTAL variance of y to 1.

Confirmed.

Terrence D. Jorgensen
Assistant Professor, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam
 
Reply all
Reply to author
Forward
0 new messages