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