Mix*_*xel 3 numpy linear-regression standard-deviation
我使用numpy.polyfit得到线性回归:coeffs = np.polyfit(x,y,1).
使用numpy计算拟合斜率误差的最佳方法是什么?
正如@ebarr在评论中已经提到的,您可以使用np.polyfit通过使用关键字参数返回残差full=True.
例:
x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z, residuals, rank, singular_values, rcond = np.polyfit(x, y, 3, full=True)
Run Code Online (Sandbox Code Playgroud)
residuals 那么是最小二乘的总和.
或者,您可以使用关键字参数cov=True来获取协方差矩阵.
例:
x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z, cov = np.polyfit(x, y, 3, cov=True)
Run Code Online (Sandbox Code Playgroud)
然后,对角线元素cov是z中系数的方差,即np.sqrt(np.diag(cov))给出系数的标准偏差.您可以使用标准偏差来估计绝对误差超过某个值的概率,例如通过在不确定度传播计算中插入标准偏差.如果在不确定性传播中使用例如3*标准差,则计算99.7%的情况下不会超过的误差.
最后一个提示:你必须选择是否选择full=True或cov=True.cov=True仅在full=False(默认)时有效,反之亦然.