楼主: 939718803
1124 1

[回归分析求助] STATA中LASSO回归如何导出指定拟合结果? [推广有奖]

  • 0关注
  • 0粉丝

初中生

76%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
0.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
163 点
帖子
2
精华
0
在线时间
39 小时
注册时间
2021-11-23
最后登录
2024-4-12

楼主
939718803 发表于 2021-11-23 22:08:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
场景:使用Adaptive LASSO来跟踪股票指数,目标是用不超过30只股票跟踪沪深300
问题:STATA 17中输出的结果为最优拟合结果,包含了60多只股票,请问各位大佬如何才能够导出非零系数数目(no. nonzero coef.)为29处的拟合结果呢? 变量筛选步骤 微信图片_20211123220606.png
二维码

扫码加我 拉你入群

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

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

关键词:Stata LASSO tata Adaptive Adaptiv

沙发
赵安豆 发表于 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学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-7 19:20