回归分析第15讲:LASSO 回归---自动帮你选变量的现代方法
【一】为什么我们需要 LASSO?
在回归分析中,有两个经典难题:
① 自变量高度相关时 → OLS 系数乱跳、模型不稳
② 逐步回归看似方便,但极不可靠
上一讲的岭回归(Ridge),则告诉我们:
-
它能“稳住系数”,解决共线性
-
但它不会删除变量
-
所有变量都保留 → 模型变得不够简洁
此时就出现一个新的问题:
既想让模型稳一点,又想自动筛选出“最重要的变量”,怎么办?
所以今天我们介绍一个真正能同时解决稳定性 + 变量选择两大问题的方法:
🌟 LASSO 回归(L1 正则化)
👉 它能自动选变量、还能稳定估计
可以这么说:
LASSO = 岭回归的“稳定性” + 逐步回归的“变量选择”,但比它俩都更可靠
【二】LASSO 回归主要解决什么问题?
LASSO 回归是现代统计、机器学习里最常用的变量筛选工具。 全称是:
Least Absolute Shrinkage and Selection Operator
LASSO主要解决以下问题:
(1)变量太多,不知道该留谁?(自动变量选择)
LASSO 会:
- 留下重要变量
- 把不重要变量的系数压缩到零
- 只保留“最能解释 Y 的那几个变量”
(2)共线性严重(高度相关的变量)
与岭回归一样,LASSO 也能稳定模型,但比 Ridge 更“果断”:
- 会从高度相关的变量中“选一个活下来”
(例如:面积 & 房间数 → 只保留一个)
(3)小样本 + 多变量(论文中最常见)
样本只有几十个,但变量十几个时,OLS 会完全失效。
LASSO 在这种情况下最实用:小样本,多变量。
(4)模型可解释性要求高(经济学论文常见的需求)
- OLS:留下所有变量
- Ridge:缩小系数但不删除变量
- LASSO:删除不重要变量 → 模型更简洁、更可读
非常符合经济学、管理学、医学论文的写作习惯。
【三】公式怎么理解?
这里用简单的公式来解释:
✔ OLS:系数 = “协方差 ÷ 方差”
✔ LASSO:系数 = “协方差 ÷ 方差 + 惩罚”,并且可能被压缩到 0
更直观解释:
✔ OLS 的思想是:
“数据给多大系数,我就给多大。”
✔ LASSO 的思想是:
“系数太大不行,我要往 0 拉。”
一旦惩罚项(λ)足够大,某些系数就会被直接压成 0 —— 变量被删除。
【四】案例:EViews 和 JASP 逐步回归的对比
本案例来自:《EViews在数据分析中的应用》(何晓琦,清华大学出版社)
1999-2019年中国农业产出的相关数据,其中:y是农林牧渔业总产值(亿元),x1是乡村就业人员(万人),x2是有效灌溉面积(千公顷),x3是农药使用量(万吨),x4是农用柴油使用量(吨),x5农业机构总动力(万千瓦),x6是农村用电量(亿千瓦小时),x7是农用化肥施用折纯量(万吨)。对变量运用最小二乘法进行拟合,检验自变量是否存在多重共线性,并通过逐步回归法消除多重共线性。
很显然:以上这些变量高度相关 → 天然存在多重共线性。
这是逐步回归最容易“翻车”的情境。
我们分别在EViews 和 JASP 中对案例数据进行逐步回归的操作,得到不同的结果。
下图是EViews中逐步回归的结果:
下面是JASP得到的逐步回归结果:
我们总结上面两个图的结果如下:
| 软件 | 最终变量 | 结果说明 |
|---|---|---|
| EViews | X1、X3、X5 | 喜欢“纳入更多显著变量” |
| JASP | X3、X6 | 偏向简约模型 |
可以发现:
👉 同样的数据:EViews 的逐步回归 vs JASP 的逐步回归 → 结果不同。
说明了什么?说明:
- **逐步回归是极其不稳定、不一致、不可靠的方法。 **
- 不同软件、不同算法、不同默认设定,都会导致不同的选变量结果。
核心原因:逐步回归依赖软件设置,根本不是科学方法
所以同一份数据会出现:
- SPSS 选一套变量
- EViews 选另一套变量
- JASP 又选另一套
- Stata/ SAS/ R 又可能选不一样的
这也是国际统计界为什么强烈反对逐步回归的原因之一:
Stepwise is not reproducible.(不可复现)
真实世界的科研要求结果可复现,但逐步回归无法满足这一点。
- 逐步回归不是“科学选变量”,而是“基于显著性的随机筛选”。
- 数据换一点点,选出的变量就会完全不同。
- 因此它不适合作为论文的核心方法。
【五】 案例:如何用 JASP 做 LASSO?
本文案例中,自变量高度相关,样本量少(21个),是 LASSO 最能展示威力的场景。我们继续用 JASP 做,非常直观,容易演示。
✔ 菜单路径:
机器学习 → 回归 → 正则化线性
在“惩罚类型”里选择:
- LASSO回归
下面是对输出结果的简略解释:
1. 模型概要:正则化线性回归(L1)
① LASSO 自动找到了一个最合适的 λ(266.4)
λ 越大,惩罚越强,越容易把不重要的变量“压缩为 0”;
λ 太小,又起不到变量选择作用。
JASP 使用“交叉验证”自动找到一个能让验证误差最小的 λ = 266.4。
👉 这表示模型在“拟合能力”和“简洁性”之间取得了 最优平衡。
② 数据自动分成训练集、验证集、测试集(13 / 4 / 4)
- 训练集(13):用来估计模型
- 验证集(4):用来挑选 λ
- 测试集(4):用来检验最终模型的预测效果
这比逐步回归科学得多,因为逐步回归只用了一组数据,可能会造成过拟合。
③ 验证 MSE 与测试 MSE 都在合理范围
- 验证 MSE:3.919×10⁶
- 测试 MSE:4.325×10⁶
说明模型没有“在训练集表现很好,但在测试集崩掉” 的情况。
👉 预测表现稳定,没有过拟合的迹象。
2. 回归方程:哪些变量被“保留”,哪些被“删掉”?
从上面的截图看,结果非常直观:
| 变量 | 结果含义 |
|---|---|
| x1(乡村就业人员) | 系数为 -19877.65,被保留 |
| x3(农药使用量) | 系数为 8401.377,被保留 |
| x5(农业机械总动力) | 系数为 5941.668,被保留 |
| x2, x4, x6, x7 | 被压缩为 0,完全删除 |
👉 这就是 LASSO 的核心价值:
在共线性严重的情况下自动“做变量选择”,保留最重要的变量,把不重要的变量压成 0
3. 回归系数表:哪个变量“真正重要”?
从上图可以看到, LASSO 结果中,只剩 3 个变量有贡献:
| 变量 | 系数 β | 解读 |
|---|---|---|
| x1 | -19877.650 | 农业就业人数越多,总产值倾向下降(结构性解释,但结果稳定) |
| x3 | 8401.377 | 农药使用量增加,产值上升(符合农业技术强化逻辑) |
| x5 | 5941.668 | 农机动力越大 → 产出越高(高度合理) |
| x2, x4, x6, x7 | 0.000 | 说明这些变量对产值的独立贡献度“不够大”,或与其他变量高度相关,被 LASSO 删除 |
【六】本文结论
✔ 逐步回归不稳定、不一致、不适合科研。
✔ LASSO 稳定、可复现、能解决共线性、还能自动选变量。
✔ 在小样本 + 多自变量 + 强共线性场景下,LASSO 是最佳选择。
【七】 LASSO 的结果该怎么写进论文?
在写论文时,针对LASSO的不同情况,我们可以使用以下几种模板:
✔ 当做主模型
“由于自变量数量较多,且存在一定程度的多重共线性,本文采用 LASSO 回归以执行变量选择并获得稳健的估计结果。”
✔ 当做稳健性检验
“为验证主回归模型的稳健性,本文进一步使用 LASSO 回归进行变量选择。结果显示,LASSO 保留了与理论一致的关键变量,说明主回归结果具有稳健性。”
✔ 当做变量筛选工具
“基于 LASSO 的变量选择结果,本文将系数收缩为零的变量剔除,并依据剩余变量构建最终回归模型。”