Estimating exogenous covariances worsening model fit

24 views
Skip to first unread message

Carly P

unread,
Nov 8, 2019, 5:26:58 PM11/8/19
to lavaan

Hi everyone,

 

I am completely stumped on something and am hoping some of you might have helpful suggestions, or might identify something I am missing. I have estimated a linear latent growth model that measures change in a measure administered at multiple time points. I am testing a mediational model in which the slope of the LGM represents the proposed mediator. The script for my model is as follows:

 

model1 <- "INT =~ 1*M0 + 1*M1 + 1*M2 + 1*M3 + 1*M4 + 1*M5

 

SLP =~ 0*M0 + 1*M1 + 2*M2 + 3*M3 + 4*M4 + 5*M5

 

INT~~SLP

 

INT ~ IV + cov1

 

SLP ~ IV

 

DV ~ INT + SLP + IV + cov1 + cov2 + cov3"

 

growthmodel1 <- growth(model1, data=dat, estimator="MLM")

summary(growthmodel1, standardized=T, rsquare=T, fit.measures=T)

 

This model has good fit, as shown in the output below, χ2(80) = 118.35, robust CFI = .987, robust RMSEA = .053, SRMR = .041

 

It was recently suggested to me that I estimate the covariances between all exogenous predictors (beyond those that already have specified regression relationships). However, when I include them in the model, fit substantially worsens and df decrease by only one, as shown below:

 

model2 <- "INT =~ 1*M0 + 1*M1 + 1*M2 + 1*M3 + 1*M4 + 1*M5

 

SLP =~ 0*M0 + 1*M1 + 2*M2 + 3*M3 + 4*M4 + 5*M5

 

INT~~SLP

 

INT ~ IV + cov1

 

SLP ~ IV

 

DV ~ INT + SLP + IV + cov1 + cov2 + cov3

 

INT~~cov2

INT~~cov3

SLP~~cov1

SLP~~cov2

SLP~~cov3

IV~~cov1

IV~~cov2

IV~~cov3

cov1~~cov2

cov1~~cov3

cov2~~cov3"

 

growthmodel2 <- growth(model2, data=dat, estimator="MLM")

summary(growthmodel2, standardized=T, rsquare=T, fit.measures=T) #NOTE default was automatically changed to fixed.x=FALSE

 

χ2(79) = 1090.31, robust CFI = .672, robust RMSEA = .270, SRMR = 18.47

 

In fact, it seems that including any exogenous covariances has a strange effect, as model fit worsened and df increased when I replaced one regression (INT ~ IV + cov1) with the relevant covariances:

 

model3 <- "INT =~ 1*M0 + 1*M1 + 1*M2 + 1*M3 + 1*M4 + 1*M5

 

SLP =~ 0*M0 + 1*M1 + 2*M2 + 3*M3 + 4*M4 + 5*M5

 

INT~~SLP

 

SLP ~ IV

 

DV ~ INT + SLP + IV + cov1 + cov2 + cov3

 

INT~~IV

INT~~cov1”

 

growthmodel3 <- growth(model3, data=dat, estimator="MLM")

summary(growthmodel3, standardized=T, rsquare=T, fit.measures=T) #NOTE default was automatically changed to fixed.x=FALSE

 

χ2(89) = 2273.19, robust CFI = .434, robust RMSEA = .334, SRMR = 17.38

 

Can anyone help me identify why this might be happening, and how I might fix it? Thanks in advance!

 

Terrence Jorgensen

unread,
Nov 9, 2019, 9:31:48 AM11/9/19
to lavaan
growth() is only for simple growth curves (i.e., with exogenous growth factors).  Draw a path diagram of your model, then specify each parameter you want to estimate in your lavaan syntax, and use the lavaan() function instead of relying on defaults that clearly are not doing what you want/expect.  You can always check lavInspect(fit, "free") to see what parameters are being estimated in your fitted model, then adjust your syntax as necessary to make sure your fitted model matches your expectation.

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