Multivariate Normal (Gaussian) Distribution

DESCRIPTION:

Density, cumulative probability, and random generation for the multivariate normal (also called Gaussian) distribution.

USAGE:

dmvnorm(x, mean=rep(0,d), cov=diag(d), sd, rho) 
pmvnorm(q, mean=rep(0,d), cov=diag(d), sd, rho) 
rmvnorm(n, mean=rep(0,d), cov=diag(d), sd, rho, d=2, bigdata=F) 

REQUIRED ARGUMENTS:

x,q
vector of length d, or matrix with d columns, containing d-dimensional quantiles.
n
sample size -- number of random vectors of length d to return (as rows in a matrix).

OPTIONAL ARGUMENTS:

mean
vector of length d, or matrix with n rows and d columns.
cov
covariance or correlation matrix with d rows and columns.
sd
vector of length d, or matrix with n rows and d columns, containing standard deviations. If supplied, the rows and columns of cov are multiplied by sd. In particular, if cov is a correlation matrix and sd is a vector of standard deviations, the result is a covariance matrix. If sd is a matrix then one row is used for each observation.
rho
scalar, vector, or bdVector of length n, containing correlations for bivariate data. This is ignored if cov is supplied.
d
dimension of the multivariate normal.
bigdata
a logical value; if TRUE, an object of type bdVector is returned. Otherwise, a vector object is returned. This argument can be used only if the bigdata library section has been loaded.

VALUE:

density ( dmvnorm), probability ( pmvnorm), or random sample ( rmvnorm) for the multivariate normal distribution. For rmvnorm the result is a matrix with n rows and d columns, and for the other functions the result is a vector or bdVector of length n. The probability returned by pmvnorm is the multivariate cumulative distribution function, e.g. P(X < q[1], Y < q[2]) for bivariate data.

SIDE EFFECTS:

The function rmvnorm cause creation of the dataset .Random.seed if it does not already exist, otherwise its value is updated.

DETAILS:

The values of n and d are inferred from the dimensions of x, q, mean, sd, and rho.

pmvnorm currently allows bivariate ( d=2) data only, unless all covariances are zero.

Missing values (NAs) are allowed in arguments x and mean, except when calling pmvnorm.

The random values returned by rmvnorm depend on both cov and sd. The (co)variances of the random values, and the results of dmvnorm and pmvnorm , depend only on the result of multiplying the rows and columns of cov by rows of sd.

It is generally more efficient to generate a matrix of random values in a single call to rmvnorm than to call the function repeatedly in a loop.

For details on the uniform random number generator implemented in S-PLUS, see the set.seed help file.

REFERENCE:

Donnelly, T. G. (1973). Algorithm 462, Bivariate normal distribution. Commun. Ass. Comput. Mach. 16, 636-638.

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

SEE ALSO:

, .

EXAMPLES:

rmvnorm(5)                # 5 rows and 2 independent columns 
rmvnorm(5, mean=c(9,3,1)) # 5 rows and 3 independent columns 
rmvnorm(5, rho=.9)        # 2 columns, std. dev. 1, correlation .9 
rmvnorm(5, mean=c(9,3), cov=matrix(c(4,1,1,2), 2)) 
pmvnorm(c(1,2), rho=.3) 
pmvnorm(c(1,2), rho=c(.3,.4,.5)) 
dmvnorm(c(1,2), rho=.3) 
dmvnorm(c(1,2), rho=c(.3,.4,.5)) 
x <- seq(-3,3,length=10)  # Evaluate density at 10*10*10 grid 
array(dmvnorm(x=cbind(rep(x, 100), rep(x, 10, each=10), 
  rep(x, each=100)), cov=cbind(c(5,1,2), c(1,3,1), c(2,1,9))), 
  dim=c(10,10,10))