在 numpy polyfit 中使用的权重值是多少,拟合的误差是多少
Posted
技术标签:
【中文标题】在 numpy polyfit 中使用的权重值是多少,拟合的误差是多少【英文标题】:What are the weight values to use in numpy polyfit and what is the error of the fit 【发布时间】:2013-11-09 04:16:21 【问题描述】:我正在尝试对 numpy 中的一些数据进行线性拟合。
Ex(其中 w 是我对该值的样本数,即对于点 (x=0, y=0)
我只有 1 个测量值,该测量值是 2.2
,但对于点 (1,1)
我有2 个测量值,值为 3.5
。
x = np.array([0, 1, 2, 3])
y = np.array([2.2, 3.5, 4.6, 5.2])
w = np.array([1, 2, 2, 1])
z = np.polyfit(x, y, 1, w = w)
所以,现在的问题是:
对于这些情况,在 polyfit 中使用 w=w
是否正确,或者我应该使用 w = sqrt(w)
我应该使用什么?
另外,如何从 polyfit 中获取拟合误差?
【问题讨论】:
【参考方案1】:如果您有正态分布的测量值,那么每个值的不确定性将与1/sqrt(n)
成正比,其中n
是测量次数。你想通过不确定性的倒数来衡量你的适合度,所以你的第二个猜测是最好的:w=np.sqrt(n)
要获得参数的协方差,请同时提供cov=True
。
x = np.array([0, 1, 2, 3])
y = np.array([2.2, 3.5, 4.6, 5.2])
n = np.array([1, 2, 2, 1])
p, c = np.polyfit(x, y, 1, w=np.sqrt(n), cov=True)
cov
矩阵的对角线是每个参数的个体方差,当然非对角线是协方差。所以最有可能你想要的“拟合误差”是这些对角线的平方根:
e = np.sqrt(np.diag(c))
【讨论】:
非常感谢。这就是我一直在寻找的。span> 很高兴为您提供帮助,@jbssm。顺便说一句,当使用np.polyfit
、np.polyval
、np.poly1d
等时,不要将它们与任何np.polynomial
模块函数组合在一起,因为它们是follow different conventions, specifically the return ordering。通常建议只使用np.polynomial
package,但出于某种原因it doesn't provide the covariance
以上是关于在 numpy polyfit 中使用的权重值是多少,拟合的误差是多少的主要内容,如果未能解决你的问题,请参考以下文章
在没有numpy polyfit的python中拟合二次函数
numpy.polyfit 和 scipy.polyfit 有啥区别? [复制]
多个维度的 NumPy PolyFit 和 PolyVal?
无法在 Jupyter 笔记本中导入 Numpy(RuntimeError: Polyfit sanity test 发出警告,很可能是由于使用了有问题的 Accelerate 后端)
numpy polynomial.Polynomial.fit() 给出的系数与 polynomial.polyfit() 不同