【統計学】ポアソン分布についてわかりやすく解説

 ポアソン分布(poisson distribution)

統計学および確率論で用いられるポアソン分布とは、ある事象が一定の時間内に発生する回数を表す離散確率分布です。

定数λ>0 に対し、0 以上の整数を値にとる確率変数Xが特定の条件を満たすとき、確率変数X は母数λ のポアソン分布に従うと言います。

ポアソン分布は、現実の多くの現象をモデル化するのに適しています

例えば、1分間のWebサーバへのアクセス数や、一定期間内に起こる交通事故の数などは、ポアソン分布によってモデル化することができます。

・交通事故に遭う確率

・火事が発生する確率

などの確率分布にポアソン分布は使われます。

確率pが限りなく0に近く、観測数Nが極めて大きいことを必要としています。

このような特徴を持つ二項分布を、特にポアソン分布と呼んでいます。

数学的背景

分布関数は以下のようになります。

p(x)=λxx!eλ

x:稀な現象が起きる数。0,1,2,3,4と離散的な数です。

λ:生起率、強度(intensity)と呼ばれる。稀な現象が単位時間あたりに起きる回数の平均を表しています。

e:自然対数の底。

このポアソン分布が使われる確率過程「ポアソン過程」については以下のコンテンツでご覧ください。

[例題1]

ある町の1日あたりの交通死亡発生数はλ=1のポアソン分布に従います。次の確率を求めなさい。
(1)少なくとも一件の交通事故が発生する確率
(2)多くても一件しか発生しない確率

(1)1から交通事故が一件も起きない確率を引けば良いです。

P(x=0)=e1です。

(2)求める確率は、「多くても一件」なので、P(x<=1)=P(x=0)+P(x=1)です。
P(x=0)は(1)で求めたように、e1でした。


同じように、λ=1,x=1を分布関数に代入すると、P(x=1)=e1となります。
よって求める確率は、2e1です。


期待値と分散(expectation & variance)

結論としては、期待値も分散もλ(生起率)です。

数式で書くと、E[X]=Var(X)=λ というわけです。

[例題2]

確率変数Xがポアソン分布Po(λ)に従うとする。
(1)μ=E[X]E[X(X1)]を求めなさい。
(2)Var(X)=E[X(X1)]+μμ2になることを示し、Var(X)を求めなさい。

[解説]
(1)まず期待値は、このように0から無限大までの確率の和にxをかけてあげます。

E(X)=x=0xλxx!eλ

次に、かけたxを使ってx!(x1)!に約分してみましょう。

E(X)=x=0xλx(x1)!eλ

そして分子のλだけ外に出してあげると、λと、x0から無限大のポアソン確率の和が出来上がります。

E(X)=λx=0xλx1(x1)!eλ

全ての確率の和は1であるという、確率質量関数の定義に従い、λ1の積になり、期待値はλです。

次は、E[x(x1)]です。

やることは同じです。今度は、xでなくx(x1)をかけます。

E(X(X1))=x=0x(x1)λxx!eλ

約分をすると今度は、分子のλを2個だけΣの前に持ってくる必要があります(分子とXの数を合わせるため)

E(X(X1))=x=0λx1(x2)!eλ

よってλ2と1の積になるので、答えはλ2です。

 

(2)分散は、2乗の期待値から期待値の2乗を引いたものでした。

Var(X)=E[x2]E[x]2 でしたね。

第一項をよく見ると、(1)の形がうまく使えることに気が付きます。

E(X2)=E(X(X1))+E(X)

μ=E[X]であることから、Var(X)=E[X(X1)]+μμ2 は示されました。

あとは、計算するだけです。

Var(X)=E(X(X1))+E(X)E(X)2

(1)より、λ2+λλ2=λ となる事がわかります。

よって分散もλになります。

さて、ポアソン分布では平均と分散が等しいという性質がありますが、実データではこの仮定が成り立たないことがあります。

この現象をオーバーディスパージョンと呼び、その場合は負の二項回帰などの代替モデルを考慮する必要があります。

 


CODE

有名なポアソン分布の例を扱ってみましょう。

プロイセン騎兵連隊において1年間に馬に蹴られて死んだ兵隊の数の分布です。

死亡数012345
観測数1096522310

1年間に馬に蹴られて1人の兵士が死亡するという生起率λが0.61と知られているとしましょう。

