R: Fast computation of the multivariate normal density.

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 `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 <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.5 Index]