# statsmodels.tools.numdiff.approx_hess2¶

statsmodels.tools.numdiff.approx_hess2(x, f, epsilon=None, args=(), kwargs={}, return_grad=False)[source]

Calculate Hessian with finite difference derivative approximation

Parameters
xarray_like

value at which function derivative is evaluated

ffunction

function of one array f(x, *args, **kwargs)

epsilonfloat or array-like, optional

Stepsize used, if None, then stepsize is automatically chosen according to EPS**(1/3)*x.

argstuple

Arguments for function f.

kwargsdict

Keyword arguments for function f.

Whether or not to also return the gradient

Returns
hessndarray

array of partial second derivatives, Hessian

Notes

Equation (8) in Ridout. Computes the Hessian as:

1/(2*d_j*d_k) * ((f(x + d[j]*e[j] + d[k]*e[k]) - f(x + d[j]*e[j])) -
(f(x + d[k]*e[k]) - f(x)) +
(f(x - d[j]*e[j] - d[k]*e[k]) - f(x + d[j]*e[j])) -
(f(x - d[k]*e[k]) - f(x)))


where e[j] is a vector with element j == 1 and the rest are zero and d[i] is epsilon[i].

References

Ridout, M.S. (2009) Statistical applications of the complex-step method

of numerical differentiation. The American Statistician, 63, 66-74