SEs for standardized parameters

547 views
Skip to first unread message

Brett

unread,
May 26, 2022, 7:19:09 PM5/26/22
to lavaan
After fitting a model, users can pass a lavaan model object to summary() to obtain parameter estimates and the standard errors specified in the call to the fitting function (e.g., sem).  Users can augment this information with standardized parameter estimates if they instead use summary(standardized = TRUE).

One issue I've run into is that using standardized = TRUE does not return standard errors for standardized coefficients. Is there any way to easily obtain these? 

- One idea is to use standardizedsolution(), however the limited documentation I've found indicates that will not return SEs other than model-based SEs (i.e. excludes robust SEs, bootstraps, etc.).
An alternative is to manually scale the standard errors of the unstandardized coefficients by the standard deviation of the variables undergoing standardization. The issue with this is that this information is not found in the found in the model summary object for all variables: the "Variance" section of endogenous latent variables only shows *residual variance* and not *total variance.* Given this, maybe one could manually compute the sample variance of the factor scores derived from the unstandardized model, scale the unstandardized coefficient with this value, then calculate test statistics etc. However, it seems like there must be some better way to do this and I'm not sure if this would provide the correct variance if, e.g. you use FIML with missing data.

Thanks,

Brett

Shu Fai Cheung

unread,
May 26, 2022, 11:10:22 PM5/26/22
to lavaan
If you want to have the bootstrapping SE and CI for the standardized estimates, you may refer to the script in this thread:


Although I do not recommend just scaling the SEs by the SDs of the variables because this does not take into account the sampling variation of the SDs, if this is what you need, you can indeed get the model-implied variances (and covariances) of all observed variables using lavInspect() with "what" set to "implied". For endogenous latent variables, you can get them using lavInspect() with "what" set to "cov.lv", or just set to "cov.all" to get the model-implied variances (and covariances) of all observed variables and latent variables using "cov.all".

Hope this helps.

-- Shu Fai

Hugo Harada

unread,
May 28, 2022, 3:21:41 PM5/28/22
to lav...@googlegroups.com
Brett,

The standardized results are the ones obtained when the variances of the latent variables are set to unity. That happens when std.lv=TRUE in your sem call. 

library(lavaan)

model <- '
  # latent variable definitions
    ind60 =~ x1 + x2 + x3
    dem60 =~ y1 + y2 + y3 + y4
    dem65 =~ y5 + y6 + y7 + y8
  # regressions
    dem60 ~ ind60
    dem65 ~ ind60 + dem60
  # residual (co)variances
    y1 ~~ y5
    y2 ~~ y4 + y6
    y3 ~~ y7
    y4 ~~ y8
    y6 ~~ y8
'

fit <- sem(model,
           data = PoliticalDemocracy)
lavaan::summary(fit,standardized = TRUE)
fit.std <- sem(model,
           data = PoliticalDemocracy,std.lv=TRUE)
lavaan::summary(fit.std,standardized = TRUE)

Compare the std.lv column of this call lavaan::summary(fit,standardized = TRUE) with the Estimate column of lavaan::summary(fit.std,standardized = TRUE).

Std.Err in the second call is what you need?

Regards,

Hugo




--
You received this message because you are subscribed to the Google Groups "lavaan" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lavaan+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/053ace23-cb6c-47b1-b88e-743b4cc0735fn%40googlegroups.com.


--


Adaptativa

Hugo Harada
Sócio-fundador - COO

Adaptativa Inteligência Educacional S.A.
Cel: (11) 96345-0390
Rua Claudio Soares, 72 - Sala 411Pinheiros, CEP 05422-030, São Paulo - SP 
http://www.adaptativa.com.br

Facebook Twitter Google Plus Youtube

Yves Rosseel

unread,
Jun 13, 2022, 7:55:44 AM6/13/22
to lav...@googlegroups.com
> *One issue I've run into is that using standardized = TRUE does not
> return standard errors for standardized coefficients. Is there any
> way to easily obtain these? *

standardizedsolution() will give them.

> One idea is to use standardizedsolution(), however the limited
> documentation I've found indicates that will not return SEs other
> than model-based SEs (i.e. excludes robust SEs, bootstraps, etc.).

standardizedSolution() uses the Delta method to obtain the SEs of the
standardized parameters. This means that they are based on the original
standard errors of the unstandardized parameters. If you used a 'robust'
method, then you will obtain robust standard errors again for the
standardized parameters.

Yves.
Reply all
Reply to author
Forward
0 new messages