# [R] Obtaining SE from the hessian matrix

Timur Elzhov Timur.Elzhov at jinr.ru
Thu Feb 19 14:38:03 CET 2004

```Dear R experts,

In R-intro, under the 'Nonlinear least squares and maximum likelihood
models' there are ttwo examples considered how to use 'nlm' function.
In 'Least squares' the Standard Errors obtained as follows:

After the fitting, out\$minimum is the SSE, and out\$estimates are the
least squares estimates of the parameters. To obtain the approximate
standard errors (SE) of the estimates we do:

> sqrt(diag(2*out\$minimum/(length(y) - 2) * solve(out\$hessian)))

But under 'Maximum likelihood' section I've read:

After the fitting, out\$minimum is the negative log-likelihood, and
out\$estimates are the maximum likelihood estimates of the parameters.
To obtain the approximate SEs of the estimates we do:

> sqrt(diag(solve(out\$hessian)))

As for me, I use MINPACK fortran library for NLS fitting in R, and there
I also get the hessian matrix. What formula should I use in _this_ case?
Well, some times ago I had a glance at gsl, GNU Scientific Library. It
use converted-to-C MINPACK for NLS fit too.  And, in the GSL ref. manual
example
http://www.gnu.org/software/gsl/manual/html_node/gsl-ref_36.html#SEC475
SE calculated as
#define ERR(i) sqrt(gsl_matrix_get(covar,i,i))

where covar = (J^T * J)^-1 (i.e. how in the second formulae above).
So, what is the _right_ way for obtatining SE? Why two those formulas above
differ?

Thank you!

--
WBR,
Timur.

```