Stata:Lasso必备速查手册

学术   2024-12-13 23:20   陕西  


Stata:Lasso必备速查手册

来源:Lasso for prediction and model selection | Stata


我们面临着越来越多的数据,通常包含许多描述不清或理解不足的变量。我们甚至可以拥有比数据更多的变量。当应用于此类数据时,经典技术会失效。

套索旨在筛选此类数据并提取特征 具有预测结果的能力。

Stata 为您提供了使用套索进行预测和表征的工具 数据中的组和模式(模型选择)。使用套索本身 选择包含有关响应的真实信息的变量 变量。使用分割抽样和拟合优度来确保 在训练 (估计) 样本之外进行泛化。

使用 lasso 命令,您可以指定可能的协变量 ,它会选择要显示在模型中的协变量。拟合的模型适用于进行样本外预测,但不直接适用于统计推断。

有很多 lasso 命令。以下是最重要的 进行预测。

您有一个结果 *y* 和变量 x1-x1000。其中可能有一个子集适合 预测 ***Y***。Lasso 试图找到他们。类型

. lasso linear y x1-x1000

要查看所选变量,请键入

. lassocoef

要使用新数据进行预测,请键入

. use newdata
. predict yhat 

要查看新数据中的拟合,请键入

. lassogof

Lasso 也适合 logit、probit、Poisson 和 Cox 比例风险模型。

. lasso logit z x1-x1000
. lasso probit z x1-x1000
. lasso poisson c x1-x1000
. lasso cox x1-x1000

它适合弹性网模型。

. elasticnet linear y x1-x1000
. elasticnet logit z x1-x1000
. elasticnet probit z x1-x1000
. elasticnet poisson c x1-x1000
. elasticnet cox x1-x1000

因为岭回归是弹性网的一种特例,所以它适合 岭回归也是如此。

平方根Lasso是线性模型的套索的变体。

. sqrtlasso y x1-x1000

您可以强制选择变量,例如 ***x1-x4***。

. lasso linear y (x1-x4) x5-x1000

运行Lasso后,您可以使用 postlasso 命令。

. lassoknots                 table of estimated models by lambda
. lassocoef                  selected variables
. lassogof                   goodness of fit
. lassoselect lambda = 0.1   select model for another lambda
. coefpath                   plot coefficient path
. cvplot                     plot cross-validation function

然后,有一些功能可以更轻松地完成上述所有操作。需要将数据拆分为训练和测试样本?类型

. splitsample, generate(sample) nsplit(2)

需要管理大型变量列表?是吗。我们在上面键入了 ***x1-x1000***, 但是你的变量将具有真实名称,你不想全部键入它们。使用 vl 命令创建变量列表:

. vl set                    // creates vlcontinuous, vlcategorical, ...
. vl create myconts       = vlcontinuous
. vl modify myconts       = myconts - (kl srh srd polyt)
. vl create myfactors     = vlcategorical
. vl substitute myvarlist = i.myfactors myconts i.myfactors#c.myconts

# 符号创建交互。

我们刚刚创建了 myvarlist,它可以在Lasso中使用 命令,例如

. lasso linear y $myvarlist

Stata案例应用

我们将向您展示三个示例。

  1. 通过交叉验证选择的 λ 的套索。
  2. 相同的Lasso,但我们选择 λ 来最小化 BIC。
  3. 相同的Lasso,由 adaptive lasso 拟合。

然后我们要比较它们。

而不是键入

. lasso linear q104 (i.gender i.q3 i.q4 i.q5) i.q2 i.q6 i.q7 i.q8 i.q9
     i.q10 i.q11 i.q13 i.q14 i.q16 i.q17 i.q19 i.q25 i.q26 i.q29
     i.q30 i.q32 i.q33 i.q34 i.q36 i.q37 i.q38 i.q40 i.q41 i.q42
     i.q43 i.q44 i.q46 i.q47 i.q48 i.q49 i.q50 i.q51 i.q55 i.q56
     i.q57 i.q58 i.q59 i.q61 i.q64 i.q65 i.q67 i.q68 i.q69 i.q71
     i.q72 i.q73 i.q74 i.q75 i.q77 i.q78 i.q79 i.q82 i.q83 i.q84
     i.q85 i.q86 i.q88 i.q89 i.q90 i.q91 i.q94 i.q95 i.q96 i.q97
     i.q98 i.q100 i.q101 i.q102 i.q105 i.q108 i.q109 i.q110 i.q113
     i.q114 i.q115 i.q116 i.q117 i.q118 i.q122 i.q123 i.q125 i.q126
     i.q128 i.q130 i.q133 i.q134 i.q136 i.q137 i.q138 i.q140 i.q142
     i.q143 i.q144 i.q145 i.q146 i.q147 i.q148 i.q149 i.q150 i.q151
     i.q152 i.q153 i.q154 i.q155 i.q156 i.q158 i.q159 i.q160 i.q161
     age q1 q15 q18 q20 q21 q22 q24 q31 q35 q45 q52 q53 q62 q63 q70
     q76 q87 q93 q103 q111 q112 q120 q121 q129 q131 q132 q139 q157

