Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Growth curve model with latent predictor

    Dear all,
    the basic growth curve model is described as follows:
    Code:
    sem (out1 <- Intercept@1 Slope@0 _cons@0) ///
        (out2 <- Intercept@1 Slope@1 _cons@0) ///
        (out3 <- Intercept@1 Slope@2 _cons@0) ///
        (out4 <- Intercept@1 Slope@3 _cons@0) ///
        (Intercept Slope <- groupvar controlvar _cons) ///
        , latent(Intercept Slope) ///
        var(e.Intercept*e.Slope) noconst method(mlmv)
    Which I have adapted from the Stata manual (https://www.stata.com/manuals13/semexample18.pdf).
    Suppose, I want to add a latent variable as a predictor that is created from 3 continuous variables, I think I should adapt the code as follows:

    Code:
    sem (out1 <- Intercept@1 Slope@0 _cons@0) ///
        (out2 <- Intercept@1 Slope@1 _cons@0) ///
        (out3 <- Intercept@1 Slope@2 _cons@0) ///
        (out4 <- Intercept@1 Slope@3 _cons@0) ///
        (Lat <- k1 k2 k3) ///
        (Intercept Slope <- Lat groupvar controlvar _cons) ///
        , latent(Intercept Slope Lat) ///
        var(e.Intercept*e.Slope) noconst method(mlmv)
    However, despite various tests with various variables, this model never converges. I wonder if my code adaption is correct. Many thanks for advice.


    Best wishes

    Stata 18.0 MP | ORCID | Google Scholar

  • #2
    Felix,

    I have a couple of thoughts about this relating to model specification of the growth curve portion of your model. You constrain the constant to be 0 but you freely estimate the residual variances of those same variables. Typically, when you constrain the constant to be 0, you also constrain the residual variances to be equivalent. This is the approach in Example 18, and would involve some additional code in the var() option:
    Code:
    var(e.out1@var e.out2@var e.out3@var e.out4@var)
    The combination of constraining the constant to be 0 and residual variances to be the same is equivalent to the default parameterization of a growth curve model in mixed. Most SEM practitioners allow both the constant and the residual variances to be freely estimated. But the hybrid approach you have here is uncommon, and probably should be evaluated based on model fit..

    Lastly, your measurement model has the arrow going in the wrong direction. You can think of that arrow as a causal statement that the latent variable (Lat) causes the scores on the indicators k1-k3. Thus, your current syntax for Lat is indicative of a regression of the unidentified var Lat on the variables k1-k3.

    Best wishes,
    Erik

    Comment


    • #3
      Dear Erik,
      thank you so much for your comment, this helps a ton. First, the arrow correction completely fixes this problem. Regarding the other aspects, I failed to acknowledge in my first post that I took only the most basic model from the linked Stata documentation but then I also used the example in Alan Acocks excellent book (Discovering Structural Equation Modeling Using Stata). There, he uses this code, where he does not estimate the constant:

      Click image for larger version

Name:	semcode.png
Views:	2
Size:	95.9 KB
ID:	1783308

      I see that there are probably many options to estimate this kind of model. Personally, my main interest lies in one binary and manifest variable that predicts the slope and the intercept (groupvar). I want to test whether the groups have different levels and trajectories. For this case, would you recommend the estimation with or without constant?
      Thanks again!
      Attached Files
      Best wishes

      Stata 18.0 MP | ORCID | Google Scholar

      Comment


      • #4
        Felix,

        I would say that either is valid, but go with one or the other. That is, you can estimate all parameters (item intercepts and item variances) freely, as is common in the SEM tradition, or fix all parameters such that item intercepts are 0 and the variances are constrained to be equal, as is common in the mixed effects tradition. You can think of the SEM version as allowing for heteroskedastic (time-varying) residual variances. In the mixed command, with reshaped data, this would be accomplished by specifying the option, residuals(independent, by(time_variable)).

        These two versions of the growth model are nested because you can get from one to the other by relaxing or freeing constraints. Accordingly, you can use a likelihood ratio test to determine which version provides a better fit to your data. And once you determine that, add your latent variable and predictors.

        Best wishes,
        Erik

        Comment


        • #5
          while Erik Ruzek 's responses have been excellent, I note that nothing has been said about the size of your data set - yet that matters a lot here, so, what is the overall N and how much missing data, if any, do you have at the various time points?

          Comment


          • #6
            These are definitely important issues, Rich Goldstein. Thanks for pointing them out! See also https://pmc.ncbi.nlm.nih.gov/articles/PMC4334479/

            Comment


            • #7
              Erik and Rich,
              many thanks for the additional input. I will test my options and then compare model fit, thanks for the suggestion.
              As the sample size is about 6000, I hope this will not cause any issues. True, some variables have quite a share of missingness, so I use MICE as well.
              Best wishes

              Stata 18.0 MP | ORCID | Google Scholar

              Comment

              Working...
              X