我正在使用numpy.polyfit对一些数据进行直线拟合,这些数据本身没有任何误差条。下面是我代码的简化版本:
from numpy import polyfit
data = loadtxt("data.txt")
x,y = data[:,0],data[:,1]
fit = polyfit(x,y,1)
当然,这给了我斜率和截距的数值,但是如何找到最佳拟合值的不确定性呢?
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
,其对角线的平方根是每个拟合系数的估计标准偏差。当然,这适用于更高维度。