ptmvnorm.marginal {tmvtnorm} | R Documentation |
This function computes the one-dimensional marginal probability function from a Truncated Multivariate Normal density function
using integration in pmvnorm()
.
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)))
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
sigma is given, the identity matrix is used
for sigma . |
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)) . |
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} ... \int_{a_{i-1}}^{b_{i-1}} \int_{a_{i}}^{x_i} \int_{a_{i+1}}^{b_{i+1}} ... \int_{a_k}^{b_k} f(x) dx = \alpha^{-1} \Phi_k(a, u, \mu, \Sigma)
where u = (b_1,...,b_{i-1},x_i,b_{i+1},...,b_k)' is the upper integration bound and \Phi_k
is the k-dimensional normal probability (i.e. function pmvnorm()
in R package mvtnorm
).
Returns a vector of the same length as xn with probabilities.
Stefan Wilhelm <Stefan.Wilhelm@financial.com>
## 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")