好吧,我想我找到了答案。首先是解决方案:cov_x * s_sq就是您想要的参数的协方差。取对角线元素的平方根会给您标准偏差(但要注意协方差!)。
残留方差=减少的卡方= s_sq = sum [(f(x(y)-y)^ 2]
/(Nn),其中N为数据点数,n为拟合参数数。减少卡方。
我感到困惑的原因是,由minimumsq给出的cov_x实际上在其他地方并不是真正的cov(x),而是减少的cov(x)或分数cov(x)。它在其他任何参考文献中均未显示的原因是它是一种简单的重新缩放,在数值计算中很有用,但与教科书无关。
关于Hessian和Jacobian,该文档措辞不佳。在这两种情况下,很明显是由Hessian计算得出的,因为Jacobian最小为零。他们的意思是说他们正在使用与雅可比近似的方法来找到黑森州。
进一步说明。似乎curve_fit结果实际上并未考虑误差的绝对大小,而仅考虑了所提供的sigma的相对大小。这意味着即使误差条变化了百万分之一,pcov返回的值也不会改变。这当然是不对的,但似乎是标准做法。Matlab使用“曲线拟合”工具箱时会做同样的事情。此处描述了正确的过程:https
:
//en.wikipedia.org/wiki/Linear_least_squares_(mathematics)#Parameter_errors_and_correlation
一旦找到最佳值,至少对于线性最小二乘法,这样做似乎很简单。



