First part of lavaan output

64 views
Skip to first unread message

Michael Filsecker

unread,
May 3, 2025, 8:14:26 AM5/3/25
to lav...@googlegroups.com
Dear all,

the first part of lavaan output have the following information:

- Model Test User model
- Model Test baseline Model

I know user model is the model I defined. But what is the "baseline model"?

Second part under Parameter estimates:
Parameter Estimates:

  Standard errors                             Standard
  Information                                 Expected
  Information saturated (h1) model          Structured


Standard errors can be only either standard or Robust, correct?
Information can be only either "Expected" and "Observed". Given that we can manipulate that, under what circumstances would I choose one or the other?
What is this "Saturated (h1) model"?? and what does it mean "structured"?

Thank you for your valuable help.
Kind regards
Michael.

Jeremy Miles

unread,
May 5, 2025, 12:36:54 AM5/5/25
to lav...@googlegroups.com

The baseline model is the model that only includes intercepts and variances.


Example:



library(lavaan)

data("PoliticalDemocracy")

d <- PoliticalDemocracy

model <- '

  # measurement model

    f1 =~ x1 + x2 + x3

    f2 =~ y1 + y2 + y3 + y4

  # regressions

    f1 ~ f2

 '


fitted_ml <- lavaan::sem(model, d)

summary(fitted_ml, fit.measures = TRUE)


Part of the output:


Model Test Baseline Model:


  Test statistic                               406.880

  Degrees of freedom                                21

  P-value                                        0.000


We can fit the baseline model ourselves by specifying intercepts only (watch out for the defaults - I think that you'd need to specify more if you used cfa()):


baseline_model <- '

  x1 ~ 1

  x2 ~ 1

  x3 ~ 1

  y1 ~ 1

  y2 ~ 1

  y3 ~ 1

  y4 ~ 1 

 '

fitted_baseline <- lavaan::sem(baseline_model, d)

summary(fitted_baseline)


This model just estimates intercepts and variances:


Model Test User Model:

                                                      

  Test statistic                               406.880

  Degrees of freedom                                21

  P-value (Chi-square)                           0.000


Model Test Baseline Model:


  Test statistic                               406.880

  Degrees of freedom                                21

  P-value                                        0.000


The baseline (or null) model is the same as the model that we fitted. 


Back to the fitted model:

summary(fitted_ml, fit.measures = TRUE)


And part of our output is:


Parameter Estimates:


  Standard errors                             Standard

  Information                                 Expected

  Information saturated (h1) model          Structured


If we fit with a robust estimator (e.g. MLR):


fitted_mlr <- lavaan::sem(model, d, estimator = "MLR")

summary(fitted_mlr, fit.measures = TRUE)


We get:

 Standard errors                             Sandwich

  Information bread                           Observed

  Observed information based on                Hessian


MLR is a robust method, and is a type of sandwich estimator. You might have come across sandwich estimators in regression when they are used to account for clustering and heteroscedasticity of variance (i.e. when residuals are not i.i.d, using the sandwich package in R, they’re also called robust estimates or Huber-White estimates). There are some equations in this presentation http://www.gvptsites.umd.edu/uslaner/robustregression.pdf.

If ML is used (and assumptions are satisfied, and the sample is large) the expected and observed information converges to the same value. Expected information is faster to calculate and more stable. Sandwich estimators use the inverse of the model information (the ‘bread’)  and an estimate of their variance (the meat / tofu) [see the presentation for why it's a sandwich]. 


At least that’s my understanding.


You can ask lavaan to use expected information with robust estimates:


fitted_mlr_expected <- 

  lavaan::sem(model, d, estimator = "MLR", information = "expected")

summary(fitted_mlr_expected, fit.measures = TRUE)


 Standard errors                             Sandwich

  Information bread                           Expected

  Information saturated (h1) model          Structured


Jeremy






--
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 visit https://groups.google.com/d/msgid/lavaan/CACXLW8_KSj5ZwC8dz4WXspe4vY9QUoHnWPYoSgRWEyeevsn5NA%40mail.gmail.com.

Yves Rosseel

unread,
May 5, 2025, 7:52:19 AM5/5/25
to lav...@googlegroups.com
On 5/3/25 14:14, Michael Filsecker wrote:
> Information can be only either "Expected" and "Observed". Given that we
> can manipulate that, under what circumstances would I choose one or the
> other?
>
> What is this "Saturated (h1) model"?? and what does it mean "structured"?

This is explained in this paper:

https://www.tandfonline.com/doi/full/10.1080/10705511.2021.1877548

Usually, as a user, you do not need to worry about this. lavaan will,
depending on the context, choose these options for you.

Yves.

--
Yves Rosseel
Department of Data Analysis, Ghent University

Michael Filsecker

unread,
May 6, 2025, 3:30:27 PM5/6/25
to lav...@googlegroups.com
thank you Jeremy! I do no want to abuse of your good will but my last simple question is: what does it mean this thing below?

Information saturated (h1) model          Structured

Thank you!

Reply all
Reply to author
Forward
0 new messages