non-positive-definite when arrows=2

Posted on
No user picture. JWiley Joined: 03/25/2011

Whenever I try to fit models and add covariances with arrows=2, I always have a heck of a time getting the model past the 'expected covariance is non-positive definite' error. Is this normal? I do not have nearly this much trouble with arrows = 1. Here is a little example using a built in dataset:

#########################
summary(mxRun(m <- mxModel("Example", type = "RAM",
manifestVars = colnames(ability.cov$cov), latentVars = "G",
mxData(ability.cov$cov, type = "cov", numObs = ability.cov$n.obs),
mxPath(from = "G", to = colnames(ability.cov$cov)),
mxPath(from = colnames(ability.cov$cov), arrows = 2),
mxPath(from = "G", arrows = 2, values = 1, free = FALSE))))

summary(mxRun(mxModel(m, mxPath(from = "vocab", to = "reading", arrows = 2, values = 41))))
summary(mxRun(mxModel(m, mxPath(from = "vocab", to = "reading", arrows = 2, values = -.1))))
summary(mxRun(mxModel(m, mxPath(from = "vocab", to = "reading", arrows = 1, values = .4))))
summary(mxRun(mxModel(m, mxPath(from = "vocab", to = "reading", arrows = 1, values = 2))))
#########################

even knowing (from the second attempt), that one estimate that works well is 41.579037 and setting a starting value of 41, it runs into problems. Is there a reason it seems more sensitive to start values with covariances than just paths?

Replied on Mon, 10/31/2011 - 17:52
Picture of user. neale Joined: Jul 31, 2009

Arrows=2 between two different variables generates covariance between them but not variance within either. Therefore it is quite easy to generate a covariance matrix with larger covariances than variances, which is perforce non-positive definite.

The 41 you choose for a starting value is in some conflict with the value of 0 (which would be treated as .01) for residual variance of each, given in the mxPath(from = colnames(ability.cov$cov), arrows = 2) statement. Supplying values for the residuals (say the variance of each variable) and zero as starting values for the covariance paths would probably help a lot.

Replied on Mon, 10/31/2011 - 20:20
No user picture. JWiley Joined: Mar 25, 2011

In reply to by neale

Thanks! That makes a lot of sense and is really helpful. I guess I always just saw the error and never thought about what it meant (i.e., when is a matrix positive definite or not). Is it a bad sign that I'm actually excited to go back and try some of my models and see how much easier it is keeping your comments in mind??