行列ガンマ分布の規格化定数の計算方法について

多次元ガウス分布の精度行列のベイズ推論を行う際にあらわれる行列ガンマ分布:
\begin{align*}
\textrm{MGam}(\Lambda|a,B)
&= C(a,B) |\Lambda|^{a-1}\exp\{-\langle B, \Lambda\rangle\}
\end{align*}
の規格化定数
\begin{align*}
C(a,B)^{-1}
&= \int_{\Lambda\in \mathrm{Sym}_+(d)} |\Lambda|^{a-1}\exp\{-\langle B, \Lambda\rangle\}\,d\Lambda
\end{align*}
の計算方法について述べます.

計算したくなる場合: 多次元ガウス分布の精度行列のベイズ推論をしたいとき

一次元ガウス分布の精度行列のベイズ推論をする際には, 事前分布としてガンマ分布が表れました.
事前分布は正のパラメータである精度の分布であったから, 予測分布(あるいは規格化定数)を求めるために  [0,\infty) での積分を行いました.

一方, 多次元においては精度行列は一般に正定値の対称行列となり, パラメータの自由度が大きくなります.
そこで, 正定値の対称行列の値域による積分を導入し, 行列ガンマ分布を定義しましょう.

行列ガンマ分布について

 B d 次正方行列であり, 正定値対称行列とします. このとき,  d 次行列ガンマ分布を
\begin{align*}
\textrm{MGam}(\Lambda|a,B)
&= C(a,B) |\Lambda|^{a-1}\exp\{-\langle B, \Lambda\rangle\},\\
C(a,B)^{-1}
&= \int_{\Lambda\in \mathrm{Sym}_+(d)} |\Lambda|^{a-1}\exp\{-\langle B, \Lambda\rangle\}\,d\Lambda
\end{align*}
と定めます.
ここで,  |\Lambda|=\det(\Lambda ),  \langle B, \Lambda\rangle= \mathrm{tr}(B^T \Lambda) を表すこととします. *1

また,  \textrm{Sym}_+(d) d 次正方行列であって正値対称な行列の全体を表し, その積分は行列の持つ成分についての重積分を表します.
従って, 対称行列についての積分  d\Lambda は対称行列のもつ要素の自由度である  d(d+1)/2 次元の積分と一致します.

これはガンマ分布の拡張になっており, 実際に  d=1 の場合にガンマ分布と一致します.
まずは,  d=2 での積分の定義を確かめながら, 規格化定数  C(a,B)^{-1} を求めましょう.
\begin{align*}
C(a,B)^{-1}
&= \int_{\Lambda\in \mathrm{Sym}_+(d)} |\Lambda|^{a-1}\exp\{-\langle B, \Lambda\rangle\}\,d\Lambda\\
&= \int\int\int_{\{\lambda_{11}, \lambda_{11}\lambda_{22}-\lambda_{12}^2>0\}}
(\lambda_{11}\lambda_{22}-\lambda_{12}^2)^{a-1}
e^{-b_{11}\lambda_{11}-2b_{12}\lambda_{12}-b_{22}\lambda_{22}}\, d\lambda_{11}d\lambda_{12}d\lambda_{22}\\
&= \int_0^\infty \left\{ \int\int_{\{\lambda_{11}\lambda_{22}-\lambda_{12}^2,\lambda_{22} >0\}}
(\lambda_{11}\lambda_{22}-\lambda_{12}^2)^{a-1}
e^{-2b_{12}\lambda_{12}-b_{22}\lambda_{22}}\, d\lambda_{12}d\lambda_{22}\right\}e^{-b_{11}\lambda{11}}\,d\lambda_{11}.
\end{align*}
ここで,
\begin{align*}
&\int\int_{\{\lambda_{11}\lambda_{22}-\lambda_{12}^2,\lambda_{22} >0\}}
(\lambda_{11}\lambda_{22}-\lambda_{12}^2)^{a-1}
e^{-2b_{12}\lambda_{12}-b_{22}\lambda_{22}}\, d\lambda_{12}d\lambda_{22}\\
&\quad= \int_0^\infty\int_{y^2/a}^\infty (\lambda_{11}x-y^2)^{a-1}
e^{-2b_{12}y-b_{22}x}\, dxdy\\
&\quad = \int_0^\infty\int_0^\infty z^{a-1}
e^{-\frac{b_{22}}{\lambda_{11}}(z+y^2)}\, \frac{dz}{\lambda_{11}}dy\\
&\quad = \Gamma(a)b_{22}^{-(a+1/2)}\sqrt{\pi}\lambda_{11}^{a-1/2}e^{\frac{b_{12}^2}{b_{22}}\lambda_{11}}
\end{align*}
により,
\begin{align*}
C(a,B)^{-1}
&= \Gamma(a)b_{22}^{-(a+1/2)}\sqrt{\pi}\int_0^\infty \lambda_{11}^{a-1/2}e^{\frac{b_{12}^2}{b_{22}}\lambda_{11}}
e^{-b_{11}\lambda{11}}\,d\lambda_{11}\\
&=\sqrt{\pi}\Gamma(a)\Gamma(a+1/2)b_{22}^{-(a+1/2)}\left\{b_{11}-\frac{b_{12}^2}{b_{22}}\right\}^{-(a+1/2)}\\
&=\sqrt{\pi}\Gamma(a)\Gamma(a+1/2) |B|^{-(a+1/2)}
\end{align*}
を得ます.
これを一般次元に拡張しましょう. 鍵となるのはブロック行列の行列式の公式です. これは次の形で述べられます;

