These functions provide the density and random number generation for the Wishart distribution with the Cholesky parameterization.
dwishartc(U, nu, S, log=FALSE)
rwishartc(nu, S)
This is the upper-triangular \(k \times k\) matrix for the Cholesky factor \(\textbf{U}\) of precision matrix \(\Omega\).
This is the scalar degrees of freedom \(\nu\).
This is the symmetric, positive-semidefinite, \(k \times k\) scale matrix \(\textbf{S}\).
Logical. If log=TRUE
, then the logarithm of the
density is returned.
dwishartc
gives the density and
rwishartc
generates random deviates.
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}^{-1} \Omega))\)
Inventor: John Wishart (1928)
Notation 1: \(\Omega \sim \mathcal{W}_{\nu}(\textbf{S})\)
Notation 2: \(p(\Omega) = \mathcal{W}_{\nu}(\Omega | \textbf{S})\)
Parameter 1: degrees of freedom \(\nu \ge k\)
Parameter 2: symmetric, positive-semidefinite \(k \times k\) scale matrix \(\textbf{S}\)
Mean: \(E(\Omega) = \nu \textbf{S}\)
Variance: \(var(\Omega) = \nu (\textbf{S}^2_{i,j} + \textbf{S}_{i,i} \textbf{S}_{j,j})\)
Mode: \(mode(\Omega) = (\nu - k - 1) \textbf{S}\), for \(\nu \ge k + 1\)
The Wishart distribution is a generalization to multiple dimensions of the chi-square distribution, or, in the case of non-integer degrees of freedom, of the gamma distribution. However, the Wishart distribution is not called the multivariate chi-squared distribution because the marginal distribution of the off-diagonal elements is not chi-squared.
The Wishart is the conjugate prior distribution for the precision matrix
\(\Omega\), the inverse of which (covariance matrix
\(\Sigma\)) is used in a multivariate normal distribution. In
this parameterization, \(\Omega\) has been decomposed to the
upper-triangular Cholesky factor \(\textbf{U}\), as per
chol
.
The integral is finite when \(\nu \ge k\), where \(\nu\) is the scalar degrees of freedom parameter, and \(k\) is the dimension of scale matrix \(\textbf{S}\). The density is finite when \(\nu ge k + 1\), which is recommended.
The degrees of freedom, \(\nu\), is equivalent to specifying a prior sample size, indicating the confidence in \(\textbf{S}\), where \(\textbf{S}\) is a prior guess at the order of covariance matrix \(\Sigma\). A flat prior distribution is obtained as \(\nu \rightarrow 0\).
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 dwishart
, dwishartc
must additionally matrix-multiply the Cholesky back to the precision
matrix, but it does not have to check for or correct the precision
matrix to positive-semidefiniteness, which overall is slower. Compared
with rwishart
, rwishartc
must additionally
calculate a Cholesky decomposition, and is therefore slower.
The 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.
Although the related inverse Wishart distribution has a dependency between variance and correlation, the Wishart distribution does not have this dependency.
The matrix gamma (dmatrixgamma
) distribution is a more
general version of the Wishart distribution, and the Yang-Berger
(dyangberger
) distribution is an alterative that is a
least informative prior (LIP).
Wishart, J. (1928). "The Generalised Product Moment Distribution in Samples from a Normal Multivariate Population". Biometrika, 20A(1-2), p. 32--52.
chol
,
dchisq
,
dgamma
,
dinvwishart
,
dinvwishartc
,
dmatrixgamma
,
dmvnp
,
dmvnpc
,
Prec2Cov
, and
dyangbergerc
.
# NOT RUN {
library(LaplacesDemon)
Omega <- matrix(c(2,-.3,-.3,4),2,2)
U <- chol(Omega)
x <- dwishartc(U, 3, matrix(c(1,.1,.1,1),2,2))
x <- rwishartc(3, matrix(c(1,.1,.1,1),2,2))
# }
Run the code above in your browser using DataLab