gpt4 book ai didi

r - 面板数据中的每月协方差计算 -r

转载 作者:行者123 更新时间:2023-12-02 04:26:34 26 4
gpt4 key购买 nike

我有一个这样的面板数据框

date        firms   return   mkreturn
5/1/1988 A 5 4
6/1/1988 A 6 6
7/1/1988 A 4 12
8/1/1988 A 5 3
9/1/1988 A 6 12
11/1/1988 A 6 14
12/1/1988 A 12 5
13/01/1988 A 3 6
14/01/1988 A 2 4
15/01/1988 A 5 5
16/01/1988 A 2 6
18/01/1988 A 7 6
19/01/1988 A 3 2
20/01/1988 A 5 7
21/01/1988 A 7 2
22/01/1988 A 5 5
23/01/1988 A 9 7
25/01/1988 A 1 5
26/01/1988 A 5 6
27/01/1988 A 2 6
28/01/1988 A 7 12
29/01/1988 A 2 3
5/1/1988 B 5 2
6/1/1988 B 7 5
7/1/1988 B 5 5
8/1/1988 B 9 7
9/1/1988 B 1 5
11/1/1988 B 5 6
12/1/1988 B 2 12
13/01/1988 B 7 6
14/01/1988 B 2 11
15/01/1988 B 5 2
16/01/1988 B 6 14
18/01/1988 B 8 12
19/01/1988 B 5 15
20/01/1988 B 4 8
21/01/1988 B 3 9
22/01/1988 B 18 10
23/01/1988 B 5 3
25/01/1988 B 2 5
26/01/1988 B 7 6
27/01/1988 B 3 8
28/01/1988 B 9 5
29/01/1988 B 2 3

我想找出每家公司的返回与市场返回的每月协方差。因此预期的输出就像

date        Firms       cov(return, mkreturn)
Jan-88 A ....
Jan-88 B ....

我使用下面的公式找出每月的差异

df_var<-aggregate( return ~ Month+Year+firms, df , var )

如何修改此公式以找出协方差?请在这方面帮助我。

最佳答案

我们将 'date' 转换为 Date 类,在 group_by 步骤中将其format 为 'month-year' 格式'firms' 并应用 cov

library(dplyr)
library(lubridate)
df %>%
group_by(date = format(dmy(date), '%b-%y'), firms) %>%
summarise(cov = cov(return, mkreturn))

或与 data.table 类似的选项

library(data.table)
setDT(df)[, .(cov = cov(return, mkreturn)),
.(date = format(as.Date(date, '%d/%m/%Y'), '%b-%y'), firms)]
# date firms cov
#1: Jan-88 A 1.727273
#2: Jan-88 B 1.653680

或者使用 base R 使用 split

lst1 <- split(df, list(df$firms, format(as.Date(df$date, '%d/%m/%Y'), 
'%b-%y')), drop = TRUE)
sapply(lst1, function(x) cov(x$return, x$mkreturn))

关于r - 面板数据中的每月协方差计算 -r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53994449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com