SAS Nonlinear Regression – What Does ‘Hessian Is Singular’ Mean in PROC NLIN?

nonlinear regressionregressionsas

Im trying to fit a power addictive nonlinear model, and keep getting a message in the results that convergence criterion met but hessian is singular. What does this mean? also in the correlation matrix I have no values for 1 or more coefficients. My guess is that it means I converged to a local minimum, but I'm not sure.

Best Answer

The Hessian is the matrix of second derivatives of the objective function you are attempting to minimize (resp. maximize, depending on how SAS set this up). The Hessian is a square $k \times k$ matrix, where $k$ is the number of parameters in your model. In your case, the Hessian is singular, which means that your parameters are linear functions of each other (or almost collinear) ... either absolutely, or with respect to the data that you have.

A young colleague of mine once got the exact error you did in SAS. Turns out he had included an intercept term twice. So the first thing you want to do is to check the specification of the model in SAS.

Another source of difficulty will occur if one of the parameters is basically useless at the data points you have. With a large sample and a good model, the log likelihood should look like a paraboloid near the minimum. However, a useless parameter can produce a long, narrow valley. Any solution in the trough of the valley will produce much the same minimum in the objective function. Your algorithm will terminate normally (it will no longer be able to improve itself by taking additional steps), but the Hessian will be singular.

If you don't have loads of parameters, (and you shouldn't with a non-linear model) you could try plotting the likelihood in the vicinity of the "solution" that SAS came up with, to see where the problem lies.

The Hessian is used to estimate the standard errors of the maximum likelihood estimates, so if the Hessian is broken, you won't get complete entries in the correlation matrix. These are obtained from the inverse of the Hessian, which you can't have, since the Hessian is singular.

I'm not sure that you converged to a minimum. With a singular Hessian, you could have converged to a saddlepoint in the parameter space, or the optimizer may simply have become disorientated and quit in the naïve belief that it had accomplished its mission. Something about your model is not working: either the way you specified it to SAS, or the data you have, or the model you are attempting to fit. Trust nothing in the results you got and start over. Perhaps try a simpler, linear model and then add more complicated features to improve the fit.