全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1930 5
2021-12-29
比如,我的替代因变量有8个:y1-y8,控制变量都一致,回归命令能否用循环来实现呢?
我尝试了以下的命令,出现错误提示:1 invalid name。global y1
        forvalue i=1/8{
        reghdfe y`i'   x1  cv, ///
                        absorb(year stkcd) vce(cluster firmyear)
         estadd local Year   "Yes"   
         estadd local Industry "No"
         estadd local Firm "Yes"
         est store m`i'
        }

我对循环的理解还不是很深,也想不懂哪里出问题了。
想请问各位大佬,能否有实现的办法呀?

注:上面命令中,"y" "x"和"cv" 前都有个global宏符号$,但不知道为什么论坛页面会消掉宏符号,所以我展示的命令中就没有加宏标记了。

二维码

扫码加我 拉你入群

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

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

全部回复
2021-12-30 20:01:46
xtshine 发表于 2021-12-29 23:03
比如,我的替代因变量有8个:y1-y8,控制变量都一致,回归命令能否用循环来实现呢?
我尝试了以下的命令, ...
去掉$试试?
二维码

扫码加我 拉你入群

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

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

2021-12-31 11:32:43
一个一个回归吧
二维码

扫码加我 拉你入群

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

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

2022-1-1 20:01:32
已经解决啦,原因可能是循环只针对局部宏而非全部宏。
global y "y1 y2……y8"
local ys $y
foreach i of local ys{
  reghdfe `i'   x1  cv, ……
  est store `i'
}
就可以了。

因为我是把多个因变量放global里,统一放在命令前部方便修改,试了一下发现全局宏可以再赋给局部宏,这样真的好方便。也可以直接把y们赋给local:
local ys  "y1 y2……y8"
foreach i of local ys{

}
二维码

扫码加我 拉你入群

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

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

2022-1-3 23:09:57
提供一个简单的思路

qui foreach v of var y1-y8 {
    reg `v' x1 x2 x3
    est store m_`v'
}
local models "m_*"
esttab `models', star(* 0.1 ** 0.05 *** 0.01) b(%6.3f) se(%6.3f)
二维码

扫码加我 拉你入群

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

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

2022-1-7 13:36:32
gongshundaren 发表于 2022-1-3 23:09
提供一个简单的思路

qui foreach v of var y1-y8 {
您为model名称利用通配符设宏的方法我没有想到,这种方式太妙了!感谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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