Stata:拉索回归和岭回归-(Ridge,-Lasso)-简介

发布时间:2020-10-10 阅读 41

Stata 连享会   主页 || 视频 || 推文

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

课程详情 https://gitee.com/arlionn/Course   |   lianxh.cn

课程主页 https://gitee.com/arlionn/Course

作者: 王瀚洋 (北京大学)
邮箱: wanghy67@pku.edu.cn


目录


「不显著」是很多跑回归的人的痛处,但有时不显著并非是故事本身的原因,而是多重共线性导致的。多元分析中,当两个或更多的变量出现相关的时候,就有可能出现多重共线性问题。一般的多重共线性并不影响估计,但高度的共线性会使估计的方差膨胀,t 值缩水,导致统计推断失效。

本文介绍了两种经典的筛选变量、应对多重共线性的参数方法,「Ridge 回归」和「Lasso 回归」。

1. Ridge回归

Ridge 回归 (Hoerl and Kennard, 1970) 的原理和 OLS 估计类似,但是对系数的大小设置了惩罚项。具体来说,

其中,t 代表惩罚的力度,t 越大,对系数的大小惩罚越重,约束越紧。取系数的平方和形式可以避免正负系数相抵消的情况。在矩阵形式中,Z 按照传统是标准化之后的(均值为 0,方差为 1),y 也需要中心化。不难证明,这个优化问题的解是:

显然,λ 是这个问题的调整参数,当 λ 趋于 0 的时候,就退化为一般的 OLS 估计。当 λ 趋于正无穷的时候, 则是纯截距回归。实践中,可以通过交叉验证(cross validation)的方法来选择调整参数 λ 。在 Stata 命令中,可以通过命令 rxridge 来实现 Ridge 回归。命令基本格式是:

