0

我有一个纵向数据,其中包含一些变量:firm id, event date, abnormal return, 其中event date是每家公司的收购公告日期,abnormal return是每家公司在 5 天 (-2,+2) 的窗口内的事件公告回报。在这里,每个样本公司都在预定的时期内进行了多次收购。

例如,我有 200 家公司,每家公司在 1999-2011 年期间都有多个异常收益观察。因此,每家公司在此期间至少有 2 个这样的观察,计算超过 2 个这样的事件日期。

我需要为每家公司的异常收益分配一个排名,以便按照事件日期的顺序对后续交易(在公司首次收购之后)进行排名。因此,我想创建一个新rank变量并将其用于进一步分析公司在第一个异常收益之后的每个后续异常收益的增加/减少。

请建议我如何在 Stata 中执行此操作或使用哪些代码?我试过:

bysort firm_id event_date: egen rank = rank(abnormal_return), 

但我没有得到我想要的。

注意 - a) 在我的样本中,很少有公司在同一事件日期执行超过 1 笔交易(例如 2 笔),因此它们对这 2 笔交易具有完全相同的异常回报;b) 异常收益为正或负,小数点后 6/7 位,例如负异常收益为 -0.0365089;一个正数,0.0416888。

对不起,我已经在 statalist 中发布了这个查询,我应该在帖子中提到,但不知何故急于获得反馈,我错过了它 - 真诚的道歉。

(更新)我终于设法分享了我的 dta 快照的保管箱链接。文件。

https://www.dropbox.com/s/w501upimdgwvzyz/Rank.dta?dl=0

我现在的查询(尚未在 statalist 得到答复,我正在尝试在此基础上进行分析,因此在此处重新发布):

如果我看的是 3 年的窗口,即,我需要根据后续交易是在第一次交易后的 3 年内完成的,对异常收益进行重新排序。例如,我数据中的一家公司。id = 13 的文件分别在 2000 年、2001 年、2005 年和 2006 年有 4 笔交易。第一笔交易是在 2000 年。 2005 年的第三笔收购,距离 2000 年的焦点交易已超过 3 年,因此不应从 2000 年的第一笔交易开始计算或排名,而是将 2005 年列为这家公司的新的第一笔交易,为期 3 年。因此,在这种情况下,我必须将交易按公司 ID、13 排序为 0 (2000)、1(2001);0 (2005), 1 (2006)。

有人可以帮忙在这里重新编码吗?

4

1 回答 1

1

在评论中,您指出您想要的由

sort firm_id event_date 
by firm_id : gen rank = _n 
bysort firm_id event_date : replace rank = rank[1] 

这可以浓缩为

bysort firm_id (event_date): gen rank = _n 
by firm_id event_date: replace rank = rank[1] 
于 2014-12-10T18:33:00.600 回答