| tmvt {TruncatedNormal} | R Documentation |
Multivariate truncated Student distribution
Description
Density, distribution function and random generation for the multivariate truncated Student distribution
with location vector mu, scale matrix sigma, lower truncation limit
lb, upper truncation limit ub and degrees of freedom df.
Arguments
n |
number of observations |
x, q |
vector or matrix of quantiles |
B |
number of replications for the (quasi)-Monte Carlo scheme |
log |
logical; if |
mu |
vector of location parameters |
sigma |
scale matrix |
df |
degrees of freedom |
lb |
vector of lower truncation limits |
ub |
vector of upper truncation limits |
type |
string, either of |
check |
logical, if |
... |
additional arguments, currently ignored |
Details
The truncation limits can include infinite values. The Monte Carlo (type = "mc") uses a sample of size B, while the
qausi Monte Carlo (type = "qmc") uses a pointset of size ceiling(n/12) and estimates the relative error using 12 independent randomized QMC estimators.
pmvt computes an estimate and a deterministic upper bound of the distribution function of the multivariate normal distribution.
Infinite values for vectors u and l are accepted. The Monte Carlo method uses sample size n: the larger n, the smaller the relative error of the estimator.
Value
dtmvt gives the density, ptmvt gives the distribution function, rtmvt generate random deviates.
Usage
dtmvt(x, mu, sigma, df, lb, ub, type = c("mc", "qmc"), log = FALSE, B = 1e4)
ptmvt(q, mu, sigma, df, lb, ub, type = c("mc", "qmc"), log = FALSE, B = 1e4)
rtmvt(n, mu, sigma, df, lb, ub)
pmvt(mu, sigma, df, lb = -Inf, ub = Inf, type = c("mc", "qmc"), B = 1e4)
Author(s)
Leo Belzile, R port from Matlab code by Z. I. Botev
References
Z. I. Botev and P. L'Ecuyer (2015), Efficient probability estimation and simulation of the truncated multivariate Student-t distribution, Proceedings of the 2015 Winter Simulation Conference, pp. 380-391
Examples
d <- 4; lb <- rep(0, d)
mu <- runif(d)
sigma <- matrix(0.5, d, d) + diag(0.5, d)
samp <- rtmvt(n = 10, mu = mu, sigma = sigma, df = 2, lb = lb)
loglik <- dtmvt(samp, mu = mu, sigma = sigma, df = 2, lb = lb, log = TRUE)
cdf <- ptmvt(samp, mu = mu, sigma = sigma, df = 2, lb = lb, log = TRUE, type = "q")