# Error Message - Quadratic Growth Model (Even after mxTryHard)

4 posts / 0 new
Offline
Joined: 03/14/2019 - 09:44
Error Message - Quadratic Growth Model (Even after mxTryHard)
AttachmentSize
2.87 KB

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 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

Offline
Joined: 01/24/2014 - 12:15
two remarks

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)

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

.

Offline
Joined: 03/14/2019 - 09:44

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')),
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!!

Offline
Joined: 01/24/2014 - 12:15
good
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.