これは、単位あたりの平均事故数と考えていただいてokです。

from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

# データの定義
deaths = [0, 1, 2, 3, 4, 5]
observations = [109, 65, 22, 3, 1, 0]

# ポアソン分布の生起率の設定
lambda_ = 0.61

# ポアソン分布に従うと仮定した場合の頻度の計算
expected_frequencies = [poisson.pmf(k, lambda_) * sum(observations) for k in deaths]

# 図示
fig, ax = plt.subplots()
ax.bar(deaths, observations, width=0.4, label='Observed', align='center')
ax.bar(np.array(deaths) + 0.4, expected_frequencies, width=0.4, label='Poisson Expected', align='center')
ax.set_xlabel('Number of Deaths')
ax.set_ylabel('Number of Occurrences')
ax.set_title('Poisson Distribution of Deaths by Horse Kicks')
ax.legend()

plt.show()

かなりポアソン分布に近いデータだということがわかりましたね!


生起率λの検定(hypothesis testing)

p(x)=λxeλ

以上のようなポアソン分布の生起率λが正の実数λ0という特定の値であるという帰無仮説を立てます。

仮説

H0(帰無仮説):λ=λ0

H1(対立仮説):λ>λ0

棄却域は以下のように設定します。

λ^λ0>C

左辺の第1項は生起率の最尤推定量です。

以下のコンテンツで解説しましたが、生起率の最尤推定量は標本平均です。

ここで検定統計量は、以下のようになります。

分散も生起率λに一致しています。

λ^λ0λ0N(0,1)

この検定統計量は標準正規分布に従います。

そのほか統計的仮説検定について学習したい方は、以下のコンテンツをご覧ください。


再生性(reproductive property)

ポアソン分布には、「再生性」という嬉しい特性があります。

再生性とは、「確率変数同士を足しても、その分布がわかる」という特性です。

命題

1:X1X2は独立

2:X1 ~ Po(λ1)

3:X2 ~ Po(λ2)

ならば、X1+X2 ~ Po(λ1+λ2)が成り立つ。

つまり、X1X2という独立した確率変数がそれぞれポアソン分布に従っている場合には、その確率変数の和自体も、生起率を(λ1λ2)とするポアソン分布に従います。

もっと汎用的な話としては、以下のようになります。

X1,X2,,XnPo(λ)で独立かつ同一の分布に従うとき、


Wn=X1+X2++Xn Po(nλ)

和の分布も当然ポアソン分布に従います。

生起率はnλです。

では、再生性があると何が嬉しいのかというと、標本平均の分布が正確にわかるということが挙げられます。

P(X=kn)=P(Wn=k)=(nλ)kk!enλ

標本平均がknになるという確率は、和がkになるという確率と同じです。

あとは、ポアソン分布の分布関数を用いると答えが求められる、という話です。

ちなみにベルヌーイ分布や正規分布にも再生性はありますので、確率変数同士を足しても分布がわかります。

詳しくは、WEB版青の統計学の記事をご覧ください。

一般線形モデルを学習したい方やポアソン分布の最尤推定量を知りたい方は以下のコンテンツをご覧ください。 

補足|ポアソンの極限定理と二項分布

ちなみにポアソン分布は、二項分布の極限としても現れます。

具体的には、試行回数nが大きくn、成功確率pが小さいときp0、二項分布Bin(n,p)はポアソン分布Po(np)に近づきます。

これは「ポアソンの極限定理」として知られています。

limn,p0P(X=k)=λkeλk!

二項分布の試行回数nと成功確率pの積、npが強度λに等しいので

np=λ,p=λn

二項分布の確率質量関数である、P(X=x)=nCxpx(1p)nxに代入してみます。

=n!x!(nx)!(λn)x(1λn)nx

(1λn)nxをn乗の部分とx乗の部分にわけて、あげると以下のように変形できます。

=1x!(11n)(1x1n)λx(1λn)n(1λn)x

ここで、nに近づけると、(1λn)n以外は10の形になり、積としては1をかけるだけになります。そしてネイピア数の公式より以下のようなことが言えます。

limn(1λn)n=limn(1λn)nλλ=eλ

よって、残ったものはeλλxx!となり、ポアソン分布の確率質量関数と一致しますね。

FOLLOW ME !