[R] optim() and resultant hessian
Brian Healey
bphealey at hotmail.com
Fri Feb 16 18:39:28 CET 2007
R users;
A question about optimization within R.
I've been using both optim() and nlminb() to estimate parameters and all
seems to be working fine. For context (but without getting into specifics -
sorry), I'm working with a problem that is known to have correlated
parameters, and parameter estimation can be difficult. I have a question on
optim() - I'm using method="L-BFGS-B" to accommodate box constraints.
For my dataset, I obtain parameter estimates using a few iterations of
optim() - iterations in that I'm simply taking the results from a previous
optim() call and using these as starting values in the next function call.
The final call to optim() returns the following:
$par
[1] 0.2272361 0.8037642 26.8591998 3.0631280 0.2224566
$value
[1] -46.13906
$counts
function gradient
4 4
$convergence
[1] 0
$message
[1] "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"
$hessian
[,1] [,2] [,3] [,4] [,5]
[1,] 1.267070e+17 1.012691e+17 1.348054e+15 625551.58724 9.359559e+07
[2,] 1.012691e+17 8.189877e+16 1.144248e+15 569562.44945 8.699072e+07
[3,] 1.348054e+15 1.144248e+15 2.457323e+05 3426.60293 -2.297009e+03
[4,] 6.255516e+05 5.695624e+05 3.426603e+03 99.06880 -6.750806e+01
[5,] 9.359559e+07 8.699072e+07 -2.297009e+03 -67.50806 1.905247e+03
i.e. convergence and message report that things look "ok".
However; if I take the hessian and compute eigenvalues and eigenvectors, the
result is:
$values
[1] 2.080357e+17 5.889416e+14 1.907746e+03 9.648828e+01 -1.886641e+13
$vectors
[,1] [,2] [,3] [,4] [,5]
[1,] 7.797175e-01 6.246383e-01 -5.024932e-09 -2.214316e-10 -4.321721e-02
[2,] 6.260739e-01 -7.768497e-01 5.917821e-09 2.637892e-10 6.734993e-02
[3,] 8.496067e-03 -7.957109e-02 9.710924e-08 4.049691e-09 -9.967930e-01
[4,] 4.058779e-12 -8.828316e-11 3.729724e-02 -9.993042e-01 -4.192523e-10
[5,] 6.125907e-10 -1.547717e-08 -9.993042e-01 -3.729724e-02 -9.626469e-08
Optim() indicates convergence when one of the eigenvalues is negative !?!?
Any reason to not be concerned? (Possibly the Hessian is simply computed at
the solution and not used to arrive at the estimate?)
Thanks in advance for any helpful feedback.
B Healey
More information about the R-help
mailing list