如何将 tibble 中的每一行与矩阵相乘以获得标准偏差?

How to multiply each row in a tibble with a matrix to get standard deviation?

我有一个标题和一个矩阵。 tibble 包含一个随机权重在 0 到 1 之间的大型数据集。这里只是原始数据集的一小部分(原始数据集有 15.000 行)随机数:

library(tidyquant)
library(tidyverse)

weights_ptf <- tibble(a = runif(10, min=0, max=1), b = runif(10, min=0, max=1), 
             c = runif(10, min=0, max=1), d = runif(10, min=0, max=1), e = runif(10, min=0, max=1))

矩阵是协方差矩阵。为了简化,矩阵在这种情况下看起来像:

CovMat <- matrix( 
  c(runif(5, min=0.0001, max=0.0002), runif(5, min=0.0001, max=0.0002), runif(5, min=0.0001, max=0.0002), 
    runif(5, min=0.0001, max=0.0002), runif(5, min=0.0001, max=0.0002), runif(5, min=0.0001, max=0.0002)), 
    nrow=5, 
    ncol=5) 

colnames(CovMat) <- (c("a", "b", "c", "d", "e"))
rownames(CovMat) <- (c("a", "b", "c", "d", "e"))

我想根据公式 sqrt(t(wts) %*% (CovMat %*% wts)) 计算 weights_ptf 中每一行的标准差。 wts 在这种情况下将是 weights_ptf.

中的每一行

我希望我的问题很清楚。任何帮助将不胜感激。

提前致谢!

for set.seed(2L) 用于创建数据

apply(weights_ptf, 1, function(x) sqrt(t(x) %*% (CovMat %*% x)))
# [1] 0.02935053 0.02150601 0.03854272 0.01795160 0.03706881 0.04465907 0.03659552 0.02438940 0.03720857 0.01956361