Statistics/Concepts(+codes)

distribution》poisson distribution (포아송분포)

metamong 2022. 5. 6.

* 이항분포 특성이나 개형이 비슷한 포아송 분포에 대해서 알아보자!

 

 

distribution》binomial distribution (이항분포)

* 확률분포 여태까지 총 3개에 대해서 배웠다 (z-분포 포함) 🎄 student's t-distribution distribution≫ Student's t-distribution (in-depth) ✋ 통계에 있어서 빼먹지 않아야 할, 무조건 숙지해야 할 '통계분..

sh-avid-learner.tistory.com

concepts>

 

👑 어떤 단위공간에 내가 관심있는 사건이 몇 번 발생했는 가를 알고 싶을 떄 모델링하기 위해서 주로 활용

 

👑 주로 단위공간에서 우리가 관심있어하는 사건이 발생할 가능성이 희박한 경우 - 발생횟수를 모델링할 때 포아송 분포가 유용하게 사용

 

👑 확률질량함수 (이산형 - x가 0이상의 정수이다 - 발생횟수이므로!)

$$f(x) = P(X=x) = {exp(-m)m^x}/x!$$

$$(x= 0,1,2,...)$$

 

👑 확률변수 X = 단위시간(부피, 단위, 어떤 한정된 물리적인 공간 - t=1)에 포아송 확률과정을 따르는 사건 A가 발생하는 횟수

👑 f(x) = 해당 확률변수 X번 발생할 확률

 

👑 X~POI[m]

일한 모수는 m = '평균적으로 발생한 횟수'

E[X] = V[X] = m (유일한 모수가 기댓값이자 분산이 되는 특이한 분포!)

 

👑 위에서 언급했듯이 포아송 분포는 관심사건 발생 가능성이 희박할 때 모델링하는 경우이므로 대체적으로 포아송 분포는 왼쪽으로 치우친 개형을 보임!

 

- 역시 아래 λ(모수 m)가 증가함에 따라 평균 발생횟수가 증가하므로 오른쪽으로 점점 치우치는 개형을 보인다 -

(아래 시각화 code로 증명해보자)

 

 

예시>

Q. 고속도로에서 하루동안 대형교통사고가 나는 횟수를 포아송분포를 이용해 예측해보자. 평균적으로 2번(m=2) 발생한다고 하면, 하루 3번 대형교통사고가 발생할 확률은 얼마일까?

 

A.

① 고속도로라는 한정된 물리적 공간 + 사고나는 event는 희박하므로 두 조건에 의해 포아송분포를 이용한 계산을 적용할 수 있다

② 주어진 m=2를 이용해 확률질량함수식을 만들 수 있다

$$e^{-2}*2^x/x!$$

x=3을 대입하면 하루 3번 대형교통사고가 발생할 확률은 (4/3e^2)이다

w/code

🤸🏻‍♀️ numpy.random.poisson 🤸🏻‍♀️

https://numpy.org/doc/stable/reference/random/generated/numpy.random.poisson.html

 

random.poisson(lam=1.0, size=None)

 

'Draw samples from a Poisson distribution. The Poisson distribution is the limit of the binomial distribution for large N'

 

→ 이항분포와 더불어 포아송분포 역시 모수 lam으로만 포아송분포를 만들고 난 뒤, sampling하는 함수이다

→ 뽑은 sample인 확률변수 X가 numpy array형태로 return된다

 

Q. 모수 2를 따르는 포아송분포에서 10개를 sampling해보자

 

np.random.poisson(2, 10)
#array([3, 0, 1, 1, 3, 3, 2, 5, 1, 2])

 

Q. 모수 2, 4, 6을 따르는 포아송분포를 시각화해보자

 

#포아송 확률질량함수 구하기
from math import factorial, exp

# Probability density of the Poisson distribution
def poisson_dist_func(n, lamb):
    probability = (lamb ** n) * exp(-lamb) / factorial(n)
    return probability
    
#포아송 시각화 code
def viz_poisson(lamb):
    x = np.arange(5*lamb+1)
    y = np.array([poisson_dist_func(n, lamb) for n in range(5*lamb+1)])
    plt.ylim(0, y.max()+0.1)
    plt.title(f'lamb = {lamb}')
    plt.bar(x, y, color='lightcoral')
    plt.show()
    
#실제 시각화
for lam in [2,4,6]:
    viz_poisson(lam)

 

 

→ 실제로 lamb 모수값이 증가함으로써 오른꼬리가 긴 개형에서 약간 중심쪽으로 치우치는 분포를 보임을 확인할 수 있다!

 

* 포아송 개념 정리 끝! *


* 출처1) ProDS (초급+중급)1

* 출처2) https://codetorial.net/articles/poisson_distribution.html

* 출처3) https://en.wikipedia.org/wiki/Poisson_distribution

댓글