numerical_Hessian function

Numerical Computation of the Hessian Matrix

Numerical Computation of the Hessian Matrix

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).

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 himax(1,θi)h_i \max ( 1, \theta_i) where θi\theta_i

    denotes the iith 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

Returns

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)