Learn R Programming

LaplacesDemon (version 16.1.0)

dist.Inverse.Wishart.Cholesky: Inverse Wishart Distribution: Cholesky Parameterization

Description

These functions provide the density and random number generation for the inverse Wishart distribution with the Cholesky parameterization.

Usage

dinvwishartc(U, nu, S, log=FALSE)
   rinvwishartc(nu, S)

Arguments

U

This is the upper-triangular \(k \times k\) matrix for the Cholesky factor \(\textbf{U}\) of covariance matrix \(\Sigma\).

nu

This is the scalar degrees of freedom, \(\nu\).

S

This is the symmetric, positive-semidefinite \(k \times k\) scale matrix \(\textbf{S}\).

log

Logical. If log=TRUE, then the logarithm of the density is returned.

Value

dinvwishartc gives the density and rinvwishartc generates random deviates.

Details

  • Application: Continuous Multivariate

  • Density: \(p(\theta) = (2^{\nu k/2} \pi^{k(k-1)/4} \prod^k_{i=1} \Gamma(\frac{\nu+1-i}{2}))^{-1} |\textbf{S}|^{nu/2} |\Omega|^{-(nu-k-1)/2} \exp(-\frac{1}{2} tr(\textbf{S} \Omega^{-1}))\)

  • Inventor: John Wishart (1928)

  • Notation 1: \(\Sigma \sim \mathcal{W}^{-1}_{\nu}(\textbf{S}^{-1})\)

  • Notation 2: \(p(\Sigma) = \mathcal{W}^{-1}_{\nu}(\Sigma | \textbf{S}^{-1})\)

  • Parameter 1: degrees of freedom \(\nu\)

  • Parameter 2: symmetric, positive-semidefinite \(k \times k\) scale matrix \(\textbf{S}\)

  • Mean: \(E(\Sigma) = \frac{\textbf{S}}{\nu - k - 1}\)

  • Variance:

  • Mode: \(mode(\Sigma) = \frac{\textbf{S}}{\nu + k + 1}\)

The inverse Wishart distribution is a probability distribution defined on real-valued, symmetric, positive-definite matrices, and is used as the conjugate prior for the covariance matrix, \(\Sigma\), of a multivariate normal distribution. In this parameterization, \(\Sigma\) has been decomposed to the upper-triangular Cholesky factor \(\textbf{U}\), as per chol. The inverse-Wishart density is always finite, and the integral is always finite. A degenerate form occurs when \(\nu < k\).

In practice, \(\textbf{U}\) is fully unconstrained for proposals when its diagonal is log-transformed. The diagonal is exponentiated after a proposal and before other calculations. Overall, the Cholesky parameterization is faster than the traditional parameterization. Compared with dinvwishart, dinvwishartc must additionally matrix-multiply the Cholesky back to the covariance matrix, but it does not have to check for or correct the covariance matrix to positive-semidefiniteness, which overall is slower. Compared with rinvwishart, rinvwishartc must additionally calculate a Cholesky decomposition, and is therefore slower.

The inverse Wishart prior lacks flexibility, having only one parameter, \(\nu\), to control the variability for all \(k(k + 1)/2\) elements. Popular choices for the scale matrix \(\textbf{S}\) include an identity matrix or sample covariance matrix. When the model sample size is small, the specification of the scale matrix can be influential.

The inverse Wishart distribution has a dependency between variance and correlation, although its relative for a precision matrix (inverse covariance matrix), the Wishart distribution, does not have this dependency. This relationship becomes weaker with more degrees of freedom.

Due to these limitations (lack of flexibility, and dependence between variance and correlation), alternative distributions have been developed. Alternative distributions that are available here include the inverse matrix gamma (dinvmatrixgamma), Scaled Inverse Wishart (dsiw) and Huang-Wand (dhuangwand). Huang-Wand is recommended.

References

Wishart, J. (1928). "The Generalised Product Moment Distribution in Samples from a Normal Multivariate Population". Biometrika, 20A(1-2), p. 32--52.

See Also

chol, Cov2Prec, dhuangwand, dinvmatrixgamma, dmvn, dmvnc, dmvtc, dsiw, dwishart, dwishartc, and dyangbergerc.

Examples

Run this code
# NOT RUN {
library(LaplacesDemon)
Sigma <- matrix(c(2,-.3,-.3,4),2,2)
U <- chol(Sigma)
x <- dinvwishartc(U, 3, matrix(c(1,.1,.1,1),2,2))
x <- rinvwishartc(3, matrix(c(1,.1,.1,1),2,2))
# }

Run the code above in your browser using DataLab