ベータ分布
ベータ分布 (beta distribution) は連続確率分布のひとつである.順序統計量との関わりが深い.順序統計量とは,ランダムな標本値を昇順に並べ替えたときの一連の標本値の集合のことである.ここで,ベータ分布とは,互いに独立に同一の連続一様分布 U(0, 1) に従う α+β-1 個の確率変数Xi (1< i < α+β-1) において α 番目に小さい確率変数Xα (α番目の順序統計量) が従う確率分布である.ベータ分布のパラメーターは α (>0) および β (>0) であるが,このパラメーターを変えることで,様々な形状の確率密度を表現できる.そのため,対象の事象に対して恣意的に確率モデルを立てたいときに利用できる.そのような性質から,ベイズ統計学においては事前分布のモデル分布として多用される.ベータ分布は Be(α, β) にて略記され,確率密度関数は以下で与えられる.以下の数式における分母の B はベータ関数を示す.
確率変数Xの範囲は以下で与えられる.
モーメント母関数は存在するが複雑な形状をしており,実用的な観点からは有用ではない.期待値は以下で与えられる.
分散は以下の式で与えられる.
期待値および分散の導出
期待値は定義式を用いて以下のように求められる.
ここで,$\alpha$ を $a-1$ にて置換する.これにより,上式は以下のように変形される.
以上のように変形された式について,ベータ関数の変換公式を用いる.ベータ関数の変換公式とは以下のようなものである.
以上の公式を用いて上式を変形させると以下のようになる.
ここで,上式における積分形はまさにベータ分布の確率密度関数を確率変数の全範囲に対して積分したものであるのでその値は 1 となる.よって,上式は以下のように変形される.
最後に,上で置換した $\alpha=a-1$ にて置換しなおすことで以下のように期待値が得られる.
分散は,以下の期待値と分散の間に成り立つ関係式を利用して求めることができる.
最初に,原点まわりの2次のモーメント E(X2) を求める.
ここで,$\alpha+1=a-1$ の置換を行うと以上の式は以下のように変形される.
上式の分母のベータ関数も,期待値の計算の場合と同じように,ベータ関数の変換公式を用いることで以下のように変形させることが出来る.
以上より,上式はさらに以下のように変形される.
上の式の積分形はまさにベータ分布の確率密度関数を確率変数の全範囲に対して積分したものであるのでその値は 1 となる.よって,さらに以下のように変形される.
ここで,上で置換した $\alpha+1=a-1$ にて再置換して変数を $\alpha$ に戻すことで以下の原点まわりの2次モーメント E(X2) が得られる.
以上と上で求めた期待値 E(X) を用いて,分散は以下のように計算される.
ベータ分布と連続一様分布
連続一様分布はベータ分布の特別な場合である.ベータ分布において,パラメーター α および β がそれぞれ 1 であるとき確率密度関数は以下のようになる.これはまさに連続一様分布の確率密度関数である.
ここで確率変数の範囲を区間[a, b]とし,1/(b-a) にて規格化すると,xが区間[a, b]において一様な生起確率を示す一様分布が得られる.
このとき,平均値と分散は以下で与えられる.
確率密度関数の形状
ベータ分布の確率密度関数の形状には特徴がある.パラメーター α および β の Be(α, β) とパラメーター β および α の Be(β, α) の確率密度関数の形状は X=0.5 を中心に対象となる.2つのパラメーターが互いに等しい場合は X=0.5 を中心に左右対称の形状になる.
補遺
図を生成するためのRソースコード
#!/usr/bin/env Rscript main=function() { svg("tpd_beta_distribution_01.svg",width=8,height=4) par(plt=c(0.2,0.9,0.2,0.9)) x=seq(0,1,0.01) plot(x,type="n",xaxs="i",yaxs="i",xlim=c(0,1),ylim=c(0,5),bty="l",xlab="",ylab="Probability density",las=1,family="Arial") lines(x,dbeta(x,shape1=9,shape2=3),lty=1,lwd=1.6,col="#2b4b65") lines(x,dbeta(x,shape1=3,shape2=9),lty=1,lwd=1.6,col="#ff8c00") lines(x,dbeta(x,shape1=5,shape2=2),lty=1,lwd=1.6,col="#e12f3c") lines(x,dbeta(x,shape1=2,shape2=5),lty=1,lwd=1.6,col="#00cc99") lines(x,dbeta(x,shape1=7,shape2=7),lty=1,lwd=1.6,col="#946457") axis(side=1,at=seq(0,1,0.2),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("Be(9, 3)","Be(3, 9)","Be(5, 2)","Be(2, 5)","Be(7, 7)") legend("topright",legend=labels,lty=1,lwd=1.6,col=c("#2b4b65","#ff8c00","#e12f3c","#00cc99","#946457"),cex=0.8,bg="#ffffff",box.lty=3) dev.off() } main()