r - 使用 for 循环对多个公司和多个日期进行事件研究
问题描述
我正在使用包中的evReturn
功能进行事件研究erer
。目的是获得每个公司的异常收益和所有公司的平均异常收益。我无法获得平均回报,因为该函数为每个公司单独执行,但不会一次为所有公司执行一次,尽管这可以通过 for 循环实现。我似乎无法获得正确的循环。
我试过这个方法:
1.
install.packages("erer")
library(erer)
i <- 1
hh2 <- list()
for(i in 1:3){
firms <- names(dataset4)[i+1]
dates <- eventdates2[i]
print(firms)
print(dates)
print(i)
hh2[[i]] <-
evReturn(y=dataset4, firm = firms, event.date=dates, y.date="Timestamp",
index="NASDAQ", event.win = 3, est.win= 250, digits=4)
}
来自包 erer 的示例,daEsa 是包中包含的数据集。
# event analysis for one firm and one event window
hhreturn <- evReturn(y = daEsa, firm = "wpp", y.date = "date",
index = "sp500", est.win = 250, digits = 3, event.date = 19990505,
event.win = 5)
# event analysis for many firms and one event window
hh2return2 <- update(hhreturn, firm = c("tin", "wy", "pcl", "pch"))
# event analysis for many firms and many event windows: need a for loop
最后一条评论是我需要的。
解决方案
多个日期:
hh2 <- list()
for(i in c(daEsa$date[3000], daEsa$date[3001])){
firms <- colnames(daEsa)[12:ncol(daEsa)]
print(firms)
print(i)
hh2[[i]] <-
evReturn(y=daEsa, firm = firms, event.date=i, y.date="date",
index="sp500", event.win = 2, est.win= 250, digits=4)
}
多个事件窗口(不是日期):
hh2 <- list()
for(i in c(2, 3)){
firms <- colnames(daEsa)[12:ncol(daEsa)]
print(firms)
print(i)
hh2[[i]] <-
evReturn(y=daEsa, firm = firms, event.date=daEsa$date[3000], y.date="date",
index="sp500", event.win = i, est.win= 250, digits=4)
}
[1] "pch" "pcl" "pop" "tin" "wpp" "wy" [1] 2 [1] "pch" "pcl" "pop" "tin" "wpp" "wy" [1] 3
推荐阅读
- c# - 让 Assert 等待第一个计时器滴答声
- javascript - 无法使用地图迭代器显示标记
- postgresql - 如何在 PostgreSQL 中联合所有
- android - 在相对布局 Android 中适合大小
- android - 如何在Android Q(Android 10)上直接下载文件到下载目录
- ruby-on-rails - 如何在 ransack 的排序链接中使用自定义 url
- cmake - CMake vs vcpkg 三元组选择
- android - 如何在树莓派和安卓智能手机之间进行同步通信?
- node.js - InversifyJS 联合测试 sinon stub
- scala - 如何修复 Cinnamon 中出现的部分结果(Lightbend 遥测)