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))