# rwish: Random draws from a Wishart (or Inverse-Wishart)... In nicheROVER: Niche Region and Niche Overlap Metrics for Multidimensional Ecological Niches

## Description

Generates a random samples from a Wishart distribution defined as W(Ψ, ν), or an Inverse-Wishart distribution defined as W^{-1}(Ψ, ν).

## Usage

 `1` ```rwish(n, Psi, nu, inv = FALSE) ```

## Arguments

 `n` Number of samples to draw. `Psi` Scale matrix. `nu` Degrees of freedom. `inv` Logical. Setting `inv = TRUE` returns random matrices from an Inverse-Wishart distribution. See 'Details'.

## Details

Setting `inv = TRUE` replaces Ψ by Psi^{-1} and inverts the output random matrices, such that they are being generated from an Inverse-Wishart W^{-1}(Ψ, ν) distribution.

## Value

Returns an array of Wishart (or Inverse-Wishart) draws of size `c(nrow(Psi),ncol(Psi),n)`.

`rniw()`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```d <- 4 # number of dimensions nu <- 7 # degrees of freedom Psi <- crossprod(matrix(rnorm(d^2), d, d)) # scale matrix n <- 1e4 Sigma <- rwish(n, Psi, nu) # for any vector a, X = (a' Sigma a) has a const * chi^2 distribution a <- rnorm(d) X <- apply(Sigma, 3, function(S) crossprod(a, S %*% a)) const <- a %*% Psi %*% a hist(X, breaks = 100, freq = FALSE, main = parse(text = "\"Histogram of \"*X==a*minute*Sigma*a"), xlab = parse(text = "X==a*minute*Sigma*a")) curve(dchisq(x/const, df = nu)/const, from = min(X), to = max(X), col = "red", add = TRUE) ```