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).
h: Numerical differentiation parameter. Can be also a vector. The increment in the numerical approximation of the derivative is defined as himax(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
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 functionf <-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 derivativespar <- c(3,8,4)#--- compute gradientCDM::numerical_Hessian( par=par, FUN=f, gradient=TRUE, hessian=FALSE)## Not run:mirt::numerical_deriv(par=par, f=f, gradient=TRUE)#--- compute Hessian matrixCDM::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 matrixCDM::numerical_Hessian( par=par, FUN=f, gradient=TRUE, hessian=TRUE)## End(Not run)