我正在使用scipy.optimize的least_squares method来执行受约束的非线性最小二乘优化。我想知道如何获得拟合参数的协方差矩阵以获得拟合参数的误差条?
对于curve_fit和leastsq来说,这似乎很清楚,但对于least_squares方法来说却不是那么清楚(至少对我而言)。
我一直在做的一种方法是因为我知道least_squares返回雅可比矩阵 J (这是“jac”返回值),然后我做的是我将Hessian H逼近2 * J ^ T J.最后,协方差矩阵是H ^ { - 1},因此大约是(2 * J ^ TJ)^ { - 1},但是我担心这可能是近似的粗糙协方差?
答案 0 :(得分:0)
curve_fit
本身使用来自least_squares
的jacobian的伪逆,https://github.com/scipy/scipy/blob/2526df72e5d4ca8bad6e2f4b3cbdfbc33e805865/scipy/optimize/minpack.py#L739
有一点需要注意的是,如果结果接近边界,整个方法都是可疑的。