dmvn {mvnfast} | R Documentation |
Fast computation of the multivariate normal density.
Description
Fast computation of the multivariate normal density.
Usage
dmvn(X, mu, sigma, log = FALSE, ncores = 1, isChol = FALSE)
Arguments
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 |
covariance matrix (d x d). Alternatively it can be the cholesky decomposition of the covariance. In that case isChol should be set to TRUE. |
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 |
Value
A vector of length n where the i-the entry contains the pdf of the i-th random vector.
Author(s)
Matteo Fasiolo <matteo.fasiolo@gmail.com>
Examples
N <- 100
d <- 5
mu <- 1:d
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(dmvn(X, mu, mcov), 10)
head(dmvn(X, mu, myChol, isChol = TRUE), 10)
## Not run:
# Performance comparison: microbenchmark does not work on all
# platforms, hence we need to check whether it is installed
if( "microbenchmark" %in% rownames(installed.packages()) ){
library(mvtnorm)
library(microbenchmark)
a <- cbind(
dmvn(X, mu, mcov),
dmvn(X, mu, myChol, isChol = TRUE),
dmvnorm(X, mu, mcov))
# Check if we get the same output as dmvnorm()
a[ , 1] / a[, 3]
a[ , 2] / a[, 3]
microbenchmark(dmvn(X, mu, myChol, isChol = TRUE),
dmvn(X, mu, mcov),
dmvnorm(X, mu, mcov))
detach("package:mvtnorm", unload=TRUE)
}
## End(Not run)
[Package mvnfast version 0.2.8 Index]