【问题标题】:Linear regression slope error in numpynumpy中的线性回归斜率误差
【发布时间】:2014-12-04 19:44:43
【问题描述】:

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

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

【问题讨论】:

  • 当您使用polyfit 时,它会返回拟合的残差。您可以对此进行 Chi2 以获得我认为您正在寻找的合身度。
  • 我正在寻找绝对错误,而不是善良。
  • 残差是拟合中每个点的绝对误差。

标签: numpy linear-regression standard-deviation


【解决方案1】:

正如@ebarr 在 cmets 中已经提到的,您可以使用 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(默认)时有效,反之亦然。

【讨论】:

  • 当我尝试实现这个解决方案时,我在协变量矩阵的对角线上得到了负值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 2021-02-25
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多