Zenn
🟠

ベイジアンブートストラップ

に公開

はじめに

今回は大規模計算時代の統計推論10.3のベイズ的ブートストラップについて説明していきます。

問題

G1,G2,...,Gn i.i.d. Gam(1,1)G_1,G_2,...,G_n \text{ i.i.d. } \text{Gam}(1,1)のとき

P=(G1,G2,...,Gn)/i=1nGi(10.44) \bm P^*=(G_1,G_2,...,G_n)'\bigg/\sum_{i=1}^nG_i \tag{10.44}

この式の平均と共分散行列を求める。

P0=(1/n,...,1/n)\bm P_0=(1/n,...,1/n)' とする。

P[P0,1n+1(diag(P0)P0P0)](10.45) \bm P^*\sim \left[\bm P_0 , \frac{1}{n+1}(\text{diag}(\bm P_0)-\bm P_0 \bm P_0' )\right]\tag{10.45}

これを解く鍵は、ガンマ分布とディリクレ分布の関係を理解すること。

準備

必要な知識を先にまとめておく。

ガンマ分布

XGam(a,b)のときf(x)=1Γ(a)baxa1ex/b,x>0 X \sim \text{Gam}(a,b) のとき\\ f(x) = \frac{1}{\Gamma(a)b^a}x^{a-1}e^{-x/b} \hspace{5pt},\hspace{5pt} x>0

ディリクレ分布

パラメータを α=(α1,...,αn)\bm{\alpha}=(\alpha_1,...,\alpha_n) , 確率変数を x=(x1,...,xn)\bm x = (x_1,...,x_n)とするとき

f(x;α)=Γ(i=1nαi)i=1nΓ(αi)i=1nxiαi1,xi0,i=1nxi=1 f(\bm x ; \bm \alpha)=\frac{\Gamma({\sum_{i=1}^n}\alpha_i)}{\prod_{i=1}^n \Gamma(\alpha_i)}\prod_{i=1}^nx_i^{\alpha_i-1} \hspace{5pt},\hspace{5pt} x_i≥0 \hspace{5pt},\hspace{5pt}\sum_{i=1}^nx_i=1

証明

一般的に考えるために次にようなものを考える。記号も変えているので注意。

XiGam(αi,1)Yi=Xij=1nXj,i=1nYi=1 \begin{align*} X_i &\sim \text{Gam}(\alpha_i,1)\\ Y_i &=\frac{X_i}{\sum_{j=1}^nX_j}\hspace{5pt},\hspace{5pt}\sum_{i=1}^nY_i=1 \end{align*}

こうするとP=(Y1,...,Yn)P^*=(Y_1,...,Y_n)である。

データは次のように書ける。

yi=xij=1nxj,i=1nyi=1 y_i=\frac{x_i}{\sum_{j=1}^nx_j} \hspace{5pt},\hspace{5pt}\sum_{i=1}^ny_i=1

逆変換を考えると、

xi=yij=1nxj=yiz,z=j=1nxj x_i=y_i\sum_{j=1}^n x_j = y_iz \hspace{5pt},\hspace{5pt}z=\sum_{j=1}^nx_j

ヤコビアンを考える

J=x1/y1x1/yn1x1/zxn1/y1xn1/yn1xn1/zxn/y1xn/yn1xn/z=z  y100zyn1zzyn=zy100zyn1001=zn1 \begin{align*} J &= \left|\begin{matrix}\partial x_1 / \partial y_1 & \cdots &\partial x_1/ \partial y_{n-1} & \partial x_1 / \partial z\\ & \vdots\\ \partial x_{n-1} / \partial y_1 & \cdots &\partial x_{n-1}/ \partial y_{n-1} & \partial x_{n-1} / \partial z\\ \partial x_n / \partial y_1 & \cdots &\partial x_n/ \partial y_{n-1} & \partial x_n / \partial z \end{matrix} \right| \\ &=\left|\begin{matrix} z &   &   & & y_1\\ & \ddots & \text{\huge{0}} \\ & \text{\huge{0}} & \ddots & & \vdots \\ & & & z & y_{n-1}\\ -z & \cdots & \cdots & -z & y_n \end{matrix} \right| \\ &= \left|\begin{matrix} z & & & & y_1\\ & \ddots & \text{\huge{0}}& \\ & \text{\huge{0}} & \ddots & & \vdots\\ & & & z & y_{n-1}\\ 0 & &\cdots & 0 & 1 \end{matrix} \right| \\ & = z^{n-1} \end{align*}

z0z≥ 0 よりJ=zn1|J|=z^{n-1} である。

次に、 y1,...,yn1y_1,...,y_{n-1} の同時確率密度関数を計算する。周辺化とガンマ分布を使って次のように計算できる。

f(y1,...,yn1)=0f(y1,...,yn1,z)dz=0i=1n{1Γ(αi)(yiz)αi1eyiz}zn1dz=1Γ(α1)Γ(αn)i=1nyiαi10zi=1nαinezi=1nyizn1dz=1Γ(α1)Γ(αn)i=1nyiαi10zi=1nαi1ezdz=Γ(i=1nαi)Γ(α1)Γ(αn)i=1nyiαi1 \begin{align*} f(y_1,...,y_{n-1}) &= \int_0^{\infty} f(y_1,...,y_{n-1},z) dz\\ &= \int_0^{\infty} \prod_{i=1}^{n}\left\{\frac{1}{\Gamma(\alpha_i)}(y_iz)^{\alpha_i-1} e^{-y_i z} \right\} z^{n-1} dz\\ &= \frac{1}{\Gamma(\alpha_1)\cdots \Gamma(\alpha_n)}\prod_{i=1}^n y_i^{\alpha_i-1} \int_0^{\infty} z^{\sum_{i=1}^n \alpha_i-n }e^{z\sum_{i=1}^ny_i} z^{n-1} dz\\ &= \frac{1}{\Gamma(\alpha_1)\cdots \Gamma(\alpha_n)}\prod_{i=1}^n y_i^{\alpha_i-1} \int_0^{\infty} z^{\sum_{i=1}^n \alpha_i-1}e^{z} dz\\ &= \frac{\Gamma(\sum_{i=1}^n \alpha_i)}{\Gamma(\alpha_1)\cdots \Gamma(\alpha_n)}\prod_{i=1}^n y_i^{\alpha_i-1} \end{align*}

よって y1,...,yn1y_1,...,y_{n-1} はディリクレ分布に従うことがわかる。

したがって式(10.45)を求めるには、ディリクレ分布の期待値と共分散行列を求めれば良いことがわかった。

期待値は

E[Yi]=αii=1nαi(1) E[Y_i]=\frac{\alpha_i}{\sum_{i=1}^n\alpha_i} \tag{1}

分散は

Var[Yi]=αi(i=1nαiαi)(i=1nαi+1)(i=1nαi)2(2) Var[Y_i]=\frac{\alpha_i(\sum_{i=1}^n\alpha_i-\alpha_i)}{(\sum_{i=1}^n \alpha_i+1)(\sum_{i=1}^n \alpha_i)^2} \tag{2}

共分散は

Cov[Yi,Yj]=αiαj(i=1nαi)2(i=1nαi+1)(3) Cov[Y_i,Y_j] = -\frac{\alpha_i\alpha_j}{(\sum_{i=1}^n \alpha_i)^2(\sum_{i=1}^n \alpha_i+1)} \tag{3}

α=(1,...,1)\bm \alpha=(1,...,1) のとき

(1)(1)よりP=(P1,...,Pn)\bm P^*=(P_1^*,...,P_n^*)' の期待値は

E[Pi]=1/n E[P_i^*]= 1/n

よって

E[P]=P0(4) E[\bm P^*]=\bm P_0 \tag{4}

(2),(3)(2),(3)よりP\bm P^* の共分散行列は

Var[Pi]=n1(n+1)n2,Cov[Pi,Pj]=1(n+1)n2 \begin{align*} Var[P_i^*]=\frac{n-1}{(n+1)n^2} \hspace{5pt},\hspace{5pt} Cov[P_i^*,P_j^*]= - \frac{1}{(n+1)n^2} \end{align*}

よって

Var[P]=1n+1(diag(P0)P0P0)(5) Var[\bm P^*]= \frac{1}{n+1} (\text{diag}(\bm P_0)-\bm P_0 \bm P_0') \tag{5}

よって示すことができた。

参考文献

  • B.エフロン,T.J.ヘイスティ(2020)『大規模計算時代の統計推論: 原理と発展』 藤澤洋徳・井手剛監訳 (共立出版)
  • ディリクレ分布の期待値,分散,共分散の導出

https://zenn.dev/totopironote/articles/b819785d547d14

Discussion

ログインするとコメントできます