- qui tabulate id
- local N=r(r)
- forvalues i=1/`N'{
- reg A B C D if (id==`i' & estimation_window==1)
- predict p if id==`i'
- replace predicted_return =p if (id==`i' & event_window==1)
- drop p
- }
复制代码
1. 你原来的命令里面,“l id group_id if id=='i' & dif==0” 这一句,你没有group_id这个变量,我不知道你做这一步是要干嘛,而且貌似你做不做这一步都不影响后面,所以我删掉了;2. `N'和`i'才是调用局部宏的正确写法,不是'N' 或者'i',请仔细看左边那个符号的写法,如果不清楚,请看stata的基础书。
3. “
replace predicted_return =p if (id='i'&event_window==1)”
, 这是你原来的写法,if 后面是逻辑判断,所以你需要用“==”而不是“=”;
另外,我觉得你需要仔细看看什么是local 宏,怎么调用local宏,以及怎样写一个循环,这些都是最基础的,如果你没弄清楚,你永远弄不懂要怎样解决类似的问题。
我没看过事件分析法以及相关的文献,因为我自己的领域不是这一块儿,但你的问题在于stata基础语法格式就不正确。我觉得在实证之前,对于软件也许你不需要去学习模型数理方面的东西,但是一些基础的语法一定要扎实,否则自己根据别人的do文件修改后,如果执行错误,你都不知道错在哪里。