简便地创建具有给定方差和协方差的NXN协方差矩阵

  • 本文关键字:方差 NXN 方差矩 创建 matrix
  • 更新时间 :
  • 英文 :


对于模拟研究,我需要创建nxn协方差矩阵。例如,我可以输入2x2协方差矩阵,如

     [,1] [,2]
[1,] 1.0  1.5
[2,] 1.5  2.0

转换成r函数/对象:

var <- c(1,2) ## variances
covar <- c(1.5,1.5) ## covariance(s)
mat <- matrix(c(var[1],covar[1],covar[2],var[2]),ncol=length(var))

那么我只需要改变var &covar值形成矩阵。但不幸的是,我不只是处理2x2s,而是2x2:30x30甚至更高!那么在r中对于任何NXN维矩阵是否可能只写出一个函数呢?

你可以这样做:

m <- diag(variance)
m[lower.tri(m)] = m[upper.tri(m)] <- head(covar, length(covar)/2)
例如:

variance = c(0.25, 0.75, 0.6)
covar = c(0.1, 0.3, 0.2, 0.1, 0.3, 0.2)
#>m
#     [,1] [,2] [,3]
#[1,] 0.25 0.10  0.3
#[2,] 0.10 0.75  0.2
#[3,] 0.30 0.20  0.6

最新更新