残差是什么
残差就是一个点在最佳拟合直线上方或下方的距离。每个残差都只是一次简单的减法,合在一起,它们能告诉你这条直线到底好不好。
最后更新
最佳拟合直线会为每一个 x 预测一个 y 值。大多数点并不正好落在直线上,一个点的实际值与直线认为它应该是的值之间的差距,就是这个点的残差。它是回归中最简单的量,只是一次减法,而解读残差,正是分辨一条直线是真的拟合得好、还是只是看起来拟合得好的方法。
拖动下面的点。每条竖直线段就是一个残差,蓝色表示直线上方的点,橙色表示直线下方的点,表格列出了每一个残差以及它们的平方和。
| x | y | 预测值 ŷ | 残差 y − ŷ |
|---|---|---|---|
| 1 | 4 | 2 | 2 |
| 2 | 2 | 3 | -1 |
| 3 | 2 | 4 | -2 |
| 4 | 5 | 5 | 0 |
| 5 | 6 | 6 | 0 |
| 6 | 8 | 7 | 1 |
| 8 | 9 | 9 | 0 |
每条线段就是一个残差:直线上方为蓝色,下方为橙色。拖动一个点,看平方和如何变化。
观测值减预测值
对于坐标为 (x, y) 的点,直线预测的值记作 ŷ,读作“y 帽”。残差是
e = y - ŷ
观测值减预测值,顺序永远是这样。
取五个点,x = 1、2、3、4、5,y = 2、4、5、4、5。它们的最佳拟合直线是 y = 0.6x + 2.2。在 x = 3 处,直线预测 0.6 × 3 + 2.2 = 4,而实际的点是 (3, 5),所以残差是 1。在 x = 1 处,直线预测 2.8,而点是 (1, 2),所以残差是 -0.8。
| x | 观测值 y | 预测值 ŷ | 残差 | 残差² |
|---|---|---|---|---|
| 1 | 2 | 2.8 | -0.8 | 0.64 |
| 2 | 4 | 3.4 | 0.6 | 0.36 |
| 3 | 5 | 4 | 1 | 1 |
| 4 | 4 | 4.6 | -0.6 | 0.36 |
| 5 | 5 | 5.2 | -0.2 | 0.04 |
| 合计 | 0 | 2.4 |
符号说明了什么
正残差说明这个点在直线上方:实际值比预测值高,所以直线低估了它。负残差说明这个点在直线下方,直线高估了它。残差为零说明这个点正好在直线上。
残差的大小以 y 的单位计。如果 y 是以分为单位的考试成绩,残差为 -0.8 就表示这名学生的得分,比直线对他的 x 所预测的低 0.8 分。
为什么残差之和等于零
看表格中的残差那一列:-0.8、0.6、1、-0.6 和 -0.2 加起来正好是 0。这不是运气。每一条带截距的最小二乘直线都是这样。
这条直线的截距取 b = ȳ - m x̄。把所有 n 个点的残差 y - (mx + b) 加起来:y 值之和是 nȳ,mx 项之和是 mnx̄,b 项之和是 nb。代入 b 的公式,三部分相互抵消,结果为零。用文字说:直线的位置恰好让上方的点和下方的点完全平衡。
这也是为什么残差必须先平方,才能衡量拟合的好坏。它们直接相加的和总是 0,无论直线好坏。
残差平方和
把每个残差平方后加起来,就得到残差平方和,常记作 SSE。对于上面的五个点,它是 0.64 + 0.36 + 1 + 0.36 + 0.04 = 2.4。
最佳拟合直线的定义,就是让这个数尽可能小的那条直线。其他任何直线都会更差。直线 y = 0.5x + 2.5 也经过平均数点 (3, 4),在图上看起来几乎一样,但它的残差是 -1、0.5、1、-0.5 和 0,平方和为 2.5。直线 y = x + 1 得到的是 4。最小值 2.4 只属于 y = 0.6x + 2.2。
平方有一个值得了解的副作用。残差为 2 时给总和贡献 4,残差为 4 时贡献 16,所以一个远离其他点的点,会把整条直线往自己这边拉。把上图中的某一个点拖到角落里,看看平方和怎样猛增、直线怎样倾斜。
残差图
残差图把 x 放在横轴上,把每个点的残差放在纵轴上。拟合直线变成了零处的水平线,问题也随之变得简单:还剩下什么规律吗?
没有规律的带状分布,说明直线拟合得好。 残差在零的上下散布,没有形状,在每个 x 处宽度都差不多,说明直线已经抓住了趋势,剩下的只是噪声。
曲线形状说明直线不适合。 在 x = 0 到 5 处取平方数 0、1、4、9、16 和 25,拟合一条直线,得到 y = 5x - 10/3,r ≈ 0.9599,听起来拟合得非常好。残差却说出了真相:
它们依次是 10/3、-2/3、-8/3、-8/3、-2/3、10/3:一个 U 形。直线在中间总是偏高,在两端总是偏低,用直线去拟合曲线时总是这个样子。抛物线能完全拟合这些点,这正是二次回归计算器会找到的结果。
扇形说明离散程度在增大。 如果残差在一端很小、在另一端很大,直线平均来说可能仍然正确,但随着 x 增大,它的预测会越来越不精确。按百分比增长的数据,比如价格或人口,常常是这个样子,下一步通常会尝试指数模型。
残差与离群点
一个残差特别大的点,与其他点相比远在直线上方或下方,就是 y 方向上的离群点。它值得再看一眼:可能是录入错误,也可能是一个真正不同的情况。
一个在 x 方向上远离其他点的点,则是另一类问题。因为直线绕着平均数点转动,x 方向上很远的点有一根长长的杠杆,能把直线拉向自己,结果它的残差可能很小,尽管它对直线的改变最大。所以残差小并不能证明一个点是普通的。在上面的图中,把最右边的点直直往下拖,看直线怎样跟着它走。
试一题
直线预测 4.6,而点在 4,所以这个点在直线下方 0.6 处。如果你得到 0.6,说明减法的顺序弄反了:永远是观测值减预测值。对于你自己的数据,线性回归计算器能给出直线和它的残差平方和,而相关系数页面会说明,用一个数来表示的拟合强度是什么意思。
常见问题
残差是什么?
数据点到拟合直线的竖直距离:观测到的 y 减去直线在这个 x 处预测的 y。如果一个点是 (3, 5),而直线在 x = 3 处预测为 4,那么残差就是 5 减 4 = 1。
残差怎么算?
把这个点的 x 代入直线方程,得到预测值,再用这个点的实际 y 减去预测值。残差 = 观测值减预测值。顺序很重要:预测值减观测值,大小一样,符号却反了。
残差为负是什么意思?
这个点在直线下方,所以直线预测的值比观测值高:它高估了。残差为正说明这个点在直线上方,直线低估了。残差为 0 说明这个点正好在直线上。
为什么残差之和等于零?
对于带截距的最小二乘直线,残差之和总是零。截距取 b = y 的平均数减 m 乘 x 的平均数,这让直线经过平均数点;把所有点的 y 减 (mx + b) 加起来,得到 n 乘 y 的平均数,减去 m 乘 n 乘 x 的平均数,再减去 n 乘 b,结果正好是 0。
好的残差图应该是什么样子?
一条围绕零、没有规律的水平带,左边和右边差不多宽。如果残差呈曲线(U 形或倒 U 形),说明直线不适合这些数据。如果残差像扇子一样越往后越宽,说明 x 越大,预测越不可靠。
残差平方和是什么?
把每个残差平方后加起来。它衡量这些点整体上离直线有多远,也正是最小二乘法要让它尽可能小的量。当 x = 1 到 5、y = 2、4、5、4、5 时,最小二乘直线的残差平方和是 2.4,其他任何直线得到的值都更大。
想用你自己的数字算一算?
线性回归计算器 打开计算器