如何解决有没有办法在一个事件研究中控制同一组的多种治疗?
我们正在研究由于更换公司经理而导致的公司回报变化。到目前为止,我们已经编译了一个数据表,看起来像这样:
公司 | 经理 | 月 | Eventwindow | 返回 |
---|---|---|---|---|
1 | 1 | 2015-05-31 | -3 | 83.1 |
1 | 1 | 2015-06-30 | -2 | 82.5 |
1 | 1 | 2015-07-31 | -1 | 82.7 |
1 | 2 | 2015-08-31 | 0 | 81.4 |
1 | 2 | 2015-09-30 | 1 | 78.0 |
1 | 2 | 2015-10-31 | 2 | 75.2 |
1 | 2 | 2015-11-30 | 3 | 75.1 |
1 | 2 | 2015-12-31 | -3 | 74.3 |
1 | 2 | 2016-01-31 | -2 | 78.2 |
1 | 2 | 2016-02-29 | -1 | 69.4 |
1 | 3 | 2016-03-31 | 0 | 63.1 |
1 | 3 | 2016-04-30 | 1 | 62.3 |
1 | 3 | 2016-05-31 | 2 | 60.5 |
1 | 3 | 2016-06-30 | 3 | 46.7 |
1 | 3 | 2016-07-31 | -3 | 43.9 |
1 | 3 | 2016-08-31 | -2 | 39.2 |
1 | 3 | 2016-09-30 | -1 | 38.4 |
1 | 4 | 2016-10-31 | 0 | 35.6 |
1 | 4 | 2016-11-30 | 1 | 31.8 |
1 | 4 | 2016-12-31 | 2 | 40.0 |
1 | 4 | 2017-01-31 | 3 | 44.1 |
在 this 线程中 Gregor Thomas 和 Wimpel 的大力帮助下,我们使用此代码实现了上述数据表:
DT <- fread("Firm Manager Month Eventdate Change
1 1 2015-05-31
1 1 2015-06-30
1 1 2015-07-31
1 2 2015-08-31 0
1 2 2015-09-30
1 2 (...) "
#add id 列
DT <- DT[,id := .I ]
#set key 加入
setkey(DT,id)
#perform 滚动连接到最近的 Change == 0,获取 id 并减去
DT <- DT[,change2 := id - DT[Eventdate == 0,] [DT,x.id,roll = "nearest"]]
,其中 change2
是具有滚动连接的列。
从第一个表中,您可能会看到我们有多个处理日期,即同一公司在多个时间点 Eventwindow
= 0。因此,当我们绘制回报时,我们有例如83.1、74.9 和 43.9 作为“-3”的观测值,依此类推。
在运行 ggplot 时是否有可能以某种方式将这三种效果彼此分开?到目前为止,我们已经使用以下代码进行绘图,但似乎由于每个事件日期在公司内部和公司之间都有许多“重复”,因此只返回了一条非常平坦的线。使用“facet_wrap = (~Firm)”时,回报差异更大。
frame <- data.frame(DT$change2,DT$Return)
as.numeric(frame$DT.Active_Share)
final <- ggplot(data = frame) +
geom_smooth(mapping = aes(x = DT$change2,y = DT$Return)) +
ylab("Return") +
xlab("Time") +
xlim(-12,12) +
ylim(-100.0000,100.00000) +
ggtitle("Return before and after change")
final
编辑 1: 根据要求,这里有一些可重现的数据:
structure(list(Group_Investment = c("Firm 1","Firm 1","Firm 1"
),ISIN = c("NO123","NO123","NO123"),FundId = c("FS321","FS321","FS321"),SecId = c("FS231","FS231","FS231"
),ManagerName = c("John Doe","John Doe","Don Joe","Don Joe"),change2 = -3:2,Month = structure(c(16586,16616,16647,16678,16708,16739),class = c("IDate","Date")),Return = c(83.10196,80.62931,80.36999,73.73783,75.22196,73.36678),Manager_Status = c("sole_manager","sole_manager","sole_manager")),.internal.selfref = <pointer: 0x000001b14db01ef0>,row.names = c(NA,-6L),class = c("data.table","data.frame"))
欢迎任何帮助,因为我们对 R 的使用还很陌生。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。