statsmodels.tools.numdiff.approx_hess2

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

使用有限差分导数近似计算Hessian

Parameters:
xarray_like

函数导数被评估的值

ffunction

单个数组的函数 f(x, *args, **kwargs)

epsilonfloat or array_like, optional

如果未指定步长,则根据 EPS**(1/3)*x 自动选择步长。

argstuple

函数f的参数。

kwargsdict

函数 f 的关键字参数。

return_gradbool

是否也返回梯度

Returns:
hessndarray

部分二阶导数数组,Hessian

gradndarray

如果 return_grad == True,则返回梯度

注释

Ridout 中的公式 (8)。计算 Hessian 矩阵为:

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

其中 e[j] 是一个向量,元素 j == 1,其余为零,d[i] 是 epsilon[i]。

参考文献

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

数值微分的。美国统计学家,63, 66-74


Last update: Oct 16, 2024