8.4 Random Multivariate Normal Distribution Deviate

Rmvn
## function (n, Mu, Cov) 
## {
##     cCov = chol(Cov)
##     nDim = dim(Cov)[1]
##     x = matrix(Rnorm(n * nDim), nrow = n, ncol = nDim)
##     mMu = matrix(rep(Mu, n), nrow = n, ncol = nDim, byrow = TRUE)
##     return(x %*% cCov + mMu)
## }
## <bytecode: 0x000001e2ab8a8260>
## <environment: namespace:math>

Test script

Cov = matrix(c(2,1,1,2), ncol=2)
Cov
##      [,1] [,2]
## [1,]    2    1
## [2,]    1    2
Mu = c(1,2)
y = Rmvn(10000, Mu, Cov)
summary(y)
##        V1               V2       
##  Min.   :-4.130   Min.   :-4.56  
##  1st Qu.: 0.035   1st Qu.: 1.06  
##  Median : 0.977   Median : 2.01  
##  Mean   : 0.993   Mean   : 2.00  
##  3rd Qu.: 1.936   3rd Qu.: 2.92  
##  Max.   : 6.182   Max.   : 7.56
var(y)
##        [,1]   [,2]
## [1,] 2.0019 0.9955
## [2,] 0.9955 1.9526
cor(y)
##        [,1]   [,2]
## [1,] 1.0000 0.5035
## [2,] 0.5035 1.0000
  • Explore mvrnorm {MASS}, rmvnorm {splus2R}