基于 R 中的列时间序列创建均值矩阵

Creating a matrix of means based on column time series in R

我有 25 个每月 returns 不同投资组合的时间序列作为列(S1B1、S1B2、S1B3、S1B4、S1B5、S2B1、S2B2、S2B3、S2B4、S2B5、(...)、S5B5 ):

S1B1 S1B2 S1B3 S1B4 S1B5 (...) S5B5   
0.2  0.1  2.1  3.2  1.2        0.3
0.3  1.2  2.6  2.1  6.3        0.2
0.5  0.5  0.5  2.2  6.2        1.2
0.4  1.2  2.2  1.1  0.5        2.1

我想创建一个 5x5 矩阵,按以下方式显示每一列的均值:

S1B1 S1B2 S1B3 S1B4 S1B5    
S2B1 S2B2 S2B3 S2B4 S2B5   
S3B1 S3B2 S3B3 S3B4 S3B5   
S4B1 S4B2 S4B3 S4B4 S4B5   
S5B1 S5B2 S5B3 S5B4 S5B5

您可以使用 apply 函数计算每一列的平均值。

你可以这样使用它:

apply(M, 2, mean) # where M is your data (presumably a matrix or a data frame)

然后将每个结果放入矩阵的一个条目中。

很简单。首先,您应该为每一列计算 mean,然后您应该将结果 1x25 向量重塑为 5x5 矩阵:

matrix(apply(data,2,mean), nrow=5, ncol=5, byrow=TRUE)

apply(data,2,mean) 计算 data 的每一列的平均值,matrix 根据其结果构造一个 5x5 矩阵。

这里显而易见的解决方案是使用矢量化 colMeans 函数(因为 apply 是一个 for 循环,随着数据集的增长变得效率低下)。试试这个

matrix(colMeans(M), ncol = 5, byrow = TRUE)