Path analysis with non normal data.

110 views
Skip to first unread message

Nick Rosemarino

unread,
Nov 30, 2023, 1:15:26 AM11/30/23
to lavaan
Hi all, 

Quick questions on how I should handle non-normal data in lavaan.

Usually, I would run the model using code similar to what can be found below. From my understanding this is asking lavaan to bootstrap the standard errors
fNM.NR.PATH  <- sem(NM.NR.PATH ,data=D_, se="boot", bootstrap=2000)

However, from my understanding, running the model with maximum likelihood estimation with robust standard errors and Satorra-Bentler scaled test-statistic is appropriate given my data is a bit skewed. Therefore, this is the code I used:
fNM.NR.PATH  <- sem(NM.NR.PATH ,data=D_, se="robust.sem", estimator = 'MLM', bootstrap=2000)

My questions are: 
1. Did I use the right code given the non-normality of my data?

2. When I ran the code using se="robust.sem", estimator = 'MLM', bootstrap=2000, lavaan immediately printed out my results. Typically when I use bootstraps in a large sample (N = 302), lavaan takes at least a few seconds (if not minutes) to complete the analysis.

 Additionally, when using bootstraps, I usually see this printed in my summary output:  "Number of requested bootstrap draws=2000, Number of successful bootstrap draws  =2000". However in this case, this was not included in my output.

Thus I am wondering, did lavaan actually perform any bootstrapping?

Thanks!
Nick



Shu Fai Cheung (張樹輝)

unread,
Nov 30, 2023, 1:36:52 AM11/30/23
to lavaan
Hi Nick,

In your second call:

fNM.NR.PATH  <- sem(NM.NR.PATH ,data=D_, se="robust.sem", estimator = 'MLM', bootstrap=2000)

as far as I understand,  se="robust.sem" asks lavaan to compute robust SE, not bootstrap SE. Therefore, bootstrap=2000 is ignored.

You should see the following in the printout:

Parameter Estimates:

  Standard errors                           Robust.sem
  Information                                 Expected
  Information saturated (h1) model          Structured

The SE row is Robust.sem, not bootstrap.

Hope this helps.

-- Shu Fai

Nick Rosemarino

unread,
Nov 30, 2023, 1:54:30 AM11/30/23
to lavaan
Hi Shu Fai, 

This definitely helps-thanks for your response!

In your opinion, for non-normal data, do you think it's more appropriate to use bootstrapped standard errors (se="boot", bootstrap=2000) or maximum likelihood estimation with robust standard errors (se= "robust.sem")?

Thanks again!

Reply all
Reply to author
Forward
0 new messages