randmvn: Randomly Generate a Multivariate Normal Distribution

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


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


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)



number of samples to draw


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


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


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


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


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


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


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


The return value is a list with the following components:


randomly generated mean vector of length d


randomly generated covariance matrix with d rows and d columns


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


requires the rmvnorm function of the mvtnorm package


Robert B. Gramacy rbg@vt.edu

See Also

rwish, rmvnorm, rmono


randmvn(5, 3)

Example output

Loading required package: pls

Attaching package: 'pls'

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


Loading required package: lars
Loaded lars 1.2

Loading required package: MASS
           [,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

[1]  0.4798136 -0.4853351  0.1373202

          [,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.