ディリクレ分布に関するメモ (4)

  • ????????????????????

前回はディリクレ分布にしたがう乱数を発生させてそれを可視化しましたが、乱数発生のアルゴリズムがなぜ正当化されるのかについては説明しませんでした。

今回はそのあたりについて書いてみます。前回書いたように、パラメータ \(\alpha\) をもつディリクレ分布からのサンプリング方法は以下のようになります。

  1. \(i=1,\cdots,d\) に対してシェープパラメータが \(\alpha_i\) 、スケールパラメータが1のガンマ分布を発生させる。これを \(X_i\) とする。
  2. \(X=X_1+\cdots+X_d\) として、\(Y_i=X_i/X\) としてこの \(Y\) を記録する

このように定義した \(Y_i\) がディリクレ分布に従うことを以下で証明します。

証明

\(X_1\cdots X_d\) をシェープパラメータが \(\alpha_i\) のガンマ分布に従うとします。このとき、\(X_1,\cdots,X_d\) の同時分布は
\begin{align*}f(x_1,\cdots,x_d)=C\cdot\bigg\{\prod_{i=1}^dx_i^{\alpha_i-1}\bigg\}\exp\bigg(-\sum_{i=1}^d\,x_i\bigg)\end{align*}
となります。ただし \(C\) は正規化定数です。ここで
\begin{align*}X=\sum_{i=1}^dX_i\end{align*}
と定義しておきます。\(i=1,\cdots,d-1\) に対して
\begin{align*}y_i=\frac{x_i}{x}\end{align*}
と定義して、\(y_1,\cdots,y_{d-1},x\) の同時分布を計算してみます。変数変換は
\begin{align*}
&x_i=y_ix\qquad i=1,\cdots,d-1\\
&x_d=x\bigg(1-\sum_{i=1}^{d-1}y_i\bigg)
\end{align*}
ですので、ヤコビ行列は
\begin{align*}
J=\begin{pmatrix}
x & 0 & \cdots & 0 & 0\\
0 & x & \cdots & 0 & 0\\
\vdots & \vdots & \ddots & \vdots & \vdots\\
0 & 0 & \cdots & x & 0\\
-x & -x & \cdots & -x & 1\\
\end{pmatrix}
\end{align*}
となり、ヤコビアンは
\begin{align*}\det J=x^{d-1}\end{align*}
となります。したがって \(y_1,\cdots,y_{d-1},x\) の同時分布 \(g\) は
\begin{align*}
g(y_1,\cdots,y_{d-1},x)&=f(x_1,\cdots,x_d)\|\det J\|\\
&=C\cdot\bigg\{\prod_{i=1}^{d-1}y_i^{\alpha_i-1}\bigg\}\bigg(1-\sum_{i=1}^{d-1}y_i\bigg)^{\alpha_d-1}x^{\sum_{i=1}^d\alpha_i-d}\exp(-x)x^{d-1}\\
&=C\cdot\bigg\{\prod_{i=1}^{d-1}y_i^{\alpha_i-1}\bigg\}\bigg(1-\sum_{i=1}^{d-1}y_i\bigg)^{\alpha_d-1}\times x^{A-1}\exp(-x)
\end{align*}
となります。ただし、\(A=\sum\alpha_i\) です。ここから \(y_1,\cdots,y_{d-1}\) と \(x\) が独立なことがわかります。\(y_1,\cdots,y_{d-1}\) についての分布は
\begin{align*}h(y_1,\cdots,y_{d-1})\propto\bigg\{\prod_{i=1}^{d-1}y_i^{\alpha_i-1}\bigg\}\bigg(1-\sum_{i=1}^{d-1}y_i\bigg)^{\alpha_d-1}\end{align*}
です。これはディリクレ分布そのものです。(証明終わり)

まとめ

独立なガンマ分布を正規化するという変数変換を施すことでディリクレ分布に従うことを示しました。個人的にはこれで安心して乱数を発生させることができるようになりました。

はてなブックマーク - ディリクレ分布に関するメモ (4)
Pocket