我试图编写一个函数,使回归趋势线垂直移动,使其通过最低数据点。这一点起初看起来很简单,直到我意识到,线的斜率决定了哪一点最远。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import linregress
x = np.arange(0,10,2)
y = np.random.random(5)
res = linregress(x,y)
plt.figure(figsize=(9,4),dpi=450)
plt.plot(x, y, 'o', label='original data')
plt.plot(x, res.intercept + res.slope*x, 'r', label='fitted line')
plt.legend()
plt.show()
此代码生成的回归线的图像:
手动移动截距值后的直线图像:
如果能提供任何帮助,我们将不胜感激。
1条答案
按热度按时间mkshixfv1#
您已经知道如何在给定x值的情况下获取直线上任意点的y值:通过应用直线方程(y =斜率 * x +截距),就像绘制直线时所做的那样。这样就可以计算残差,残差是每个点的实际y值与回归直线估计的y值之间的差值。要移动直线,使其通过最低点(通过与直线的垂直距离来测量),将最小(即,最负)残差添加到每个y值: