使用Python SciPy量化曲线拟合的质量

Ian*_*rts 10 python curve-fitting scipy least-squares

我正在使用Scipy CurveFit将高斯曲线拟合到数据中,并且有兴趣分析拟合的质量.我知道CurveFit返回一个有用的pcov矩阵,从中可以将参数popt [0]的每个拟合参数的标准偏差计算为sqrt(pcov [0,0]).

例如代码片段:

import numpy as np
from scipy.optimize import curve_fit

def gaussian(self, x, *p):
 A, sigma, mu, y_offset = p
return A*np.exp(-(x-mu)**2/(2.*sigma**2)) + y_offset

p0 = [1,2,3,4] #Initial guess of parameters
popt, pcov = curve_fit(gaussian, x,y, p0) #Return co-effs for fit and covariance

‘Parameter A is %f (%f uncertainty)’ % (popt[0], np.sqrt(pcov[0, 0]))
Run Code Online (Sandbox Code Playgroud)

这给出了拟合曲线方程中每个系数拟合参数的不确定性的指示,但我想知道如何最好地获得整体"拟合参数质量",以便我可以比较不同曲线方程之间的拟合质量(例如高斯,超高斯等)

在一个简单的层面上,我可以计算每个系数的不确定性百分比,然后平均,虽然我想知道是否有更好的方法?从在线搜索,以及特别有用的"适合度"维基百科页面,我注意到有很多措施来描述这一点.我想知道是否有人知道是否有任何内置到Python包/有任何一般建议的好方法来量化曲线拟合.

谢谢你的帮助!

Ser*_*nko 4

您可以使用ODRPACK库代替 curve_fit。ODRPACK 拟合的结果包含以多种不同方式对所有拟合参数的不确定性的估计,包括估计参数的标准误差,这正是您正在寻找的。

我曾经使用 curve_fit ,但我遇到了同样的问题:缺乏拟合参数误差的估计。所以,现在我正在使用 ODRPACK。