全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1157 1
2020-04-10
悬赏 5 个论坛币 未解决
以下是我的命令的关键部分
by company_id: gen event_window=1 if dif>=-2 & dif<=2
egen count_event_obs=count(event_window), by(company_id)
by company_id: gen estimation_window=1 if dif<-30 & dif>=-60
egen count_est_obs=count(estimation_window), by(company_id)
replace event_window=0 if event_window==.
replace estimation_window=0 if estimation_window==.
tab company_id if count_event_obs<5
tab company_id if count_est_obs<30

删掉了一些观测值不够的样本
drop if count_event_obs < 5
drop if count_est_obs < 30

drop count_event_obs
drop count_est_obs

set more off

gen predicted_return=.
egen id=group(group_id)  
forvalues i=1/118{
        list id company_id if id==`i' & dif==0
        reg ret market_return if id==`i' & estimation_window==1  
        predict p if id==`i'
        replace predicted_return = p if id==`i' & event_window==1
        drop p
}

问题1:执行到这条以后显示no observations,问题可能出在哪里?
问题2:我的研究样本一共118个,前面删掉了观察值不够的样本23个,理应还有95个,但最后输出excel表中只有60多个样本是怎么回事呢?
二维码

扫码加我 拉你入群

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

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

全部回复
2021-5-6 14:37:50
A1显示no observation,如果是显示未全删除,就会是前面事件窗口、正常收益定义的问题,类似于空格或小数点的问题,然后需要重新检查从第一步开始的数据处理是否有问题。
A2 forvalues循环语句应该是i=1(1)118,括号前是初始值,括号后是终值,括号内是差值。
(可供参考,希望能够解决)
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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