如何使用误差线将多项式拟合到数据

Jdo*_*dog 9 python numpy curve-fitting scipy

我目前正在使用numpy.polyfit(x,y,deg)来将多项式拟合到实验数据.然而,我想拟合一个基于点的误差使用加权的多项式.

我找到了使用权重的scipy.curve_fit,我想我可以将函数'f'设置为我所需顺序的多项式,并将我的权重放在'sigma'中,这应该达到我的目标.

我想知道还有另一个更好的方法吗?

非常感谢.

Rol*_*tra 15

对于加权多项式拟合,您可以使用:

numpy.polynomial.polynomial.polyfit(x, y, deg, rcond=None, full=False, w=weights)
Run Code Online (Sandbox Code Playgroud)

http://docs.scipy.org/doc/numpy/reference/generated/numpy.polynomial.polynomial.polyfit.html

重要的是要注意,在这个函数中,应该提供权重1/variance(这是许多加权应用程序中的常用形式),但是1/sigma

虽然curve_fitleastsq有更全面和强大的优化工具比polyfit(因为它们能适应刚刚任何功能),polyfit有它产生的(精确)的解析解,因此可能比迭代近似方法,如更快的优势curve_fitleastsq-尤其是在将多项式拟合到多组y数据(在相同的x向量上获得)的情况

更新:从numpy版本1.7开始,numpy.polyfit也将权重作为输入(理想情况下应该提供1/sigma,不是1/variance)


Ber*_*ard 7

请查看http://scipy-cookbook.readthedocs.io/items/FittingData.html,特别是"为有错误的数据拟合幂律"部分.它显示了如何使用包含错误加权的函数scipy.optimize.leastsq.