mvn: Generate Multivariate Normal Data \mathbf{X} \sim...

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/mvn.R

Description

Generates an n \times k multivariate data matrix or a list of n \times k multivariate data matrices of length R from the multivariate normal distribution

\mathbf{X} \sim \mathcal{N}_{k} ≤ft( \boldsymbol{μ}, \boldsymbol{Σ} \right) . %(\#eq:dist-X-mvn)

This function is a wrapper around MASS::mvrnorm().

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
mvn(
  n,
  mu = NULL,
  Sigma,
  tol = 1e-06,
  empirical = FALSE,
  df = FALSE,
  varnames = NULL,
  R = NULL,
  par = FALSE,
  ncores = NULL,
  mc = TRUE,
  lb = FALSE,
  cl_eval = FALSE,
  cl_export = FALSE,
  cl_expr,
  cl_vars
)

Arguments

n

Integer. Sample size.

mu

Numeric vector. Location parameter mean vector \boldsymbol{μ} of length k.

Sigma

Numeric matrix. k \times k variance-covariance matrix \boldsymbol{Σ}.

tol

Numeric. Tolerance (relative to largest variance) for numerical lack of positive-definiteness in Sigma.

empirical

Logical. If TRUE, mu and Sigma specify the empirical, not population. mean and covariance matrix.

df

Logical. If TRUE, the function returns a data frame. If FALSE, the function returns a matrix.

varnames

Character string. Optional column names with the same length as mu.

R

Integer. Number of Monte Carlo replications. If R is not provided, the function produces a single random data set. If R is an integer greater than 1, (e.g., R = 10), the function produces multiple random data sets stored in each element of a list of length R. par and all succeeding arguments are only relevant when R > 1.

par

Logical. If TRUE, use multiple cores. If FALSE, use lapply().

ncores

Integer. Number of cores to use if par = TRUE. If unspecified, defaults to detectCores() - 1.

mc

Logical. If TRUE, use parallel::mclapply(). If FALSE, use parallel::parLapply() or parallel::parLapplyLB(). Ignored if par = FALSE.

lb

Logical. If TRUE use parallel::parLapplyLB(). If FALSE, use parallel::parLapply(). Ignored if par = FALSE and mc = TRUE.

cl_eval

Logical. Execute parallel::clusterEvalQ() using cl_expr. Ignored if mc = TRUE.

cl_export

Logical. Execute parallel::clusterExport() using cl_vars. Ignored if mc = TRUE.

cl_expr

Expression. Expression passed to parallel::clusterEvalQ() Ignored if mc = TRUE.

cl_vars

Character vector. Names of objects to pass to parallel::clusterExport() Ignored if mc = TRUE.

Details

The multivariate normal distribution has two parameters, namely the k \times 1 mean vector mu ≤ft( \boldsymbol{μ} \right) and the k \times k variance-covariance matrix Sigma ≤ft( \boldsymbol{Σ} \right). If mu is not provided, it is set to a vector of zeroes with the appropriate length.

Options for explicit parallelism are provided when R > 1 especially when R is large. See par and suceeding arguments.

Value

If R = NULL or R = 1, returns an n \times k multivariate normal data matrix or data frame . If R is an integer greater than 1, (e.g., R = 10) returns a list of length R of n \times k multivariate normal data matrix or data frame.

Author(s)

Ivan Jacob Agaloos Pesigan

References

Venables, W. N., Ripley, B. D., & Venables, W. N. (2002). Modern applied statistics with S. New York, N.Y: Springer.

Wikipedia: Multivariate normal distribution

See Also

jeksterslabRdist::mvnpdf(), jeksterslabRdist::mvnll(), and jeksterslabRdist::mvn2ll(), for more information on the multivariate normal distribution.

Other multivariate data functions: mvnramsigma2(), mvnram()

Examples

1
2
3
4
5
6
7
8
mu <- c(100, 100, 100)
Sigma <- matrix(
  data = c(225, 112.50, 56.25, 112.5, 225, 112.5, 56.25, 112.50, 225),
  ncol = 3
)
X <- mvn(n = 100, mu = mu, Sigma = Sigma)
Xstar <- mvn(n = 100, mu = mu, Sigma = Sigma, R = 100)
str(Xstar, list.len = 6)

jeksterslabds/jeksterslabRdata documentation built on July 24, 2020, 5:49 a.m.