我们在后台使用了 VL,因此我们可以输入

. lasso linear q104 ($idemographics$ifactors $vlcontinuous

因此,我们可以比较 三个模型,我们已经输入

. splitsample, generate(sample) nsplit(2) rseed(1234)

我们将在 sample==1 上拟合所有三个模型,然后进行比较 使用 sample==2 的预测。

示例 1:通过交叉验证选择的 λ 的套索

使套索适合默认的交叉验证选择 方法,我们键入

lasso linear q104 ($idemographics$ifactors $vlcontinuous if sample == 1

Lambda (λ) 是 Lasso 的惩罚参数。Lasso 拟合了一系列模型,从没有协变量的模型到有很多协变量的模型,对应于大 λ 的模型到小 λ 的模型。

然后 Lasso 选择了一个模型。因为我们没有特别指定,它使用了默认的交叉验证 (CV) 来选择模型 ID=19,它有 λ=0.171。该模型有 49 个协变量。

交叉验证选择了最小化交叉验证函数的模型。这是它的图表。

. cvplot

我们计划将此模型与其他两个模型进行比较,因此我们将 存储这些估计值。我们将它们存储在 cv 的名称下。

. estimates store cv

示例 2:相同的套索,但我们选择 λ 以最小化 BIC

我们可以在拟合 Lasso 之后选择任何我们希望的 λ 对应的模型。选择具有最小贝叶斯信息准则(BIC)的 λ 在某些条件下可以提供良好的预测。

要拟合一个最小 BIC 的 Lasso,我们使用相同的命令并指定额外的选项 selection(bic):

. lasso linear q104 ($idemographics$ifactors $vlcontinuous
     if sample == 1, selection(bic)

我们可以绘制 BIC 函数图:

. bicplot

我们将通过 minBIC 存储这些结果。

. estimates store minBIC

例 3.相同的套索,由自适应套索拟合

自适应套索是另一种倾向于选择 较少的协变量。它还使用交叉验证,但运行多个 套索。默认情况下,它运行 2 个。

为了运行自适应套索,我们使用相同的命令并指定 附加选项selection(adaptive)::

 lasso linear q104 ($idemographics$ifactors $vlcontinuous
     if sample == 1, selection(adaptive)

自适应套索选择了具有 46 个协变量的模型,而不是  由普通套索选择的49个。

我们将这些结果存储为 adaptive

. estimates store adaptive

结果比较

我们有三组结果。

cv 包含由 CV 选择的模型。

minBIC 包含我们选择的模型,该模型对应于 最小 BIC。

adaptive 包含由 adaptive lasso 选择的模型。

首先,我们来比较每个选定的变量。lassocoef 命令可以做到这一点。我们指定 sort(coef, standardized) 以便首先列出具有最大绝对值系数的变量。


从头开始往下看,你会看到所有三种方法都选择了表中列出的前23个变量,这些变量具有最大的系数。

哪个模型产生的最佳预测?让我们进行样本外预测来找出答案。我们从一开始就将数据分成两个样本,正是为了这个目的。我们在样本1上拟合模型。我们可以比较样本2的预测。

lassogof 命令报告拟合优度统计量。我们指定 postselection 选项,以便比较基于选定后系数的预测,而不是基于惩罚系数的预测。我们指定 over(sample) 选项,以便 lassogof 分别为每个样本单独计算拟合统计量。

 lassogof cv minBIC adaptive, over(sample) postselection

我们比较了样本 2 的 MSE 和 R 平方。minBIC 在这两个指标上都表现最好。

数量经济学
见证计量经济学发展,更懂计量更懂你!
 最新文章