全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
9970 9
2015-04-18
如题,事件研究法,如果一个公司有多个事件日,该如何写stata程序呢?
对于一个公司只有一个事件日的程序,参考连玉君老师的课件可以如下,如何在此基础上修改呢?

sort companyid date
by companyid: gen datenum = _n
by companyid: gen target = datenum if date==eventdate
egen td = min(target), by(companyid)
gen dif = datenum-td

by companyid: gen event_window=1 if (dif>=-1 & dif<=1)
egen count_event_obs = count(event_window), by(companyid)

by companyid: gen estimation_window=1 if dif<=-2 & dif>=-180
egen count_est_obs=count(estimation_window), by(companyid)

drop if count_event_obs < 3
drop if count_est_obs < 178

replace event_window=0 if event_window==.
replace estimation_window=0 if estimation_window==.


gen predicted_return=.
egen id=group(companyid)
qui tabulate id
local N = r(r)
forvalues i=1(1)`N' {
qui reg ret marketreturn if (id==`i' & estimation_window==1)
predict p if id==`i'
replace predicted_return = p if (id==`i' & event_window==1)
drop p
}

gen abnormal_return = ret - predicted_return if event_window==1
sort id date
by id: egen CAR_id = sum(abnormal_return)

gen CAR_date = .
qui tab id
local N = r(r)
forvalues id = 1(1)`N'{
replace CAR_date = sum(abnormal_return) if (id==`id' & event_window==1)
}

二维码

扫码加我 拉你入群

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

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

全部回复
2016-10-20 16:45:01
你好,请问你解决这个问题了吗?如果解决哪能教我吗,又重谢!
二维码

扫码加我 拉你入群

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

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

2016-11-30 22:51:26
egen td = min(target), by(companyid) 应该就是对这部分修改 有没大神可以回答?
二维码

扫码加我 拉你入群

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

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

2016-12-9 19:41:16
连玉君老师的课件在哪,求~
二维码

扫码加我 拉你入群

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

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

2017-4-9 20:15:36
遇上了同样的问题 请问您最后解决了吗?
二维码

扫码加我 拉你入群

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

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

2017-6-5 20:14:56
同问!多个事件日stata默认第一个事件日,该怎么解决
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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