如何使用numpy.polyfit查找斜率和截距的错误

12

我正在使用numpy.polyfit对一些数据进行直线拟合,这些数据本身没有任何误差条。下面是我代码的简化版本:

from numpy import polyfit

data = loadtxt("data.txt")
x,y = data[:,0],data[:,1]
fit = polyfit(x,y,1)

当然,这给了我斜率和截距的数值,但是如何找到最佳拟合值的不确定性呢?

1个回答

19
我回答有点晚,但我认为这个问题仍然没有得到解答,并且对我来说是谷歌的热门搜索结果。因此,我认为以下是正确的方法。
x = np.linspace(0, 1, 100)
y = 10 * x + 2 + np.random.normal(0, 1, 100)

p, V = np.polyfit(x, y, 1, cov=True)

print("x_1: {} +/- {}".format(p[0], np.sqrt(V[0][0])))
print("x_2: {} +/- {}".format(p[1], np.sqrt(V[1][1])))

输出的结果为

x_1: 10.2069326441 +/- 0.368862837662
x_2: 1.82929420943 +/- 0.213500166807

因此,您需要返回协方差矩阵V,其对角线的平方根是每个拟合系数的估计标准偏差。当然,这适用于更高维度。


1
我想引起对这个答案的关注,它确实回答了提问者的问题。 - Alicia Garcia-Raboso
这是什么类型的“参数误差”?标准偏差,平均标准偏差? - logical x 2
2
@deusexmachina 协方差矩阵的平方根应该给出误差的标准偏差。 - pylang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接