I would like to develop a latent growth model (LGM) with Stata. The point is to illustrate estimated effects of predictors by using Stata's marginsplot. The problem is - I cannot make a simple LGM with predictors converge in Stata. My original analysis uses a different software (specialised for analysing latent variables), and converges even when the growth model is much more complex.


In Stata, I simplify the analysis to an ordinariy growth model. I follow Alan C. Acock's "Discovering Structural Equation Modeling Using Stata" and have no problem running an LGM model with a predictor using the data and the code referred to in the book:

Code:
use http://www.stata-press.com/data/dsemusr/bmiworking.dta, clear

sem (Intercept@1 Slope@0 -> bmi01) ///
(Intercept@1 Slope@1 -> bmi02) ///
(Intercept@1 Slope@2 -> bmi03) ///
(Intercept@1 Slope@4 -> bmi05) ///
(Intercept@1 Slope@5 -> bmi06) ///
(Intercept@1 Slope@6 -> bmi07) ///
(Intercept@1 Slope@7 -> bmi08) ///
(Intercept@1 Slope@8 -> bmi09) ///
(Intercept Slope <- male _cons) ///
if bmi01 !=. | bmi02 !=. | bmi03 !=. | bmi05 !=. | bmi06 !=. | bmi07 !=. | bmi08 !=. | bmi09 !=. , ///
var(e.Intercept*e.Slope) ///
method(mlmv) noconstant
When applying the code described by Acock to my own model and data, I succeed with an ordinary LGM (no predictor added yet):

Code:
sem (Intercept@1 Slope@0 -> esteem1) ///
(Intercept@1 Slope@1 -> esteem2) ///
(Intercept@1 Slope@2 -> esteem3) ///
if esteem1 !=. | esteem2 !=. | esteem3 !=. , ///
method(mlmv) noconstant means(Intercept Slope)
The model using the code above converges. Yet adding predictor(s) fails, even when I try to follow the template in the book (such as explicitely requesting Stata to drop cases with missing values on all measurements of the DV):

Code:
sem (Intercept@1 Slope@0 -> esteem1) ///
(Intercept@1 Slope@1 -> esteem2) ///
(Intercept@1 Slope@2 -> esteem3) ///
(Intercept Slope <- female _cons) ///
if esteem1 !=. | esteem2 !=. | esteem3 !=. , ///
var(e.Intercept*e.Slope) ///
method(mlmv) noconstant
The model does not converge, Stata gets stuck (see the non-changing log likelihood):

Code:
Iteration 292: log likelihood = -12819.197  (not concave)
Iteration 293: log likelihood = -12819.197  (not concave)
Iteration 294: log likelihood = -12819.197  (not concave)
Iteration 295: log likelihood = -12819.197  (not concave)
Iteration 296: log likelihood = -12819.197  (not concave)
Iteration 297: log likelihood = -12819.197  (not concave)
Iteration 298: log likelihood = -12819.197  (not concave)
Iteration 299: log likelihood = -12819.197  (not concave)
Iteration 300: log likelihood = -12819.197  (not concave)
convergence not achieved

Maybe I am missing something?

Alternatively: Maybe Stata struggles with the model due to the nature of the data? The data include substantial numbers of missing values - by design, so the model is fine conceptually. If the code is fine and the problem lies only in Stata's nonconvergence, then maybe StataCorp might be interested in investigating the issue? This model and much more compex models converge fine in Mplus (I haven't tried R's lavaan for this LGM analysis, but might if requested to).