Interpreting error messages from optimizer

1 reply [Last post]
Dorothy Bishop's picture
Offline
Joined: 02/04/2010

Is there somewhere where error messages are listed, with an interpretation of what they mean and advice about what you might do about the error?

I get
"In model 'multiCholACE' NPSOL returned a non-zero status code 1. The final iterate satisfies the optimality conditions to the accuracy requested, but the sequence of iterates has not yet converged. NPSOL was terminated because no further improvement could be made in the merit function (Mx status GREEN). "

I'm sure this is not the only error message I will come up against. I had a rootle around and could not find a place where such messages were listed, but I may have missed something.

The old Mx manual did have such a listing, but it was impenetrable to people who were not experts in optimization.

neale's picture
Offline
Joined: 07/31/2009
Agreed, Optimization IFAIL

Agreed, Optimization IFAIL messages should be more explicit. Specifically, it's important to know what should be done when one encounters such a message. There's some info on this in this thread http://openmx.psyc.virginia.edu/thread/287 (found by searching the site for IFAIL). The bottom line is that optimization is NOT an exact science and that even when one doesn't get an error message at all, it is still possible that the solution found is only a local minimum not the global minimum.

Guidelines as to the probability that the solution found is a global maximum might go something like this (in my experience, fitting a wide variety of models with varying complexity - note that, ceteris paribus, more complex models with lots of parameters are inherently more likely to cause optimization problems).

No error (IFAIL=0) >99% chance correct
IFAIL=1 >98%
IFAIL=3 ~0% (constraint error)
IFAIL=4 <5% (not enough iterations, might try to increase with mxOption)
IFAIL=6 >85% (occurs more often if the model is not be identified or only barely identified due to data limitations, but solution found may be one of the equivalent solutions)
IFAIL=-1 ~0% (something went really wrong, predicted covariance matrix was not positive definite or similar, such that likelihood was zero or negative, making -2lnL incomputable)

Depending on one's level of obsessionality, it is often a good idea to refit from different starting values, even with IFAIL=0/1. Another useful guide when one fits several nested models is to make sure that models with fewer parameters fit worse (in terms of -2lnL or chi-squared) than models with more parameters. Possibly, a less parameterized nested model would fit equally well as the model with more parameters, but in this case the parameter estimates should be the same in both models.

Check solutions with IFAIL=6, and throw out results with IFAIL=4 or -1. This post may belong in the wiki, methinks.