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

标签 python scipy curve-fitting 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]))

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

在简单的层面上,我可以只计算每个系数的百分比不确定性,然后取平均值,尽管我想知道是否有更好的方法? 通过在线搜索,以及特别有用的“拟合优度”维基百科页面,我注意到有很多方法可以描述这一点。我想知道是否有人知道是否有任何内置于 Python 包中/对量化曲线拟合的好方法有任何一般性建议。

感谢您的帮助!

最佳答案

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

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

关于python - 使用 Python SciPy 量化曲线拟合的质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773741/

相关文章:

python - 如何对 SciPy 曲线拟合施加约束?

python - Armadillo /MKL/其他? C++ 中的插值相当于 Scipy 插值

python - 查找包含任意坐标列表的 voronoi 区域

gnuplot - 为什么我对对数函数的拟合看起来如此错误

python - 在ubuntu opencv python中运行代码后,网络摄像头一次又一次停止

python - nginx+paste 能在生产环境中运行吗?

Python-多处理守护进程

python - 如何用 Pandas DataFrame 中行的总和替换 NaN

python - 使用 scipy ndimage.rotate(值高于 1.0)旋转后出现奇怪的伪像

python - 使用python进行非线性回归 - 更好地拟合这些数据的简单方法是什么?