行列  T が正方行列  A,  D により,
\begin{equation}
T=\begin{pmatrix}
A& B\\
C& D
\end{pmatrix}
\end{equation}
と書けたとする.
このとき, 行列  A が正則ならば,  |T| = |A||D-CA^{-1}B| が成立し, 行列  D が正則ならば,  |T| = |D||A-BD^{-1}C| が成立する.

上の公式は ブロック行列の行列式,逆行列の公式と証明 | 高校数学の美しい物語 が参考になります.
このことから特に,  d 次の正定値対称行列  S
\begin{equation}
S = \begin{pmatrix}
S' & s'\\
(s')^T & s_{dd}
\end{pmatrix}
\end{equation}
と表すと,
\begin{align*}
{} |S| &= |S'|\left(s_{dd}-\langle s', (S')^{-1}s'\rangle\right) \\
&= s_{dd}\left|S' -\dfrac{s'\otimes s'}{s_{dd}}\right|
\end{align*}
が得られます.
さて, 正の実数  a>0, 正値かつ対称な  d 次正方行列  B に対して,
 d 次元での行列ガンマ分布の規格化定数  C(a,B)^{-1} を求めましょう.
\begin{align*}
C(a,B)^{-1}
&= \int_{\Lambda\in \mathrm{Sym}_+(d)} |\Lambda|^{a-1}\exp\{-\langle B, \Lambda\rangle\}\,d\Lambda\\
&= \int_{\Lambda'\in \mathrm{Sym}_+(d-1)} |\Lambda'|^{a-1}
\left\{ \int\int_{\{\lambda_{dd}|\Lambda'|-|\lambda'|^2,\lambda_{dd} >0\}}
(\lambda_{dd}-\langle\lambda', (\Lambda')\lambda'\rangle)^{a-1}
e^{-b_{dd}\lambda_{dd}-2\langle b',\lambda'\rangle}\, d\lambda'd\lambda_{dd}\right\} e^{-\langle B',\Lambda'\rangle}\,d\Lambda'.
\end{align*}
ここで,
\begin{align*}
&\int\int_{\{\lambda_{dd}|\Lambda'|-|\lambda'|^2,\lambda_{dd} >0\}}
(\lambda_{dd}-\langle\lambda', (\Lambda')\lambda'\rangle)^{a-1}
e^{-b_{dd}\lambda_{dd}-2\langle b',\lambda'\rangle}\, d\lambda'd\lambda_{dd}\\
&\quad= \int_{\mathbb{R}^{d-1}}\left\{\int_{\langle\lambda', (\Lambda')\lambda'\rangle}^\infty
(\lambda_{dd}-\langle\lambda', (\Lambda')\lambda'\rangle)^{a-1}
e^{-b_{dd}\lambda_{dd}}\, d\lambda_{dd} \right\}e^{-2\langle b',\lambda'\rangle}d\lambda'\\
&\quad= \Gamma(a)b_{dd}^{-a}
\int_{\mathbb{R}^{d-1}}
\exp\left\{-b_{dd}\langle\lambda', (\Lambda')\lambda'\rangle -2\langle b',\lambda'\rangle\right\}
\,d\lambda'\\
&\quad= \Gamma(a)b_{dd}^{-a}\left(\dfrac{\pi}{b_{dd}}\right)^\frac{d-1}{2}
|\Lambda'|^{1/2}\exp\left\{ \dfrac{\langle b',\Lambda' b'\rangle}{b_{dd}}\right\}
\end{align*}
により,
\begin{align*}
C(a,B)^{-1}
&= \Gamma(a)b_{dd}^{-a-\frac{d-1}{2}}\pi^\frac{d-1}{2}
\int_{\Lambda'\in \mathrm{Sym}_+(d-1)} |\Lambda'|^{a-1/2}
\exp\left\{-\left\langle B'-\dfrac{b'\otimes b'}{b_{dd}}, \Lambda' \right\rangle\right\}\,d\Lambda'
\end{align*}
を得ます. ブロック行列の公式
\begin{equation}
|B|=b_{dd}\left|B' -\dfrac{b'\otimes b'}{b_{dd}}\right|
\end{equation}
 \pi の指数部分を意識すると, 一般に
\begin{equation}
C(a,B)^{-1}
= |B|^{-(a-\frac{d-1}{2})}\pi^\frac{d(d-1)}{4}\prod_{k=1}^d \Gamma\left(a+\frac{d-k}{2}\right)
\end{equation}
であることがわります. 正確には帰納法を使って証明すればよいです.

*1:この記法は人によっては違和感があると思いますが, 書く量を減らすことと, 内積であることを強調する利点があります.