Latent growth model with latent factors (categorical indicators) not identified

50 views
Skip to first unread message

Peter Kruyen

unread,
Jun 14, 2018, 6:24:10 AM6/14/18
to lavaan
Sorry for cross-posting on stack-exchange, found only out later that this is the place to be for lavaan
=============================================================================

I try to estimate a latent growth model in Lavaan--using latent factors with categorical indicators--using the following model. Any suggestions how to fix this error are very welcome.

model <- '   t1  =~ A1a + A2a + A3a + A4a   
             t2  =~ A1b + A2b + A3b + A4b
             t3  =~ A1c + A2c + A3c + A4c   
             i =~ 1*t1 + 1*t2 + 1*t3   
             s =~ 0*t1 + 1*t2 + 2*t3'

fit2 <- growth(model, 
              ordered=colnames(data),
              std.lv=TRUE,
              data=data,missing="pairwise")

1: In lav_model_vcov(lavmodel = lavmodel, lavsamplestats = lavsamplestats, : lavaan WARNING: could not compute standard errors! lavaan NOTE: this may be a symptom that the model is not identified.

2: In lav_model_test(lavmodel = lavmodel, lavpartable = lavpartable, : lavaan WARNING: could not compute scaled test statistic

I note that the means and the variances of the intercept (i) and slope (s) are estimated(?) to be 0 and 1, respectively.

Thanks in advance,

Peter

PS. I found an old topic on a Google forum, but trying to adept my code along those lines did not fix the error (and even gave back the error that lavaan did not recognise my model specification?)


Terrence Jorgensen

unread,
Jun 15, 2018, 4:49:03 AM6/15/18
to lavaan
I try to estimate a latent growth model in Lavaan--using latent factors with categorical indicators

Don't use the growth() function.  That is just a wrapper around lavaan() that turns on some default settings that would make sense for a first-order growth model.  What you have is a measurement model with a second-order growth model as the latent structural model.  So it makes more sense to use the default settings that come with the sem() wrapper.


model <- '   t1  =~ A1a + A2a + A3a + A4a   
             t2  =~ A1b + A2b + A3b + A4b
             t3  =~ A1c + A2c + A3c + A4c   
             i =~ 1*t1 + 1*t2 + 1*t3   
             s =~ 0*t1 + 1*t2 + 2*t3'

fit2 <- growth(model, 
              ordered=colnames(data),
              std.lv=TRUE,
              data=data,missing="pairwise")

I note that the means and the variances of the intercept (i) and slope (s) are estimated(?) to be 0 and 1, respectively.

You can check what was estimated using lavInspect(fit2, "free"), but you should explicitly specify what you want to estimate in the model syntax.  You have a measurement model, so the latent common-factor means are fixed to zero for identification.  Thus there is no change in the means, and nothing for your latent growth model to explain.  Trying to freely estimate that means of the growth factors would therefore not be identified.

To identify them, you need to start by focusing on the measurement model, and test for measurement invariance.  If at least partial measurement invariance holds, you can freely estimate the common-factor means and variances except for a reference time (typically, leave the mean at t1 fixed at zero and variance of t1 is fixed at 1 to identify the model).  When you impose the growth model on the latent structure, you fix all the common-factor means to to zero so that all the mean structure can be explained by growth factors.  This translates to fixing the mean of the latent intercept at zero for identification, and only estimating the mean of the latent slope.

Here is a paper about testing measurement invariance in he context of second-order growth curve models:


Here is a paper about testing longitudinal measurement invariance with ordinal indicators:


But I do not favor Liu et al.'s recommended sequence of model comparisons, because they assume (rather than test) invariance of intercepts.  I would recommend using the recommendations found here:

10.1007/s11336-016-9506-0

Terrence D. Jorgensen
Postdoctoral Researcher, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam

Message has been deleted

Edward Rigdon

unread,
Jun 15, 2018, 2:34:50 PM6/15/18
to lav...@googlegroups.com
Are the residuals for t1, t2, t3 free to covary? Or are those residuals mutually orthogonal? They may be free by default here. Constrain them to be mutually orthogonal:
t1+t2~~0*t3
t1~~0*t2
to be sure.



On Fri, Jun 15, 2018 at 2:16 PM Peter Kruyen <p.m.k...@gmail.com> wrote:
Thanks Terrence for your answer. I did the checks for measurement invariance, and everthing seems fine. As I am new to latent growth modeling, I did not completely get your answer for estimating the model itself (sorry). Based on your feedback, I added to the mode ( i~0*1) and used the sem-function. but I think there is something else I need to add to the model since the intercept of the intercept (i) and the slope (s) are still fixed to 0? Could you give me some advice? 

Peter

--
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 post to this group, send email to lav...@googlegroups.com.
Visit this group at https://groups.google.com/group/lavaan.
For more options, visit https://groups.google.com/d/optout.

Peter Kruyen

unread,
Jun 15, 2018, 4:09:05 PM6/15/18
to lavaan
Thanks Edward, I will do; also, I will read a bit more on growth models.
Reply all
Reply to author
Forward
0 new messages