포아송 분포와 이항 분포

포아송 분포 (Poisson distribution)



단위 시간당 평균 λ 회 랜덤하게 발생하는 현상이 단위 시간에 k 회 일어날 확률을 나타내는데 사용되는 확률 분포가 포아송 분포이다. Po (λ)로 표현되며 확률 질량 함수는 다음과 같이 주어진다.
$\begin{eqnarray*}f(x)=\frac{e^{-\lambda}\lambda^x}{x!}\end{eqnarray*}$

전화 예



1분에 1회, 즉 1시간에 60회 전화가 걸려오는 회사가 있다고 한다. 1분 또는 1시간에 x회 전화가 걸릴 확률은 어느 정도일까. 이항 분포와 함께 포아송 분포를 파이썬으로 그래프로 표시해 보자.

포아송 분포와 이항 분포
import datetime
print(str(datetime.datetime.now() ) + " 開始" )
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as sct
from scipy.misc import comb     # comb()は組み合わせを計算する関数
#日本語を使う場合はフォントを準備
from matplotlib.font_manager import FontProperties
fp = FontProperties(fname='C:\WINDOWS\Fonts\msgothic.ttc', size=14)


def poisson_pmf(k, lamb):
    ret= np.e**(-lamb)
    for i in range(k):
        ret *= lamb / (i + 1)
    return ret


plt.figure(num=1,figsize=(14,8))
j = 0
#二項分布の1分単位の試行回数。[2]なら30秒間を1回の試行として電話の事象の有無を確認する。
for n_count in [2,10]:
    p=1/n_count #1回の試行で電話の事象が起こる確率 λ=np

    #1分単位なら1回電話がかかってくるのでλ=1(回)、60分単位ならλ=60(回)
    for lam in [1,60]:
        j += 1
        n=n_count * lam

        #ポアソン分布
        x_poi = np.arange(0,100)
        y_poi=[poisson_pmf(k, lam) for k in x_poi]
        #y_poi=sct.poisson.pmf(x,lam)
        #二項分布:n回ベルヌーイ試行を繰り返してその確率を計算。試行の計算は内包表記。
        x_bin = np.arange(0,n+1)
        y_bin=[comb(n, z)*p**z*(1-p)**(n-z) for z in x_bin]

        plt.subplot(2,2,j)
        plt.xlabel('x')
        plt.ylabel('p(x)')
        plt.title("ポアソン分布と二項分布 %d分単位" %(lam), fontproperties=fp)
        plt.xlim(lam-lam**0.5*4,lam+lam**0.5*4) #範囲制限
        #ポアソンの棒グラフは左側にずらして表示する
        plt.bar(x_poi-0.4, y_poi, align="center", width=0.4, color="blue"
                ,alpha=0.5, label="Poisson λ= %d" % lam)
        plt.bar(x_bin,     y_bin, align="center", width=0.4, color="red"
                ,alpha=0.3, label="Binomial n=%d, p=%.3f" %(n,p) )
        plt.legend(loc="best", prop=fp)    #凡例を表示
        plt.grid(True)

plt.tight_layout()#一部が出力画像からはみ出る場合にグラフの位置サイズを調整
plt.savefig('figure.png')
print(str(datetime.datetime.now() ) + " 終了" )
plt.show()



4개의 어느 그래프도, 1분간에 1회의 빈도로 전화가 걸려 온다고 가정하고 있다. 그러나 오른쪽 열의 그래프 단위는 1시간이다.
상단의 그래프는 30초 동안 전화가 걸릴 확률을 0.5로 하여 이항 분포를 그렸다. 하단의 그래프는 6초 동안 전화가 걸릴 확률을 0.01로 하여 이항 분포를 묘사하고 있다.
드물게 발생하는 사건이 포아송 분포의 대상이 된다고 하는 것이 있지만, 그래프 우열의 전화 호출의 예와 같이, 단위 시간당 60회나 발생하는 랜덤한 사건에서도 포아송 분포를 따른다.
이항 분포에 있어서의 시행 회수 n이 크고 확률 p가 작을 때, 이항 분포로부터 포아송 분포를 이끌 수 있기 때문에, 「드물게 발생하는 사건」이라고 하는 표현이 사용되는 것이 많을 것이다.

좋은 웹페이지 즐겨찾기