randmvn: Randomly Generate a Multivariate Normal Distribution

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

Description

Randomly generate a mean vector and covariance matrix describing a multivariate normal (MVN) distribution, and then sample from it

Usage

1
2
3
randmvn(N, d, method = c("normwish", "parsimonious"),
        mup=list(mu = 0, s2 = 1), s2p=list(a = 0.5, b = 1),
        pnz=0.1, nu=Inf)

Arguments

N

number of samples to draw

d

dimension of the MVN, i.e., the length of the mean vector and the number of rows/cols of the covariance matrix

method

the default generation method is "norwish" uses the direct method described in the details section below, whereas the "parsimonious" method builds up the random mean vector and covariance via regression coefficients, intercepts, and variances. See below for more details. Here, a random number of regression coefficients for each regression are set to zero

mup

a list with entries $mu and $s2: $mu is the prior mean for the independent components of the normally distributed mean vector; $s2 is the prior variance

s2p

a list with entries $a and $b only valid for method = "parsimonious": $a > 0 is the baseline inverse gamma prior scale parameter for the regression variances (the actual parameter used for each column i in 1:d of the covariance matrix is a + i - 1); $b >= 0 is the rate parameter

pnz

a scalar 0 <= pnz <= 1, only valid for method = "parsimonious": determines the binomial proportion of non-zero regression coefficients in the sequential build-up of mu and S, thereby indirectly determining the number of non-zero entries in S

nu

a scalar >= 1 indicating the degrees of freedom of a Student-t distribution to be used instead of an MVN when not infinite

Details

In the direct method ("normwish") the components of the mean vector mu are iid from a standard normal distribution, and the covariance matrix S is drawn from an inverse–Wishart distribution with degrees of freedom d + 2 and mean (centering matrix) diag(d)

In the "parsimonious" method mu and S are built up sequentially by randomly sampling intercepts, regression coefficients (of length i-1 for i in 1:d) and variances by applying the monomvn equations. A unique prior results when a random number of the regression coefficients are set to zero. When none are set to zero the direct method results

Value

The return value is a list with the following components:

mu

randomly generated mean vector of length d

S

randomly generated covariance matrix with d rows and d columns

x

if N > 0 then x is an N*d matrix of N samples from the MVN with mean vector mu and covariance matrix S; otherwise when N = 0 this component is not included

Note

requires the rmvnorm function of the mvtnorm package

Author(s)

Robert B. Gramacy rbg@vt.edu

See Also

rwish, rmvnorm, rmono

Examples

1
randmvn(5, 3)

Example output

Loading required package: pls

Attaching package: 'pls'

The following object is masked from 'package:stats':

    loadings

Loading required package: lars
Loaded lars 1.2

Loading required package: MASS
$x
           [,1]        [,2]       [,3]
[1,]  0.3712477 -0.09887911  0.5730451
[2,]  0.6717559 -0.61513684 -0.1571736
[3,] -0.1466544 -0.56655052  0.0900901
[4,] -0.4736711 -0.73359755 -0.5333514
[5,]  2.3486718 -0.85397794  0.3184048

$mu
[1]  0.4798136 -0.4853351  0.1373202

$S
          [,1]      [,2]      [,3]
[1,] 0.9063796 0.3162725 0.2279514
[2,] 0.3162725 0.2712846 0.1269866
[3,] 0.2279514 0.1269866 0.2272378

monomvn documentation built on Dec. 1, 2019, 1:10 a.m.