【问题标题】:How to get the sum of least squares/error from polyfit in one dimension Python如何从一维Python中的polyfit获得最小二乘/误差之和
【发布时间】:2015-04-15 01:04:43
【问题描述】:

我想使用 polyfit 对散点图进行线性回归,并且我还希望通过残差来了解线性回归的效果。但我不确定我是如何得到这个的,因为它是一维的,所以不可能从 polyfit 中获得残差作为输出值。我的代码:

p = np.polyfit(lengths, breadths, 1)
m = p[0]
b = p[1]
yfit = np.polyval(p,lengths)
newlengths = []
for y in lengths:
    newlengths.append(y*m+b)
ax.plot(lengths, newlengths, '-', color="#2c3e50")

我看到他们使用 polyval 的 stackoverflow 答案 - 但我不确定这给了我什么。这是长度的确切值吗?我应该通过从 polyval 和“宽度”中找到每个元素的增量来找到错误吗?

【问题讨论】:

  • 不确定我是否理解这个问题,但残差是您的拟合和数据之间的差异。在这种情况下,应该是yfit - breadths

标签: python regression


【解决方案1】:

您可以在调用polyfit(参见http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html)时使用关键字full=True 来获得适合的最小二乘误差:

coefs, residual, _, _, _ = np.polyfit(lengths, breadths, 1, full=True)

您可以通过以下方式得到相同的答案:

coefs = np.polyfit(lengths, breadths, 1)
yfit = np.polyval(coefs,lengths)
residual = np.sum((breadths-yfit)**2)

residual = np.std(breadths-yfit)**2 * len(breadths)

另外,如果你想绘制残差,你可以这样做:

coefs = np.polyfit(lengths, breadths, 1)
yfit = np.polyval(coefs,lengths)
plot(lengths, breadths-yfit)

【讨论】:

    猜你喜欢
    • 2013-02-20
    • 2012-04-29
    • 2018-10-20
    • 2019-10-06
    • 2018-12-27
    • 2017-02-24
    • 2013-07-16
    • 2013-01-21
    • 2022-11-13
    相关资源
    最近更新 更多