You are here

Error Message - Quadratic Growth Model (Even after mxTryHard)

4 posts / 0 new
Last post
Aivil's picture
Offline
Joined: 03/14/2019 - 09:44
Error Message - Quadratic Growth Model (Even after mxTryHard)
AttachmentSize
Plain text icon error mesage quadratic gm.txt2.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 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

AdminRobK's picture
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)

and the second-degree loadings would be

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

.

Aivil's picture
Offline
Joined: 03/14/2019 - 09:44
Thanks for your reply.

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

AdminRobK's picture
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.