# randmvn: Randomly Generate a Multivariate Normal Distribution In monomvn: Estimation for MVN and Student-t Data with Monotone Missingness

## 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

`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':

\$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.