パレート分布
パレート分布 (Pareto distribution) は19世紀のイタリア経済学者 Vilfredo Pareto によって考案された確率分布である.ベキ分布 (power law probability distribution) のひとつに分類される.元々は高額所得者の所得分布を示す分布として提案された.実際の当てはまりも良く,富の8割は人口の2割によって支配されるという80:20の法則,またはパレートの法則として知られる法則を良く表現している.現在においては経済以外にも自然現象や社会現象等の様々な事例に当てはめられることが分かっており,人口集積のモデル化,ネットワーク間でやり取りされるデータ容量の分布,生物属あたりの生物種のバリエーションのモデル化等,経済学のみならず社会学から生物学まで広範な研究領域に渡って広く用いられている確率分布である.パラメーターはα (>0) およびβ (>0) であり,パレート分布は Par(α, β) にて略記される.確率密度関数は以下で与えられる.
確率変数Xの範囲は以下で与えられる.
モーメント母関数は一般には存在しない.厳密には,t ≤ 0 の範囲において存在はする.しかし,その形は積分形として定義されるのみである.ここで,Γ は第2種不完全ガンマ関数を表す.
期待値は以下で与えられる.
分散は以下の式で与えられる.
期待値および分散の導出
期待値は以下のように求める.
ここで,上式の最後の行の括弧内は -β+1<0 のとき,すなわち β>1 のときのみ発散せずに解が求まる.よって,上式はさらに以下のように変形され,以下のように期待値が求まる.
分散は,分散と期待値の間で成り立つ以下の関係式を用いて求める.
最初に,E(X2) を以下のように計算する.この場合も,期待値の場合と同様に計算が発散しないように β>1 の条件を加える.
以上の E(X2) と期待値 E(X) の値を用いて分散は以下のように求める.
当然ながら,βが1より小さいとき期待値および分散は無限大に発散し,βが2より小さいときは期待値が無限大に発散する.
パレート分布と指数分布
パレート分布と指数分布には親和性がある.確率変数Yが以下のような指数分布 e-y に従うとする.
さらに,確率変数Xが以下の式で表されるとする.
このとき,確率変数Xはパラメーターαおよびβのパレート分布に従う.
パレート分布とベキ関数分布
これとは別に,パレート分布とベキ関数分布にも関連性がある.確率変数Xがパラメーターαおよびβのパレート分布に従うとき以下の確率変数Yを考える.
この確率変数Yが従う分布がパラメーター 1/α および β のベキ関数分布 (power function distribution) となる.
確率密度関数の形状
パレート分布の確率密度関数の形状は以下のようになる.右側に長く裾を引く,右に歪んだ分布である.この右側に向かう部分のことをロングテールという.
補遺
図を生成するためのRソースコード
#!/usr/bin/env Rscript library(sads) main=function() { svg("tpd_pareto_distribution_01.svg",width=8,height=4) par(plt=c(0.2,0.9,0.2,0.9)) x=seq(0,5,0.01) plot(x,type="n",xaxs="i",yaxs="i",xlim=c(0,5),ylim=c(0,5),bty="l",xlab="",ylab="Probability density",las=1,family="Arial") x=seq(1,5,0.01) lines(x,dpareto(x,scale=1,shape=2),lty=1,lwd=1.6,col="#2b4b65") lines(x,dpareto(x,scale=1,shape=3),lty=1,lwd=1.6,col="#ff8c00") lines(x,dpareto(x,scale=1,shape=4),lty=1,lwd=1.6,col="#e12f3c") x=seq(0.5,5,0.01) lines(x,dpareto(x,scale=0.5,shape=2),lty=1,lwd=1.6,col="#00cc99") axis(side=1,at=0:6,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("Par(1, 2)","Par(1, 3)","Par(1, 4)","Par(0.5, 2)") 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()