如何从一维Python中的polyfit得到最小二乘/误差之和

时间:2015-04-14 16:33:52

标签: python regression

我想使用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和'广度中找到每个元素的增量来找到错误?

1 个答案:

答案 0 :(得分:3)

您可以在调用full=True时使用关键字polyfit(请参阅http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html)以获得最适合您的拟合错误:

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)