dmvn: Fast computation of the multivariate normal density. In mvnfast: Fast Multivariate Normal and Student's t Methods

Description

Fast computation of the multivariate normal density.

Usage

 `1` ```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 `X` can be a d-dimensional vector. `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 `sigma` is the cholesky decomposition of the covariance matrix.

Value

A vector of length n where the i-the entry contains the pdf of the i-th random vector.

Author(s)

Matteo Fasiolo <[email protected]>

Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35``` ```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) ```

mvnfast documentation built on Feb. 1, 2018, 1:04 a.m.