Generate n random matrices, distributed according to the inverse Wishart distribution with parameters Sigma and df, \(W_p(Sigma, df)\).

Note there are different ways of parameterizing the Inverse Wishart distribution, so check which one you need. Here, if \(X \sim IW_p(\Sigma, \nu)\) then \(X^{-1} \sim W_p(\Sigma^{-1}, \nu)\). Dawid (1981) has a different definition: if \(X \sim W_p(\Sigma^{-1}, \nu)\) and \(\nu > p - 1\), then \(X^{-1} = Y \sim IW(\Sigma, \delta)\), where \(\delta = \nu - p + 1\).

rInvWishart(n, df, Sigma)

Arguments

n

integer sample size.

df

numeric parameter, "degrees of freedom".

Sigma

positive definite \(p \times p\) "scale" matrix, the matrix parameter of the distribution.

Value

a numeric array, say R, of dimension \(p \times p \times n\), where each R[,,i] is a realization of the inverse Wishart distribution \(IW_p(Sigma, df)\). Based on a modification of the existing code for the rWishart function.

References

Dawid, A. (1981). Some Matrix-Variate Distribution Theory: Notational Considerations and a Bayesian Application. Biometrika, 68(1), 265-274. doi: 10.2307/2335827

Gupta, A. K. and D. K. Nagar (1999). Matrix variate distributions. Chapman and Hall.

Mardia, K. V., J. T. Kent, and J. M. Bibby (1979) Multivariate Analysis, London: Academic Press.

See also

Examples

set.seed(20180221)
A <- rInvWishart(1L, 10, 5 * diag(5L))[, , 1]
set.seed(20180221)
B <- stats::rWishart(1L, 10, .2 * diag(5L))[, , 1]

A %*% B
#>               [,1]         [,2]          [,3]          [,4]         [,5]
#> [1,]  1.000000e+00 3.816392e-17  1.110223e-16  2.116363e-16 5.551115e-17
#> [2,] -9.020562e-17 1.000000e+00 -5.551115e-17  1.249001e-16 1.387779e-17
#> [3,] -5.551115e-17 0.000000e+00  1.000000e+00 -1.665335e-16 0.000000e+00
#> [4,] -5.551115e-17 2.220446e-16  0.000000e+00  1.000000e+00 0.000000e+00
#> [5,]  2.220446e-16 2.220446e-16  0.000000e+00  2.220446e-16 1.000000e+00