微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在一个事件研究中控制同一组的多种治疗?

如何解决有没有办法在一个事件研究中控制同一组的多种治疗?

我们正在研究由于更换公司经理而导致的公司回报变化。到目前为止,我们已经编译了一个数据表,看起来像这样:

公司 经理 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 举报,一经查实,本站将立刻删除。