Learn R Programming

dlm (version 1.1-6)

rwishart: Random Wishart matrix

Description

Generate a draw from a Wishart distribution.

Usage

rwishart(df, p = nrow(SqrtSigma), Sigma, SqrtSigma = diag(p))

Value

The function returns one draw from the Wishart distribution with

df degrees of freedom and matrix parameter Sigma or

crossprod(SqrtSigma)

Arguments

df

degrees of freedom. It has to be integer.

p

dimension of the matrix to simulate.

Sigma

the matrix parameter Sigma of the Wishart distribution.

SqrtSigma

a square root of the matrix parameter Sigma of the Wishart distribution. Sigma must be equal to crossprod(SqrtSigma).

Author

Giovanni Petris GPetris@uark.edu

Warning

The function only works for an integer number of degrees of freedom.

Details

The Wishart is a distribution on the set of nonnegative definite symmetric matrices. Its density is $$p(W) = \frac{c |W|^{(n-p-1)/2}}{|\Sigma|^{n/2}} \exp\left\{-\frac{1}{2}\mathrm{tr}(\Sigma^{-1}W)\right\}$$ where \(n\) is the degrees of freedom parameter df and \(c\) is a normalizing constant. The mean of the Wishart distribution is \(n\Sigma\) and the variance of an entry is $$\mathrm{Var}(W_{ij}) = n (\Sigma_{ij}^2 + \Sigma_{ii}\Sigma_{jj})$$ The matrix parameter, which should be a positive definite symmetric matrix, can be specified via either the argument Sigma or SqrtSigma. If Sigma is specified, then SqrtSigma is ignored. No checks are made for symmetry and positive definiteness of Sigma.

References

Press (1982). Applied multivariate analysis.

Examples

Run this code
rwishart(25, p = 3)
a <- matrix(rnorm(9), 3)
rwishart(30, SqrtSigma = a)
b <- crossprod(a)
rwishart(30, Sigma = b)

Run the code above in your browser using DataLab