ガンマ分布
ガンマ分布 (gamma distribution) は連続確率分布のひとつであり,指数分布を一般化した分布といえる.応用の範囲は広く,様々な研究分野で汎用的に用いられている.身近なところでは,ヒトの体重の分布がガンマ分布に従うことが知られている.経済学においては,保険金の支払額のモデル化に,生物学においては,ウイルスの潜伏期間のモデル化やタンパク質の特定の残基位置における置換頻度のモデル化等に用いられる.例えば,ガンマ分布のパラメーターのひとつを変化させることはアミノ酸や核酸の進化速度のばらつきを変化させることと等しい.また,工学においては電子部品の寿命のモデル化にガンマ分布を用いることがある.指数分布をある事象が起きるまでの待ち時間分布として考えるなら,ガンマ分布は,その発生率が 1/β で与えられる事象が複数回 (α回) 起きるまでの待ち時間分布と考えることができる.パラメーターはα (>0) およびβ (>0) であり,ガンマ分布は Ga(α, β) にて略記される.この母数 α が整数のときの分布を特にアーラン分布と呼ぶ.確率密度関数は以下で与えられる.以下の分母の Γ はガンマ関数を意味する.
確率変数Xの範囲は以下で与えられる.
モーメント母関数は以下で与えられる.ガンマ分布のモーメント母関数は α=1 のとき,指数分布のモーメント母関数と等しくなる.
期待値は以下で与えられる.期待値は指数分布における期待値において 1/λ=β とし,α を掛けた値に等しい.
分散は以下の式で与えられる.分散も期待値の場合同様,指数分布における分散において 1/λ=β とし,α を掛けた値に等しい.
モーメント母関数,期待値および分散の導出
モーメント母関数は以下のように求める.
ここで,(1/β-t) を 1/b で置換し,以下のように整理する.ここで,(1/β-t) は (1/β-t)>0 を満たす値とする.
上式の積分形はまさにガンマ分布の確率密度関数の全範囲における積分と等しい.そのため,この積分を実行した値は1になる.よって,上式は以下のように変形される.
最後に上で置換した b と β の関係を b=β/(1-βt) を代入することで元に戻すことで,以下のモーメント母関数が得られる.
期待値および分散はモーメントを利用して求める.まず,モーメント母関数の1階および2階微分は以下のようになる.
以上より,原点まわりの1次および2次のモーメントは以下のようになる.
よって,期待値は原点まわりの1次モーメントより以下のように求まる.
また,分散は分散と期待値の間で成り立つ以下の関係式を用いて求める.
ガンマ分布と指数分布
指数分布はガンマ分布の特別な場合のひとつである.Ga(1, β) の確率密度関数は以下のように表される.
これはまさに指数分布の確率密度関数と等しい.
ガンマ分布とカイ二乗分布
カイ二乗分布はガンマ分布の特別な形である.以下のように,自由度 k のカイ二乗分布は α=k/2 および β=2 のガンマ分布と等しい.
ガンマ分布とベータ分布
互いに独立な確率変数XおよびYが以下のようなガンマ分布に従うとする.
このとき,確率変数 X/(X+Y) は以下のベータ分布に従う.
再生性
他の多くの確率分布同様,ガンマ分にも再生性がある.互いに独立な確率変数XおよびYが以下のガンマ分布に従うとする.
このとき,確率変数の和 X+Y は以下のガンマ分布に従う.以下の性質は確率変数が増えても一般に成り立つ.
確率密度関数の形状
ガンマ分布の確率密度関数の形状は以下のようになる.
補遺
図を生成するためのRソースコード
#!/usr/bin/env Rscript main=function() { svg("tpd_gamma_distribution_01.svg",width=8,height=4) par(plt=c(0.2,0.9,0.2,0.9)) x=seq(0,20,0.01) plot(x,type="n",xaxs="i",yaxs="i",xlim=c(0,20),ylim=c(0,1),bty="l",xlab="",ylab="Probability density",las=1,family="Arial") lines(x,dgamma(x,shape=1,scale=1),lty=1,lwd=1.6,col="#2b4b65") lines(x,dgamma(x,shape=3,scale=1),lty=1,lwd=1.6,col="#ff8c00") lines(x,dgamma(x,shape=1,scale=3),lty=1,lwd=1.6,col="#e12f3c") lines(x,dgamma(x,shape=3,scale=3),lty=1,lwd=1.6,col="#00cc99") axis(side=1,at=0:20,tck=1.0,lty="dotted",lwd=0.5,labels=NA) axis(side=2,tck=1.0,lty="dotted",lwd=0.5,labels=NA) labels=c("Ga(1, 1)","Ga(3, 1)","Ga(1, 3)","Ga(3, 3)") legend("topright",legend=labels,lty=1,lwd=1.6,col=c("#2b4b65","#ff8c00","#e12f3c","#00cc99"),cex=0.8,bg="#ffffff",box.lty=3) dev.off() } main()