我试图根据以下情况绘制回归线。这段代码有效;然而,它将回归线绘制在散点图的右侧。
我的问题是如何让回归线正确绘制。我从这个网站借用了密码。
http://matthiaseisen.com/pp/patterns/p0170/
import numpy.linalg
import matplotlib.pyplot as plt
def regression_model():
L_1 = numpy.array([38.83, 37.8, 34.41, 30.95, 23.00, 31.75, 36.59, 41.15])
y_d = [1,2,3,4,5,6,7,8]
n=len(L_1)
B=numpy.array(y_d)
A=numpy.array(([[L_1[j], 1] for j in range(n)]))
X=numpy.linalg.lstsq(A,B)[0]
a=X[0]; b=X[1]
print ("Line is: y=",a,"x+",b)
r_9 = a * L_1[7] + 4.92
print ('Predicited value at period 9 is ' + str(r_9) + ' using regression')
fig, ax = plt.subplots()
fit = numpy.polyfit(y_d, L_1, deg=1)
ax.plot(L_1, fit[0] * L_1 + fit[1], color='red')
ax.scatter(y_d, L_1)
plt.show()
答案 0 :(得分:1)
您在Y轴L_1
上绘制了该线,而您需要的是X轴y_d
。我们需要一个numpy数组才能工作,但你已经有了一个:
fit = numpy.polyfit(y_d, L_1, deg=1)
ax.plot(B, fit[0] * B + fit[1], color='red')