全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1055 1
2021-11-23
场景:使用Adaptive LASSO来跟踪股票指数,目标是用不超过30只股票跟踪沪深300
问题:STATA 17中输出的结果为最优拟合结果,包含了60多只股票,请问各位大佬如何才能够导出非零系数数目(no. nonzero coef.)为29处的拟合结果呢? 变量筛选步骤 微信图片_20211123220606.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2024-9-25 14:40:14
在Stata中使用LASSO回归时,尤其是Adaptive LASSO,你可能会想要探索不同惩罚程度下的模型。但是,直接从命令行输出指定数量非零系数的模型可能不是那么直观。以下是一种方法,可以通过调整惩罚参数`lambda`来获得具有特定数量变量(本例中为29)的拟合结果。

1. **运行LASSO回归并保存Lambda路径**

   首先,使用`lasso`命令并指定`logit`或`linear`等选项(取决于你的数据类型),同时使用`lambda(path)`子命令来生成完整的惩罚参数序列。例如:

   ```stata
   lasso linear y x1-x50, vce(robust) lambda(path)
   ```

2. **保存Lambda路径**

   执行完上述步骤后,`lassologit`或`lasso`命令将产生一个包含所有惩罚水平的lambda路径。你可以使用`estimates store`来保存这个结果。

3. **选择合适的Lambda值**

   为了找到具有特定数量非零系数(本例中为29)的最佳模型,需要检查不同`lambda`下的系数情况。可以通过以下命令查看`lambda`路径上的变量选择:

   ```stata
   lasso show
   ```

   然后,手动或编写一个循环来找到第一个具有30个非零系数的`lambda`值。

4. **使用选中的Lambda重新拟合模型**

   找到合适的`lambda`值后,你可以使用`lasso select`命令加上你选择的`lambda`值来重新拟合模型:

   ```stata
   lasso select, lambda(#)      /* 将#替换为找到的具体lambda值 */
   ```

5. **保存结果**

   一旦得到所需数量变量的结果,你可以使用`estimates store`和`estout`等命令将此特定模型的系数和其他统计信息导出到文件或显示在控制台上。

请注意,在Stata中直接选择特定非零系数的数量可能需要一些手动调整。你可能需要多次运行步骤3,并仔细观察每个`lambda`值下的变量数量,以找到最接近你的目标(本例为29)的模型。
   
希望这能帮助你达到目的!如果还有具体问题或需要更详细的指导,请随时提问。

最后,为了自动化这个过程,你也可以编写一个Stata程序来循环遍历所有`lambda`值,并自动选择符合条件的那个。这样的脚本会更加高效和精确。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群