Learn R Programming

tmvtnorm (version 0.8-3)

ptmvnorm.marginal: One-dimensional marginal CDF function from a Truncated Multivariate Normal distribution

Description

This function computes the one-dimensional marginal probability function from a Truncated Multivariate Normal density function using integration in pmvnorm().

Usage

ptmvnorm.marginal(xn, 
    n = 1, 
    mean = rep(0, nrow(sigma)), 
    sigma = diag(length(mean)), 
    lower = rep(-Inf, length = length(mean)), 
    upper = rep(Inf, length = length(mean)))

Arguments

xn
Vector of quantiles to calculate the marginal probability for.
n
Index position (1..k) within the random vector xn to calculate the one-dimensional marginal probability for.
mean
the mean vector of length k.
sigma
the covariance matrix of dimension k. Either corr or sigma can be specified. If sigma is given, the problem is standardized. If neither corr nor s
lower
Vector of lower truncation points,\ default is rep(-Inf, length = length(mean)).
upper
Vector of upper truncation points,\ default is rep( Inf, length = length(mean)).

Value

  • Returns a vector of the same length as xn with probabilities.

Details

The one-dimensional marginal probability for index i is $F_i(x_i) = P(X_i \le x_i)$ $$F_i(x_i) = \int_{a_1}^{b_1} \ldots \int_{a_{i-1}}^{b_{i-1}} \int_{a_{i}}^{x_i} \int_{a_{i+1}}^{b_{i+1}} \ldots \int_{a_k}^{b_k} f(x) dx = \alpha^{-1} \Phi_k(a, u, \mu, \Sigma)$$ where $u = (b_1,\ldots,b_{i-1},x_i,b_{i+1},\ldots,b_k)'$ is the upper integration bound and $\Phi_k$ is the k-dimensional normal probability (i.e. function pmvnorm() in R package mvtnorm).

Examples

Run this code
##
lower=c(-1,-1,-1)
upper=c(1,1,1)
mean=c(0,0,0)
sigma=matrix(c(1, 0.8, 0.2, 
              0.8,  1, 0.1,
              0.2, 0.1,  1), 3, 3)

X = rtmvnorm(n=1000, mean=c(0,0,0), sigma=sigma, lower=lower, upper=upper)

x = seq(-1, 1, by=0.001)
Fx = ptmvnorm.marginal(xn=x, n=1, mean=c(0,0,0), sigma=sigma, lower=lower, upper=upper) 

plot(ecdf(X[,1]))
lines(x, Fx, type="l", col="blue")

Run the code above in your browser using DataLab