Simulate from a Multivariate Normal Distribution

Usage

mvrnorm(n=1, mu, Sigma, tol = 1e-6)

Arguments

n the number of samples required.
mu a vector giving the means of the variables.
Sigma a positive-definite symmetric matrix specifying the covariance matrix of the variables.
tol tolerance (relative to largest variance) for numerical lack of positive-definiteness in Sigma.

Description

Produces one or more samples from the specified multivariate normal distribution.

Details

The matrix decomposition is done via eigen; although a Choleski decomposition might be faster, the eigendecomposition is stabler. The help for rnorm has an alternative version using svd, which seems a strange choice for a positive-definite symmetric matrix (and has no check for positive-definiteness). In S-Plus 4.0 this is replaced by function rmvnorm.

Value

If n = 1 a vector of the same length as mu, otherwise an n by length(mu) matrix with one sample in each row.

Side Effects

Causes creation of the dataset .Random.seed if it does not already exist, otherwise its value is updated.

References

B. D. Ripley (1987) Stochastic Simulation. Wiley. Page 98.

See Also

rnorm

Examples

Sigma <- matrix(c(10,3,3,2),2,2)
Sigma

     [,1] [,2] 
[1,]   10    3
[2,]    3    2

var(mvrnorm(n=1000, rep(0, 2), Sigma))

         [,1]     [,2] 
[1,] 9.906492 3.030130
[2,] 3.030130 2.020929


[Package Contents]