python - 如何将多项式拟合到带有误差线的数据

标签 python numpy scipy curve-fitting

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

我找到了 scipy.curve_fit它利用了权重,我想我可以将函数“f”设置为我想要的阶数的多项式形式,并将权重放在“sigma”中,这应该可以实现我的目标。

我想知道还有其他更好的方法吗?

非常感谢。

最佳答案

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

numpy.polynomial.polynomial.polyfit(x, y, deg, rcond=None, full=False, w=weights)

参见 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)

关于python - 如何将多项式拟合到带有误差线的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6663127/

相关文章:

python - 代码可以在 IDLE 中运行,但不能在 PyCharm 中运行

python - 计算二进制文件中的出现次数 Python 2X

python - numpy 分类与 3d 数组的比较

python - SciPy medfilt 错误结果

python - 损坏的 numpy/scipy 安装(python、ubuntu 10.04)

javascript - 删除我的 JSON 数据前面的你

python - 使用 libmodbus C 为 Open-WRT 路由器编写 modbus 程序(将 Python 应用程序重写为 C)

python - Perlin噪音问题: clearly visible lines in result

python - 每个元素与数组的每个其他元素的点积

python - 错误消息缺少必需的依赖项,导入错误 : Missing required dependencies ['numpy' ] when I try and freeze an executable