R: Estimates the hessian matrix

hessian {rootSolve} | R Documentation

## Estimates the hessian matrix

### Description

Given a vector of variables (x), and a function (f) that estimates one function value, estimates the hessian matrix by numerical differencing. The hessian matrix is a square matrix of second-order partial derivatives of the function f with respect to x. It contains, on rows i and columns j

d^2(f(x))/d(x_i)/d(x_j)

### Usage

    hessian(f, x, centered = FALSE, pert = 1e-8, ...)

### Arguments

`f` | function returning one function value, or a vector of function values.
`x` | either one value or a vector containing the x-value(s) at which the hessian matrix should be estimated.
`centered` | if TRUE, uses a centered difference approximation, else a forward difference approximation.
`pert` | numerical perturbation factor; increase depending on precision of model solution.
`...` | other arguments passed to function `f`.

### Details

Function `hessian(f,x)` returns a forward or centered difference approximation of the gradient, which itself is also estimated by differencing. Because of that, it is not very precise.

### Value

The gradient matrix where the number of rows equals the length of `f` and the number of columns equals the length of `x`.

the elements on i-th row and j-th column contain: d((f(x))_i)/d(x_j)

### Author(s)

Karline Soetaert <karline.soetaert@nioz.nl>

### See Also

`gradient`, for a full (not necessarily square) gradient matrix

### Examples

    ## =======================================================================
    ## the banana function
    ## =======================================================================
       fun <- function(x)  100*(x[2] - x[1]^2)^2 + (1 - x[1])^2
       mm  <- nlm(fun, p = c(0, 0))$estimate
       (Hes <- hessian(fun, mm))
       # can also be estimated by nlm(fun, p=c(0,0), hessian=TRUE)
       solve(Hes)   # estimate of parameter uncertainty

[Package rootSolve version 1.7 Index]