| Title: | Conditional Multivariate Normal Distribution | 
| Version: | 2025.1 | 
| Date: | 2025-04-13 | 
| Description: | Computes conditional multivariate normal densities, probabilities, and random deviates. | 
| Imports: | stats | 
| Depends: | R(≥ 4.0.0), mvtnorm | 
| License: | GPL-2 | 
| Author: | Ravi Varadhan [aut, cre] | 
| Maintainer: | Ravi Varadhan <ravi.varadhan@jhu.edu> | 
| NeedsCompilation: | no | 
| Packaged: | 2025-04-13 20:09:27 UTC; raviv | 
| Repository: | CRAN | 
| Date/Publication: | 2025-04-13 20:40:02 UTC | 
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  | 
| 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  | 
| check.sigma | logical; if  | 
| log | logical; if  | 
| method | string specifying the matrix decomposition used to
determine the matrix root of  | 
See Also
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")
Conditional Mean and Variance of Multivariate Normal Distribution
Description
These functions provide the conditional mean and variance-covariance matrix of [Y given X], where Z = (X,Y) is the fully-joint multivariate normal distribution with mean equal to mean and covariance matrix sigma.
Usage
condMVN(mean, sigma, dependent.ind, given.ind, X.given, check.sigma=TRUE)
Arguments
| 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 density is returned. | 
| X.given | a vector of reals denoting the conditioning value of X. This should be of the same length as  | 
| check.sigma | logical; if  | 
See Also
dcmvnorm, pcmvnorm, pmvnorm, dmvnorm, qmvnorm
Examples
# 10-dimensional multivariate normal distribution
n <- 10
A <- matrix(rnorm(n^2), n, n)
A <- A %*% t(A)
condMVN(mean=rep(1,n), sigma=A, dependent=c(2,3,5), given=c(1,4,7,9),
  X.given=c(1,1,0,-1))
condMVN(mean=rep(1,n), sigma=A, dep=3, given=c(1,4,7,9), X=c(1,1,0,-1))
condMVN(mean=rep(1,n), sigma=A, dep=3, given=integer())  
# or simply the following
condMVN(mean=rep(1,n), sigma=A, dep=3)  
Conditional Multivariate Normal Distribution
Description
Computes the distribution function of the conditional multivariate normal, [Y given X], where Z = (X,Y) is the fully-joint multivariate normal distribution with mean equal to mean and covariance matrix sigma.
Usage
pcmvnorm(lower=-Inf, upper=Inf, mean, sigma, 
	dependent.ind, given.ind, X.given, 
	check.sigma=TRUE, algorithm = GenzBretz(), ...)
Arguments
| lower | the vector of lower limits of length n. | 
| upper | the vector of upper limits of length n. | 
| mean | the mean vector of length n. | 
| 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 the dependent variable Y. | 
| given.ind | a vector of integers denoting the indices of the 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  | 
| check.sigma | logical; if  | 
| algorithm |  an object of class  | 
| ... |  additional parameters (currently given to  | 
Details
This program involves the computation of multivariate normal probabilities with arbitrary correlation matrices.
Value
The evaluated distribution function is returned with attributes
| error | estimated absolute error and | 
| msg | status messages. | 
See Also
Examples
n <- 10
A <- matrix(rnorm(n^2), n, n)
A <- A %*% t(A)
pcmvnorm(lower=-Inf, upper=1, mean=rep(1,n), sigma=A, 	dependent.ind=3, 
  given.ind=c(1,4,7,9,10), X.given=c(1,1,0,0,-1))
pcmvnorm(lower=-Inf, upper=c(1,2), mean=rep(1,n), sigma=A, 
  dep=c(2,5), given=c(1,4,7,9,10), X=c(1,1,0,0,-1))
pcmvnorm(lower=-Inf, upper=c(1,2), mean=rep(1,n), sigma=A, 
	dep=c(2,5))