线性回归是一种用最佳拟合直线来描述一个变量如何随另一个变量变化的方法。在简单线性回归中,若只有一个输入变量 x 和一个输出变量 y,模型为
y^=b0+b1x
这里,y^ 是预测值,b1 是斜率,b0 是截距。最常用的拟合方法是普通最小二乘法,它会选择使残差平方和尽可能小的那条直线:
i=1∑n(yi−y^i)2=i=1∑n(yi−(b0+b1xi))2
如果你只需要记住核心思想,那就是:只要直线模型拟合得还算合理,斜率就表示 x 每增加 1 个单位时,模型预测的 y 的变化量。
线性回归方程:它告诉你什么
如果线性模型能较合理地描述数据,那么斜率 b1 表示当 x 增加 1 时,y 的预测变化量。截距 b0 则表示当 x=0 时,y 的预测值。
“预测”这个词很重要。回归直线通常不会穿过每一个点。相反,它会在所有数据点之间平衡误差,因此它概括的是整体趋势,而不是精确匹配每一个观测值。
b0 和 b1 的线性回归公式
对于简单线性回归,只要 x 的取值不全相同,最小二乘法得到的系数可以写成
b1=∑i=1n(xi−xˉ)2∑i=1n(xi−xˉ)(yi−yˉ)
以及
b0=yˉ−b1xˉ
这里,xˉ 是 x 值的平均数,yˉ 是 y 值的平均数。这些公式适用于简单线性回归。如果你有多个输入变量,建立模型的方式就会改变。
为什么最小二乘法要使用残差平方
可以把数据点想象成散点图上的一团点云。许多直线都可能靠近这团点云。线性回归会选择那条让纵向偏差(也就是残差)整体尽可能小的直线。
把残差平方有两个好处。第一,它能避免正误差和负误差相互抵消。第二,它会让较大的偏差受到更大的惩罚。
简单线性回归示例
假设数据点为 (1,2)、(2,2)、(3,4) 和 (4,4)。我们来拟合一条简单线性回归直线。
先求平均数:
xˉ=41+2+3+4=2.5
yˉ=42+2+4+4=3
现在计算斜率:
b1=(−1.5)2+(−0.5)2+(0.5)2+(1.5)2(−1.5)(−1)+(−0.5)(−1)+(0.5)(1)+(1.5)(1)
b1=54=0.8
然后计算截距:
b0=yˉ−b1xˉ=3−0.8(2.5)=1
所以回归方程为
y^=1+0.8x
如果 x=5,模型预测
y^=1+0.8(5)=5
你也可以检查一个残差。当 x=2 时,预测值为
y^=1+0.8(2)=2.6
实际值是 2,所以残差为
y−y^=2−2.6=−0.6
这个点位于回归直线下方 0.6 个单位。一个残差并不能说明整个模型是否足够好,但它能展示回归是如何度量误差的。
线性回归中的常见错误
一个常见错误是认为回归直线必须经过每一个点。回归追求的是最佳拟合,而不是完美拟合。
另一个错误是把斜率理解成对每个数据点都完全成立的精确规律。实际上,斜率表示的是模型给出的平均预测变化。
第三个错误是把回归当作因果关系的证明。明显的线性模式可以帮助预测或描述相关关系,但它本身并不能解释为什么这些变量会一起变化。
人们也很容易过度相信观测范围之外的预测。即使拟合直线在原始范围内看起来很好,外推也可能失效。
什么时候使用线性回归
当用一条直线来概括关系是有意义的,并且在你关心的范围内这种关系至少大致呈线性时,就可以使用线性回归。常见用途包括根据面积估计价格、根据学习时间估计分数,或在稳定条件下根据输入估计输出。
当你希望模型便于解释时,它尤其有用。斜率、截距和残差都比较直观,能够清楚说明模型在做什么,而不会把过程隐藏起来。
在信任这条直线之前,先快速检查一下
在使用回归直线之前,先问两个问题。散点图看起来是否大致呈线性?结合实际背景来看,斜率是否有意义,而不是会造成误导?如果其中任何一个答案是否定的,那么其他模型可能更合适。
试一道类似的问题
选取四个点,把它们画出来,然后用计算器或软件拟合一条直线。接着比较预测值和实际值。观察残差,往往是理解回归直线到底在做什么的最快方法。