我有一个相关矩阵:
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/