【发布时间】:2014-12-13 07:06:34
【问题描述】:
我使用 numpy.polyfit 将二阶多项式拟合到一组数据
fit1, fit_err1, _, _, _ = np.polyfit(xint[:index_max],
yint[:index_max],
2,
full=True)
对于我的一些数据示例,变量fit_err1 为空,尽管拟合成功,即fit1 不为空!
有人知道在这种情况下空残差是什么意思吗?谢谢!
编辑: 一个示例数据集:
x = [-488., -478., -473.]
y = [ 0.02080881, 0.03233648, 0.03584448]
fit1, fit_err1, _, _, _ = np.polyfit(x, y, 2, full=True)
结果:
fit1 = [ -3.00778818e-05 -2.79024663e-02 -6.43272769e+00]
fit_err1 = []
我知道将二阶多项式拟合到一组三点不是很有用,但是我仍然希望该函数要么发出警告,要么(因为它实际上确定了拟合)返回实际残差,或者两者(比如“这是残差,但你的条件很差!”)。
【问题讨论】:
-
你能举个小例子说明导致这种行为的一些数据吗?
-
二阶多项式可以精确地拟合到三个点,因此残差都为零。如果唯一没有残差的情况是点数正好比多项式的阶数大一,这就是你对发生的事情的解释。
-
@Jaime:好点!但如果拟合是精确的,我希望残差为 0 而不是 [],不是吗?
-
您可能希望在numpy's github 上将其作为错误/功能请求打开。
-
如果精确匹配是这种奇怪行为的根本原因,那么您是对的!我会发邮件给 numpy 团队。
标签: python arrays python-2.7 numpy curve-fitting