numpy中的线性回归斜率误差

时间:2014-12-03 23:08:56

标签: numpy linear-regression standard-deviation

我使用numpy.polyfit进行线性回归:coeffs = np.polyfit(x,y,1)。

使用numpy计算拟合斜率误差的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

正如@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)

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)

然后,cov的对角元素是z中系数的方差,即np.sqrt(np.diag(cov))给出系数的标准偏差。您可以使用标准偏差来估计绝对误差超过某个值的概率,例如,通过在uncertainty propagation calculation中插入标准偏差。如果您使用例如不确定度传播的3 *标准偏差,计算99.7%的情况下不会超过的误差。

最后一个提示:您必须选择是选择full=True还是cov=Truecov=True仅在full=False(默认)时有效,反之亦然。