rxridge  y X_1 X_2 X_3 [if exp] [in range]  ///
        [, msteps(#) qshape(#) rescale(#) tol(#) ] 

具体说明如下:

  • msteps 代表共线性容忍参数每增加一单位所带来的步数变化
  • qshape 控制了沿似似然空间收缩的形状
  • rescale 是调整方差的参数,比如 rescale(1) 就是让所有中心化变量方差都为 1 ,rescale(0) 就是让所有变量都保持原来的方差
  • tol(#) 用于设定收敛判据

2. Lasso 回归

Lasso 也是对系数的大小设置了惩罚项,但惩罚项引入的方式略不同,具体来说,

等价地,我们可以用以下损失函数来表示:

仍然,λ 是这个问题的调整参数,不过一般情况下我们无法得到 β 的显示解。但是,当数据矩阵中各变量都相互正交且模为 1 时,我们可以得到 Lasso 的显示解。在 Lasso 中,可以看到,惩罚项由平方换成了绝对值。虽然绝对值是凸函数,函数在 0 点有唯一的最小值,但其在此点不可导。当某项的惩罚系数足够大时,那么它将无法进入模型(变量选择),只有那些回归系数非0的变量才会被选入模型。

在 Stata 中,我们可以安装 lassopack 命令来实现 Lasso 回归,Lassopack 包含三个与 Lasso 相关的子命令(输入 help lassopack 可以查看详情):

  • 子命令 lasso2 可进行 Lasso 估计;
  • 子命令 cvlasso 可进行 K 折交叉验证(k-fold cross validation);
  • 子命令 rlasso 可以估计惩罚项由数据决定或者高维情形(变量维度超过样本数)。

3. 演示数据集

下面我们用一个糖尿病数据集(Efron et al., 2004)来演示 Ridge 回归和 Lasso 回归, 这个数据集包括血液化验等指标(Source: http://CRAN.R-project.org/package=lars)。除了被解释变量 y 之外,还有 X 和 X2 两组变量,前者是标准化后的,为 442x10 维矩阵,后者包括前者及一些交互作用,为 442x64 维矩阵,我们考虑 y 和 X2 。在导入数据后,我们先进行 Ridge 回归。输入命令

rxridge  y x2*, q(-1)

就可以得到 Ridge 回归的结果,估计的 sigma 为 0.690,最后迭代出的 MCAL 为 63,Summed SMSE 为 104.37。

Ridge Regression with Efron et al.(2004) dataset
Ridge Regression with Efron et al.(2004) dataset

然后我们考虑 Lasso 回归。输入如下命令可以进行 Lasso 估计,最后一个选项代表显示整个解的路径:

lasso2  y x2* , plotpath(lambda)

下表显示随着调整参数λ由大变小,越来越多的变量进入模型,比如 λ=3.992e+04 时,常数项首先进入模型。 Model specification with tuning parameter

下图为整个解的路径(作为 λ 的函数),画出了不同变量回归系数的变化过程。其中,当 λ=0 时(下图最左边),不存在惩罚项,故此时 Lasso 等价于OLS。而当 λ 很大时(下图最右边),由于惩罚力度过大,所有变量系数均归于 0 。这里,由于变量非常多,整个图颇有野兽派风格:

Solution path to Lasso Regression
Solution path to Lasso Regression

紧接着,我们使用 K 折交叉验证的方法来选择最佳的调整参数。所谓的 K 折交叉验证,是说将样本数据随机分为 K 个等分。将第 1 个子样本作为 “验证集”(validation set)而保留不用,而使用其余 K-1 个子样本作为 “训练集”(training set)来估计此模型,再以此预测第 1 个子样本,并计算第1个子样本的 “均方预测误差”(Mean Squared Prediction Error)。其次,将第 2 个子样本作为验证集,而使用其余 K-1 个子样本作为训练集来预测第2个子样本,并计算第 2 个子样本的 MSPE。以此类推,将所有子样本的 MSPE 加总,即可得整个样本的 MSPE。最后,选择调整参数 ,使得整个样本的 MSPE 最小,故具有最佳的预测能力。我们输入命令

cvlasso  y x2*, lopt seed(123)

其中,选择项 “lopt” 表示选择使 MSPE 最小的 λ,选择项 “seed(123)” 表示将随机数种子设为 123(可自行设定),以便结果具有可重复性;默认 K=10(即 10 折交叉验证)。

Cross Validation, K=10
Cross Validation, K=10

打星号处的 λ=2688.3717,这是使 MSPE 最小的调整参数,与此对应的估计结果如下图所示:

Model selected with Lasso Regression
Model selected with Lasso Regression

上表右边第 1 列即为 Lasso 所估计的变量系数。其中,除常数项外,只有 14 个变量的系数为非零,而其余变量(未出现在表中)的系数则为 0。考虑到作为收缩估计量的 Lasso 存在偏差(bias),上表右边第 2 列汇报了 “Post Lasso” 估计量的结果,即仅使用 Lasso 进行变量筛选,然后扔掉 Lasso 的回归系数,再对筛选出来的变量进行 OLS 回归。

通过以上的介绍,我们已经掌握了如何使用 Stata 进行 Ridge 回归和 Lasso 回归,这是经典的解决高度共线性、筛选变量的方法。但是,近年来非常火热的机器学习方法,在解决高度共线性、筛选变量方面,有更好的表现,期待看到更多的关于机器学习方法的 Stata 命令。

4. Stata 相关命令

这些都是外部命令,可以使用 findit cmdname 搜索后下载,亦可直接使用 ssc install cmdname, replace 直接下载,详情参见 「Stata: 外部命令的搜索、安装与使用」

  • help ridgereg // module to compute Ridge Regression Models
  • help elasticregress //perform elastic net regression, lasso regression, ridge regression, 作者自己的评价
  • help ridge2sls // Two-Stage Least Squares (2SLS) Ridge & Weighted Regression
  • help lassopack //module for lasso, square-root lasso, elastic net, ridge, adaptive lasso estimation and cross-validation

5. 相关链接

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD