r - 从相关矩阵生成协方差矩阵

标签 r

我有一个相关矩阵:

a <- matrix(c(1, .8, .8, .8, 1, .8, .8, .8, 1), 3)

##      [,1] [,2] [,3]
## [1,]  1.0  0.8  0.8
## [2,]  0.8  1.0  0.8
## [3,]  0.8  0.8  1.0

我现在想从相关矩阵创建一个协方差矩阵。这如何在 R 中完成?

我试过:
e1.sd <- 3
e2.sd <- 10
e3.sd <- 3
e.cov <- a * as.matrix(c, e1.sd, e2.sd, e3.sd) %*% t(as.matrix(c(e1.sd, e2.sd, e3.sd)))

但我收到错误:
Error in a * as.matrix(c, e1.sd, e2.sd, e3.sd) %*% t(as.matrix(c(e1.sd,  : 
  non-conformable arrays

我究竟做错了什么?

最佳答案

如果您知道各个变量的标准差,您可以:

stdevs <- c(e1.sd, e2.sd, e3.sd)
#stdevs is the vector that contains the standard deviations of your variables
b <- stdevs %*% t(stdevs)  
# b is an n*n matrix whose generic term is stdev[i]*stdev[j] (n is your number of variables)
a_covariance <- b * a  #your covariance matrix

另一方面,如果你不知道标准差,那是不可能的。

关于r - 从相关矩阵生成协方差矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18740796/

相关文章:

r - 在函数内使用 setDT

R:按多个列值索引到数据框

r - 如何仅保留向量中每个字符串中的唯一单词

r - 在 Rprofile 中设置 `width`

r - R中具有不同颜色的直方图样图

r - 当它实际上是一个因素时,是否有更快的方法来重新编码字符数据?

r - 在四个数据框列上应用两个不同的公式

r - 为随机抽样构建 R 循环

R Shiny 组多个文本输出

r - 如何使用ggplot2修改multiple-ggproto中标签的背景颜色