Error Message - Quadratic Growth Model (Even after mxTryHard)

Posted on
No user picture. Aivil Joined: 03/14/2019
Hello,

-> Can you help me understanding why I get this error message when fitting this unconditional quadratic growth model?
-> Once running the script attached, I get this error:

Running Quadratic Growth Model, Path Specification with 10 parameters
Error: The job for model 'Quadratic Growth Model, Path Specification' exited abnormally with the error message: fit is not finite (The continuous part of the model implied covariance (loc2) is not positive definite in data 'Quadratic Growth Model, Path Specification.data' row 8664.

In addition: Warning message:
In model 'Quadratic Growth Model, Path Specification' Optimizer returned a non-zero status code 10. Starting values are not feasible. Consider mxTryHard()

-> Then I try to run it with mxTryHard, and I get another error:

mxTryHard_quadratic_gm_lifesatisf <- mxTryHard(quadratic_gm_lifesatisf) # Run the model, returning the result into model

All fit attempts resulted in errors - check starting values or model specification

Many Thanks!!!!

> mxVersion()
OpenMx version: 2.12.2 [GIT v2.12.2]
R version: R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32
Default optimizer: SLSQP
NPSOL-enabled?: Yes
OpenMP-enabled?: No

Replied on Mon, 04/08/2019 - 11:13
Picture of user. AdminRobK Joined: 01/24/2014

Consider this syntax:

mxPath(from=c('eta_1','eta_2','eta_3'), connect='unique.pairs',
arrows=2, free=TRUE,
values=c(1,1,1,0.5,0.5,0.5),

Per the manual page for `mxPath()`, this syntax is starting eta_1's covariances with eta_2 and eta_3 as equal to eta_1's variance. I'm not sure you want to do that.

Also, you could improve the numerical stability of your model by centering the time metric. That is, the first-degree loadings would be

c(-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5)

and the second-degree loadings would be

c(12.25, 6.25, 2.25, 0.25, 0.25, 2.25, 6.25, 12.25)

.

Replied on Tue, 04/09/2019 - 02:17
No user picture. Aivil Joined: 03/14/2019

In reply to by AdminRobK

Yes, I agree.
Yesterday while waiting for the reply, I changed the syntax as follows and it works:

mxPath(from=c('eta_1','eta_2','eta_3'), connect='unique.pairs',
arrows=2, free=TRUE,
values=c(1,0,0,1,0,1),
labels=c('psi_11','psi_21','psi_31','psi_22','psi_32','psi_33')),
# factor loadings
mxPath(from='eta_1', to=c('life_satisf_2','life_satisf_3','life_satisf_4','life_satisf_5','life_satisf_6','life_satisf_7','life_satisf_8','life_satisf_9'),
arrows=1, free=FALSE, values=1),
mxPath(from='eta_2', to=c('life_satisf_2','life_satisf_3','life_satisf_4','life_satisf_5','life_satisf_6','life_satisf_7','life_satisf_8','life_satisf_9'),
arrows=1, free=FALSE,
values=c(-3, -2, -1, 0, 1, 2, 3, 4)),
mxPath(from='eta_3', to=c('life_satisf_2','life_satisf_3','life_satisf_4','life_satisf_5','life_satisf_6','life_satisf_7','life_satisf_8','life_satisf_9'),
arrows=1, free=FALSE,
values=c(9, 4, 1, 0, 1, 4, 9, 16)),

therefore, setting the covariances to 0 and the variances to 1.

In addition, I followed Grimm, Ram, & Estabrook's (2017) guidelines on time coding: "A second limitation of polynomial models deals with model convergence and estimation. Polynomial models can be difficult to estimate due to the collinearity between the power terms. For this reason, it is important to center the intercept toward the middle of the observation period. For For example, the correlation between t and t2 is 0.96 with seven measurement occasions when t is coded from 0 to 6. The correlation drops to 0 when t is coded from –3 to 3." (p.231).

As I am theoretically interested in setting the intercept at Wave 5, I coded the time like above in the script. Waves go from 2 to 9.
Is it correct?

Many thanks!!

Replied on Tue, 04/09/2019 - 09:59
Picture of user. AdminRobK Joined: 01/24/2014

In reply to by Aivil

Yesterday while waiting for the reply, I changed the syntax as follows and it works:

OK. Good to hear!

As I am theoretically interested in setting the intercept at Wave 5, I coded the time like above in the script. Waves go from 2 to 9.
Is it correct?

I'm sure it's an improvement.