楼主: 半残玩具
1136 0

[编程问题求助] STATA 事件研究法 编程求查错 [推广有奖]

  • 1关注
  • 0粉丝

大专生

81%

还不是VIP/贵宾

-

威望
0
论坛币
431 个
通用积分
1.0000
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
1532 点
帖子
25
精华
0
在线时间
76 小时
注册时间
2013-10-26
最后登录
2023-10-8

2论坛币
我的样本量是41 但去处掉股票停牌的日期后 同一股票id下有重复的事件期 样本展示如下
QQ截图20160417175828.png
但是我按照以下的stata程序跑出的结果最后却只有6个样本 有没有大神可以告诉我程序哪有问题
————————————————————————————————————————————————————————
use eventdates,clear
sort company_id event_id
by company_id event_id: gen eventcount=_N
by company_id event_id: keep if _n==1
keep company_id event_id eventcount
save eventcount
use stockdata, clear
sort company_id
merge company_id using eventcount
tab _merge
keep if _merge==3
drop _merge
expand eventcount
drop eventcount
sort company_id event_id date
by company_id event_id date: gen set=_n
sort company_id event_id set
save stockdata2
use eventdates, clear
sort company_id event_id
by  company_id event_id: gen set=_n
sort company_id event_id set
save eventdates2
use stockdata2, clear
merge company_id event_id set using eventdates2
tab _merge
list event_id if _merge==2
keep if _merge==3
drop _merge
egen group_id = group(company_id event_id set)
sort company_id event_id date
by company_id event_id: gen datenum=_n
by company_id event_id: gen target=datenum if date==event_date
egen td=min(target), by(company_id event_id)
drop target
gen dif=datenum-td
by company_id event_id: gen event_window=1 if dif>=-2 & dif<=2
egen count_event_obs=count(event_window), by(company_id event_id)
by company_id event_id: gen estimation_window=1 if dif<-30 & dif>=-60
egen count_est_obs=count(estimation_window), by(company_id event_id)
replace event_window=0 if event_window==.
replace estimation_window=0 if estimation_window==.
tab company_id event_id if count_event_obs<5
tab company_id event_id if count_est_obs<30
drop if count_event_obs < 5
drop if count_est_obs < 30
gen predicted_return=.
egen id=group(company_id event_id)
qui tabulate id
local N = r(r)
forvalues i=1(1)`N' {
qui 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
}
sort id date
gen abnormal_return=ret-predicted_return if event_window==1
by id: egen cumulative_abnormal_return = sum(abnormal_return)
sort id date
by id: egen ar_sd = sd(abnormal_return)
gen test =(1/sqrt(5)) * ( cumulative_abnormal_return /ar_sd)
list event_id cumulative_abnormal_return test if dif==0
outsheet event_id company_id event_date cumulative_abnormal_return test using stats.csv if dif==0, comma name
reg cumulative_abnormal_return if dif==0, robust

关键词:Stata 事件研究法 事件研究 tata 研究法 程序 样本
您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 13:41