回归分析第13讲: 岭回归:让回归系数不再“乱跳”的方法(共线性系列二)
上一篇我们讲了为什么会产生“共线性”,以及它会导致回归系数不稳定、忽大忽小、甚至方向反复变化。
很多同学问:
“既然共线性这么麻烦,那到底怎么解决?”
今天我们就用最简单的方式介绍一种非常实用的方法:
岭回归(Ridge Regression)——让系数稳定下来,让模型更靠谱。
同时用JASP软件演示一个入门案例。
【一】先给结论:岭回归不是为了让模型更强,而是让模型更稳
当你的自变量高度相关(共线性严重)时,普通回归(OLS)会出现:
- 系数乱跳
- 符号前后不一致
- “矩阵接近奇异”报错
- 模型不再可信
岭回归做了一件非常小、非常关键的事:
它在回归公式里加了一个很小的稳定器(λ),让系数不要乱飞,模型变得稳定、可解释。
所以:
岭回归不是为了提高 R²,而是为了让模型不失控。
【二】为什么 OLS 会在共线性下“崩塌”?(最容易忽视的知识点)
如果两个自变量高度相关,例如:
- 面积大 → 房间数多
- GDP 高 → 人口密度往往也高
- 教育水平高 → 收入通常也高
它们向模型提供的是 重复信息:
房价的高低,到底是“面积贡献大”,还是“房间数贡献大”?
回归模型会试图“分配”每个变量的贡献,但两个变量太像了,模型无法判断“谁贡献了多少”,于是:
- 系数可能特别大
- 也可能特别小
- 甚至符号反常(明明应该是正的,结果跑出负的)
这就是共线性导致的典型现象:
共线性不是让模型跑不动,而是让系数失去常识。
【三】用一个比喻解释岭回归:给回归系数“踩一个刹车”
想象普通回归是拉橡皮筋:
- 误差越小 → 橡皮筋拉得越长
- 系数越大 → 拉力越强
共线性会让橡皮筋变得“特别松”,轻轻一拉就被拉到极端,结果就是:
- 系数过大
- 系数互相抵消
- 系数变符号
岭回归做的事非常直观:
给橡皮筋加一个阻尼(λ),让它没那么容易被拉过头。
阻尼越大,橡皮筋越不容易乱飞。
这就是岭回归的本质思想:收缩(shrinkage)。
【四】最直观的解释:岭回归只改变一件事
OLS 的直观公式:
意思是:
x 和 y 越一致 → 系数越大;x 自己越“乱跳” → 系数越小。
岭回归的直观公式:
只多了一个 λ!
λ 就像在分母上“加了个配重”,系数自然就稳下来了。
它在回归系数上轻轻加了一点约束,让系数不要乱跳。
可以把普通回归的系数想象成“随风飘的绳子”,岭回归就是在绳子末端挂一个小小的配重,让它稳一点。
这个小配重的大小,就是参数 λ(lambda)。
【五】为什么用 JASP 做?它是什么?
岭回归可以用Stata、R或Python做,也很方便,但它们不是菜单式的。
我们知道有一部分同学和研究人员,对写软件命令是十分排斥的。他们希望把更多的时间用在专业领域的研究上,而不是花太多时间一直测试软件命令。
SPSS这样的经典统计分析软件中,本身没有岭回归的菜单,需要另外加载模块。
这里,Henry老师介绍一款免费统计分析软件JASP。它的特点是:
- ✔ 免费
- ✔ 开源
- ✔ 界面直观
- ✔ 适合初学者和代码排斥者
- ✔ 比 SPSS 多了机器学习模块
在 JASP 中,正则化回归界面是完全可视化的,对于课堂教学、写论文、或初学者学习回归分析都非常友好。
此外,Henry老师也提醒一下:
最近,身边有多起研究人员因为在论文中使用了非正版统计软件(如盗版 SPSS),被版权机构要求补偿费用。
因此,像 JASP 这样免费的、正版的、功能完整的菜单式软件,就显得非常宝贵,也更适合作为教学与科研的首选工具。
JASP下载地址:
https://jasp-stats.org/download/
【六】案例:用房价数据演示一次岭回归(面积 + 房间数 → 房价)
我们用一个很小但很典型的数据集“房价影响因素”来演示:
- 因变量: price(房价)
- 自变量: area(面积)、rooms(房间数)
area 和 rooms 本身高度相关,属于典型的共线性场景。
在 JASP 中操作非常简单:
路径:机器学习 → 回归 → 正则化线性
设置好目标变量和自变量,并勾选以下内容:
- 模型性能
- 特征重要性
- 系数轨迹
- λ 估计图
- 数据拆分
JASP会自动运行,右侧直接给出结果。
【七】 输出结果怎么读?
JASP得到的回归方程截图如下:
下面是正则化线性回归和模型性能指标图:
**(1)数据拆分与模型误差
上面的输出结果告诉我们:
- 训练集 19 个
- 验证集 5 个
- 测试集 6 个
R² = 0.713
说明模型可以解释房价约 71% 的变化——在只有两个变量的情况下非常不错。
MAPE ≈ 24%
说明模型平均预测误差约为 24%,属于正常范围。
一句话解释:
普通回归下,面积和房间数两个系数可能会非常大、方向不稳,而岭回归把它们稳定在同一数量级(4.4 万 vs 4.2 万),方向一致、大小合理,因此更稳定。
**(2)岭回归选出了最佳 λ(26094)
λ评估图
图中的黑色曲线表示:不同 λ 下模型的预测误差有多大。
我们希望找到“误差最低”的 λ,就是虚线所在的位置(≈26094)。
• λ 太小:几乎等于 OLS,系数会乱跳 → 误差大
• λ 太大:惩罚太强,模型“缩得太狠” → 误差也大
所以最佳 λ 是误差最低的地方,而不是越大越好或越小越好。
JASP 会自动找到这个“最佳平衡点”。
(3)自变量重要性:面积略高,但两者都重要
下图是特征重要性(Feature Importance)截图
JASP 的“特征重要性”使用的是 Dropout 损失:
把某个变量暂时从模型中移除,看模型误差增加多少。
因此:
- 数值越大 → 说明这个变量越重要
- 两个变量数值接近 → 说明两者作用相似
本例结果:
- area:103,410
- rooms:100,675
两者都非常重要,面积略强一点。
你可以把这个数字理解为:
“如果我把这个变量删掉,模型会变差多少?”
area 和 rooms 被删掉后,模型都会“明显变差”。说明这两个变量对房价预测都很关键。
**(4)回归系数变得稳定,不再乱跳
岭回归给出的系数表如下:
非常合理:
- 面积越大 → 房价越高
- 房间数越多 → 房价越高
- 两者贡献接近,符合现实逻辑
在普通回归(OLS)里,由于面积和房间数高度相关,模型无法判断“到底是谁贡献了多少”,这会导致系数忽大忽小,甚至方向错误。
岭回归的作用,就是把这些“乱跳的”系数稳稳按住。
**(5)预测效果图:点基本落在直线附近
下图:预测性能图(Observed vs Predicted plot)
图中每个点都是一个“真实房价 vs 模型预测房价”的组合。
如果模型预测得好,这些点应该沿着 45° 直线分布。
从图上看,点的分布比较紧凑,没有大幅偏离直线,说明:
岭回归模型的预测效果是不错的。
(6)系数轨迹图:最适合理解 λ 的图(也适合教学)
下图:系数轨迹图(Coefficient Path)
可以看到:
- λ = 0 时(普通回归),系数巨大且不稳定
- 随着 λ 增大,系数逐渐收敛
- 两个变量最终稳定在合理区间
这是理解“为什么岭回归能解决共线性”的最佳图示。
最后,解释一下为什么岭回归更为稳定
因为在共线性存在的情况下,普通回归往往会出现系数过大、方向不稳、预测误差剧烈变化的问题;而从本次结果可以看到:岭回归给出的两个系数(area≈4.49 万、rooms≈4.23 万)数值合理、彼此接近、方向稳定,并且测试集的预测误差(MAPE≈24%)没有出现夸张的波动,说明模型经过“收紧系数”后,对数据的小变化不再敏感,因此比普通回归稳得多。
【八】 一句话总结:岭回归为什么能解决共线性?
✔ 因为它让回归系数 不要太大、不要乱跳
✔ 因此模型变得更稳定、更可靠
✔ 特别适合:变量相关性强的回归模型
一句可以写进论文的表达是:
岭回归通过对系数施加 L2 收缩,使估计量在自变量高度相关时更加稳定,从而有效缓解多重共线性问题。
附录:如果你在论文中遇到共线性,应当如何使用岭回归?(超简明攻略)
为了帮助正在写论文的同学,这里附上一个岭回归在论文中的使用指南。如果你的论文也遇到共线性,可以按下面三种情况选择合适的写法。
① 如果研究重点就是共线性问题
适用场景:
- 你的自变量之间高度相关
- OLS 系数不稳定、符号反复变化
- 样本量较小(如 <50)
建议在“模型选择”部分直接说明:
“由于存在共线性,最终回归方程用岭回归的系数。”
② 如果论文要求以 OLS 为主(岭回归作为稳健性检验)
适用场景:
- OLS 为基准模型
- 想展示“换个方法估计,结果仍然差不多”
建议主结果仍写 OLS,岭回归放在“稳健性检验”章节。写一句解释:
“岭回归后系数方向一致、大小相近,说明 OLS 结果具有稳健性。”
③ 如果样本量非常小(如 <30)或变量很多
适用场景:
- 小样本 + 多变量 → OLS 极易不稳定
- 论文目标是预测或变量选择
建议直接使用岭回归作为主模型,并在方法部分写一句理由:
“为避免小样本导致的系数不稳定问题,采用岭回归进行估计。”