从scipy optimize.least_squares方法得到拟合参数的协方差矩阵

时间:2016-10-22 01:42:25

标签: python scipy curve-fitting data-fitting non-linear-regression

我正在使用scipy.optimize的least_squares method来执行受约束的非线性最小二乘优化。我想知道如何获得拟合参数的协方差矩阵以获得拟合参数的误差条?

对于curve_fitleastsq来说,这似乎很清楚,但对于least_squares方法来说却不是那么清楚(至少对我而言)。

我一直在做的一种方法是因为我知道least_squares返回雅可比矩阵 J (这是“jac”返回值),然后我做的是我将Hessian H逼近2 * J ^ T J.最后,协方差矩阵是H ^ { - 1},因此大约是(2 * J ^ TJ)^ { - 1},但是我担心这可能是近似的粗糙协方差?

1 个答案:

答案 0 :(得分:0)

curve_fit本身使用来自least_squares的jacobian的伪逆,https://github.com/scipy/scipy/blob/2526df72e5d4ca8bad6e2f4b3cbdfbc33e805865/scipy/optimize/minpack.py#L739

有一点需要注意的是,如果结果接近边界,整个方法都是可疑的。