cmvnorm {condMVNorm} R Documentation

## Conditional Multivariate Normal Density and Random Deviates

### Description

These functions provide the density function and a random number generator for the conditional multivariate normal distribution, [Y given X], where Z = (X,Y) is the fully-joint multivariate normal distribution with mean equal to mean and covariance matrix sigma.

### Usage

dcmvnorm(x, mean, sigma, dependent.ind, given.ind,
X.given, check.sigma=TRUE, log = FALSE)
rcmvnorm(n, mean, sigma, dependent.ind, given.ind,
X.given, check.sigma=TRUE,
method=c("eigen", "svd", "chol"))


### Arguments

 x vector or matrix of quantiles of Y. If x is a matrix, each row is taken to be a quantile. n number of random deviates. mean mean vector, which must be specified. sigma a symmetric, positive-definte matrix of dimension n x n, which must be specified. dependent.ind a vector of integers denoting the indices of dependent variable Y. given.ind a vector of integers denoting the indices of conditioning variable X. If specified as integer vector of length zero or left unspecified, the unconditional distribution is used. X.given a vector of reals denoting the conditioning value of X. This should be of the same length as given.ind check.sigma logical; if TRUE, the variance-covariance matrix is checked for appropriateness (symmetry, positive-definiteness). This could be set to FALSE if the user knows it is appropriate. log logical; if TRUE, densities d are given as log(d). method string specifying the matrix decomposition used to determine the matrix root of sigma. Possible methods are eigenvalue decomposition ("eigen", default), singular value decomposition ("svd"), and Cholesky decomposition ("chol"). The Cholesky is typically fastest, not by much though.

pcmvnorm, pmvnorm, dmvnorm, qmvnorm

### Examples

# 10-dimensional multivariate normal distribution
n <- 10
A <- matrix(rnorm(n^2), n, n)
A <- A %*% t(A)

# density of Z[c(2,5)] given Z[c(1,4,7,9)]=c(1,1,0,-1)
dcmvnorm(x=c(1.2,-1), mean=rep(1,n), sigma=A,
dependent.ind=c(2,5), given.ind=c(1,4,7,9),
X.given=c(1,1,0,-1))

dcmvnorm(x=-1, mean=rep(1,n), sigma=A, dep=3, given=c(1,4,7,9,10),
X=c(1,1,0,0,-1))

dcmvnorm(x=c(1.2,-1), mean=rep(1,n), sigma=A, dep=c(2,5),
given=integer())

# gives an error since x' and dep' are incompatibe
#dcmvnorm(x=-1, mean=rep(1,n), sigma=A, dep=c(2,3),
#	given=c(1,4,7,9,10), X=c(1,1,0,0,-1))

rcmvnorm(n=10, mean=rep(1,n), sigma=A, dep=c(2,5),
given=c(1,4,7,9,10), X=c(1,1,0,0,-1),
method="eigen")

rcmvnorm(n=10, mean=rep(1,n), sigma=A, dep=3,
given=c(1,4,7,9,10), X=c(1,1,0,0,-1),
method="chol")


[Package condMVNorm version 2020.1 Index]