Fast computation of the multivariate Student's t density.
dmvt(X, mu, sigma, df, log = FALSE, ncores = 1, isChol = FALSE)
X | matrix n by d where each row is a d dimensional random vector. Alternatively |
---|---|
mu | vector of length d, representing the mean of the distribution. |
sigma | scale matrix (d x d). Alternatively it can be the cholesky decomposition
of the scale matrix. In that case isChol should be set to TRUE. Notice that ff the degrees of
freedom (the argument |
df | a positive scalar representing the degrees of freedom. |
log | boolean set to true the logarithm of the pdf is required. |
ncores | Number of cores used. The parallelization will take place only if OpenMP is supported. |
isChol | boolean set to true is |
A vector of length n where the i-the entry contains the pdf of the i-th random vector.
There are many candidates for the multivariate generalization of Student's t-distribution, here we use
the parametrization described here https://en.wikipedia.org/wiki/Multivariate_t-distribution. NB: at the moment
the parallelization does not work properly on Solaris OS when ncores>1
. Hence, dmvt()
checks if the OS
is Solaris and, if this the case, it imposes ncores==1
.
# NOT RUN { N <- 100 d <- 5 mu <- 1:d df <- 4 X <- t(t(matrix(rnorm(N*d), N, d)) + mu) tmp <- matrix(rnorm(d^2), d, d) mcov <- tcrossprod(tmp, tmp) + diag(0.5, d) myChol <- chol(mcov) head(dmvt(X, mu, mcov, df = df), 10) head(dmvt(X, mu, myChol, df = df, isChol = TRUE), 10) # }