R-在两个矩阵之间按列执行函数

问题描述 投票:-2回答:1

我有两个时间序列矩阵:答:由500列构成标普成分股收益的列B:由一列组成,包含索引的返回值(S&P500)

我想执行此功能:

beta_function <- function(stock, index1)  cov(stock, index1)/var(index1)

R应该在12个月的时间内应用它。

总结起来:我希望R执行这样的功能,即为每只股票的每12个月窗口计算每只股票的beta。

我尝试过:-重复S&P500指数的价值回报500次,以实现与股票回报矩阵具有相同维度的矩阵。

如果我通过以下方式应用我的功能,则>

apply.rolling(c(returns_constituents, returns_index), 
                   width = 12, by = 12, FUN = beta_function)

它返回错误:

 Error in is.data.frame(y) : argument "index1" is missing, with no default 

甚至在执行apply.rolling功能之前先分配

index1 <- returns_index

没有解决我的问题。

您能帮我吗?

非常感谢。

示例:

stock <- matrix(c(runif(n = 84000, min = -1, max = 1)), ncol = 500, nrow = 168)
index1 <- matrix(c(runif(n = 168, min = -1, max = 1)), ncol = 1, nrow = 168)

我的尝试是“扩展”索引:

index1_ext <- matrix(c(runif(n = 8400, min = -1, max = 1)), ncol = 500, nrow = 168)

我有两个时间序列矩阵:A:由500列组成,其中包含标准普尔成分的收益率B:由一列组成,其中包含我想要的指数(S&P500)的收益率...

r matrix xts
1个回答
0
投票

数据,而不仅仅是代码,应该是最小的,因此我们将数据缩减为9x2(请参阅末尾的注释)。同样,我们通过使用set.seed使其可重现,并使用3而不是12。

© www.soinside.com 2019 - 2024. All rights reserved.