numerical_Hessian: Numerical Computation of the Hessian Matrix

View source: R/numerical_Hessian.R

numerical_HessianR Documentation

Numerical Computation of the Hessian Matrix

Description

Computes numerically the Hessian matrix of a given function for all coordinates (numerical_Hessian), for a selected direction (numerical_Hessian_partial) or the gradient of a multivariate function (numerical_gradient).

Usage

numerical_Hessian(par, FUN, h=1e-05, gradient=FALSE,
       hessian=TRUE, diag_only=FALSE, ...)

numerical_Hessian_partial(par, FUN, h=1e-05, coordinate=1, ... )

numerical_gradient(par, FUN, h=1E-5, ...)

Arguments

par

Parameter vector

FUN

Specified function with argument vector x

h

Numerical differentiation parameter. Can be also a vector. The increment in the numerical approximation of the derivative is defined as h_i \max ( 1, θ_i) where θ_i denotes the ith parameter.

gradient

Logical indicating whether the gradient should be calculated.

hessian

Logical indicating whether the Hessian matrix should be calculated.

diag_only

Logical indicating whether only the diagonal of the hessian should be computed.

...

Further arguments to be passed to FUN.

coordinate

Coordinate index for partial derivative

Value

Gradient vector or Hessian matrix or a list of both elements

See Also

See the numDeriv package and the mirt::numerical_deriv function from the mirt package.

Examples

#############################################################################
# EXAMPLE 1: Toy example for Hessian matrix
#############################################################################

# define function
f <- function(x){
     3*x[1]^3 - 4*x[2]^2 - 5*x[1]*x[2] + 10 * x[1] * x[3]^2 + 6*x[2]*sqrt(x[3])
}
# define point for evaluating partial derivatives
par <- c(3,8,4)

#--- compute gradient
CDM::numerical_Hessian( par=par, FUN=f, gradient=TRUE, hessian=FALSE)
## Not run: 
mirt::numerical_deriv(par=par, f=f, gradient=TRUE)

#--- compute Hessian matrix
CDM::numerical_Hessian( par=par, FUN=f )
mirt::numerical_deriv(par=par, f=f, gradient=FALSE)
numerical_Hessian( par=par, FUN=f, h=1E-4 )

#--- compute gradient and Hessian matrix
CDM::numerical_Hessian( par=par, FUN=f, gradient=TRUE, hessian=TRUE)

## End(Not run)

CDM documentation built on Aug. 25, 2022, 5:08 p.m.