全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
4825 6
2017-03-29
悬赏 500 个论坛币 未解决
在算CAR,做的多个事件研究,看连续公告的市场反应。
连老师关于事件研究法的代码如下:
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

其中,td=min(target),但这个应该是单个事件的算法。如果是多事件,我理解应该在td这个步骤改动。我自己理解应该是这样,
1、td=target
2、其余空白值,td后2行还是取这个事件的td值。从第3行开始,取下一个事件的td值。
不知道这个怎么实现?
数据太多,我就没贴,画了一个Excel表
求黄色和绿色部分怎么实现的??


我参考了这个帖子,https://bbs.pinggu.org/thread-4181678-1-1.html
写的这个,
gen td=.
replace td=target if target!=.
sort stkcd date
xtset stkcd date
tsfill
sort stkcd date
bys stkcd: replace td[_n-1]=td if td!=. & td[_n-1]=.
但结果提示“weights not allowed”


求有经验的小伙伴指教,怎么实现这个算法?
或者能直接告知多事件研究的代码,更是感激不尽。
1490763659(1).png

原图尺寸 21.07 KB

1490763659(1).png

二维码

扫码加我 拉你入群

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

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

全部回复
2017-3-30 07:26:26
bys stkcd: replace td=td[_n-1] if  td==.
二维码

扫码加我 拉你入群

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

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

2017-3-30 20:56:18
td=td[_n-1] if  td==. 这么写空白值是等于上一行非空的td值。我需要的是等于下一个非空的td值, 我按照思路这么写了一个, bys stkcd: replace td[_n-1]=td if td[_n-1]==. 然而,提示“weights not allowed” ,求指导~~
二维码

扫码加我 拉你入群

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

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

2017-3-31 00:02:48
sunkingsunking 发表于 2017-3-30 07:26
bys stkcd: replace td=td[_n-1] if  td==.
刚刚又找了半天。试着用gsort 反向排序了下,再td=td[_n-1],代码如下:
gsort -stkcd -date
by stkcd: replace td=td[_n-1] if td==. & td[_n-1]!=.
结果,第二行命令提示我要sort,如果sort了,就回到了原先升序排序的情况,相当于没解决问题。
真是抓狂,求大神帮助!!
二维码

扫码加我 拉你入群

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

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

2017-3-31 15:47:16
jwaway 发表于 2017-3-31 00:02
刚刚又找了半天。试着用gsort 反向排序了下,再td=td[_n-1],代码如下:
gsort -stkcd -date
by stkcd: ...
把数据贴上来
二维码

扫码加我 拉你入群

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

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

2018-11-7 21:49:43
这是属于同一个样本有多个事件日的情况
你应该在前面根据事件公告日重新对样本进行分组
连老师的属于单个样本单个事件的情况
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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