如何使用numpy.polyfit找到斜率误差和截距

rfe*_*and 5 python numpy

我用numpy.polyfit为一些数据拟合直线.数据本身没有任何错误栏.这是我的代码的简化版本:

from numpy import polyfit

data = loadtxt("data.txt")
x,y = data[:,0],data[:,1]
fit = polyfit(x,y,1)
Run Code Online (Sandbox Code Playgroud)

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

Gre*_*reg 10

我回答这个问题有点迟了,但我认为这个问题仍然没有答案,对我而言是谷歌的最大打击.因此,我认为以下是正确的方法

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]))
Run Code Online (Sandbox Code Playgroud)

哪个输出

x_1: 10.2069326441 +/- 0.368862837662
x_2: 1.82929420943 +/- 0.213500166807
Run Code Online (Sandbox Code Playgroud)

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

  • @deusexmachina 协方差矩阵的 sqrt 应该给出误差的标准偏差。 (2认同)