4-10. Poisson distribution

泊松分布

1. Poisson Distribution

포아송 분포의 포아송은 17세기의 프랑스의 수학자인 S.D.Poisson 의 이름으로서, S.D. Poisson 은 이항확률을 손으로 계산하는 것이 매우 어렸었던 점을 개선하고자 지수식을 사용해서 이항확률의 근사값을 계산할 수 있는 확률 함수를 만들었는데요, 그것이 바로 포아송 분포이다.

확률변수 XX 가 이항분포 B(n,p)B(n, p) 를 따를 때 np=λnp = λ 로 일정하게 두고, nn 이 충분히 크고 pp 가 0에 가까울 때 이항분포에 근사하는 포아송 분포 (Poisson distribution)는 아래와 같다.

f(x)=(nx)px(1p)(nx){eλλxx!,x=0,1,2,...0,etcf(x) = \binom{n}{x} p^x (1-p) ^{(n-x)} \approx \left\{\begin{matrix} \frac{ e^{-\lambda }\lambda ^x }{x!} &, x=0, 1,2,... \\ 0 &, etc \end{matrix}\right.

Expected Value and Value of XX

E(X)=Var(X)=λE(X) = Var(X) = \lambda

* 참고 : e 는 자연로그의 밑으로 2.718281827845.... 의 무리수

포아송 분포(Poisson distribution)는 일정한 단위 시간, 단위 공간에서 어떤 사건이 랜덤하게 발생하는 경우에 사용할 수 있는 이산형 확률분포이다.

예를 들어, 1시간 동안 은행에 방문하는 고객의 수, 1시간 동안 콜센터로 걸려오는 전화의 수, 1달 동안 경부고속도로에서 교통사고가 발생하는 건수, 1년 동안 비행기가 사고가 발생하는 건수, 책 1페이지당 오탈자가 발생하는 건수, 반도체 웨이퍼 25장 당 불량 건수 등과 같이 단위 시간 혹은 단위 공간에서의 랜덤한 사건에 대해 사용하게 된다.

(참고로, 연속형 확률 분포 중 지수 분포(exponential distribution)는 특정 사건과 사건 사이의 간격에 대한 분포로서, 헷갈리지 않도록 주의가 필요하다.)

포아송 분포에서 모수 λλ (lambda 라고 발음함)는 일정한 단위 시간 또는 단위 공간에서 랜덤하게 발생하는 사건의 평균 횟수를 의미한다.

EXAMPLE 32. 일정 단위당 평균 발생횟수가 각각 2개, 5개, 8개인 세 종류의 무한 모집단에서 일정 단위의 표본을 취하였을 때, 포아송 확률분포 그래프를 작성하고, 기대값과 분산값을 구하라.

[ Solution ]

  • Using Rstat Pacakge : dpois()

library(Rstat)

# 1. mean value : L
L <- c(2, 5, 8); x <- 0:30

# 2. Probability Distribution : dpois(x, L)
fx <- list()
for (i in 1:3) fx[[i]] <- dpois(x, L[[i]])
sapply(fx, sum)

# 3. E(X), Var(X), and Plot using disc.mexp()
title <- paste0("Poisson(", L,")")
disc.mexp(x, fx, mt = title)   

2. Poisson Distribution in R

R 에서 포아송 분포를 사용할 수 있는 함수 및 모수는 아래 표와 같다.

함수 구분

포아송 분포 R 함수/ 모수 pois()

밀도 함수

d

dpois(x, lambda)

누적 분포 함수

p

ppois(q, lambda, lower.tail = TRUE/FALSE

분위수 함수

q

qpois(p, lambda, lower.tail = TRUE/FALSE

난수 발생

r

rpois(n, lambda)

(1) λ = 3 인 포아송 분포 그래프 (Poisson distribution plot of lambda = 3)

x <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

dpoi_x <- dpois(x, lambda = 3)
dpoi_x

plot(dpoi_x, 
     type='h',
     main = "Poisson distribution, lambda = 3")

(2) P ( X = 15) 확률 계산 : dpois(x, lambda)

EXAMPLE 33. 어느 은행의 1시간 당 방문 고객 수가 λ = 20 인 포아송 분포를 따른다고 한다. 그럼 1시간 당 방문고객수가 15명일 확률은?

# (2) P(X = 15) in Poisson distribution with lambda = 20
dpois(x=15, lambda = 20)

(3) P ( X <= 15) 확률 계산 : ppois(q, lambda, lower.tail = TRUE)

EXAMPLE 34. 어느 은행의 1시간 당 방문 고객 수가 λ = 20 인 포아송 분포를 따른다고 한다. 그럼 1시간 당 방문고객수가 15명 이하일 확률은?

# (3) P(X =< 15) in Poisson distribution with lambda = 20
ppois(q=15, lambda = 20, lower.tail = TRUE)

# or
sum(dpois(x=c(0:15), lambda = 20)) # the same result with the ppois()

(4) 특정 확률 값에 해당하는 분위수 계산 : qpois(p, lambda, lower.tail=TRUE)

EXAMPLE 35. 어느 은행의 1시간 당 방문 고객 수가 λ = 20 인 포아송 분포를 따른다고 한다. 만약 1시간 동안 방문한 고객수에 해당하는 확률이 15.65131% 이라면 이는 몇 명에 해당하는가?

qpois(p=0.1565131, lambda = 20, lower.tail = TRUE)

(5) 난수 발생 : rpois(n, lambda)

EXAMPLE 36. λ = 20 인 포아송 분포에서 n = 1000 개의 난수를 발생시키고, 도수분포표를 구하고, 도수별 막대그래프를 그려보아라.

x <- rpois(n=1000, lambda = 20)
hist(x)

(6) Drawing PDF and CDF

# expected number of sales = lambda = 3

# variance = lambda = 3

library(ggplot2)
library(dplyr)
options(scipen = 999, digits = 2) # sig digits

lam <- 3
events <- 0:10

density <- dpois(x = events, lambda = lam)
prob <- ppois(q = events, lambda = lam, lower.tail = TRUE)
df <- data.frame(events, density, prob)
ggplot(df, aes(x = factor(events), y = density)) +  # 1)
  geom_col() +                                      # 2)
  geom_text(
    aes(label = round(density,2), y = density + 0.01),
    position = position_dodge(0.9),
    size = 3,
    vjust = 0
  ) +                                               # 3)
  labs(title = "PMF and CDF of Poisson Distribution",
       subtitle = paste0("P(", lam, ")."),
       x = "Events (x)",
       y = "Density") +                             # 4) 
  geom_line(data = df, aes(x = events, y = prob))   # 5)

(참고 : Modification of Michael Poley)

3. Poisson Distribution and Binomial Distribution

이제 포아송 분포와 이항 분포의 관계를 알아보자.

앞서 이항 분포와 초기하 분포의 관계를 설명했었다. 이항 분포의 조건부 분포는 초기하 분포가 되고, 초기하 분포에 극한을 취하면 이항 분포가 된다.

포아송 분포도 마찬가지 이다.

두 개의 포아송확률변수 X, Y가 있고 이 두 변수는 서로 독립이라면, 이 두 포아송 확률변수의 합 (X+Y) 도 포아송 확률변수가 된다.

XXYY는 서로 독립이고, XPois(λ1),X \sim Pois(\lambda_1), YPois(λ2)Y \sim Pois(\lambda_2) 일 때, (X+Y)Pois(λ1+λ2)(X+Y) \sim Pois(\lambda_1 + \lambda_2) 이다.

3.1 Binomial Distribution from Poisson Distribution

이제 포아송 확률변수 (X+Y)(X+Y) 에 대한 확률변수 XX 의 조건부 분포를 구해보자.

P(X=xX+Y=n)=P(X+Y=nX=x)P(X=x)P(X+Y=n)P(X=x | X+Y=n) =\frac{P(X+Y=n|X=x)\cdot P(X=x) }{P(X+Y=n)}

X+Y=nX+Y=n 이므로 Y=nXY = n-X 이다. 그리고, XXYY 는 독립이므로,

P(X=xX+Y=n)=P(Y=nXX=x)P(X=x)P(X+Y=n)P(X=x | X+Y=n) =\frac{P(Y=n-X|X=x)\cdot P(X=x) }{P(X+Y=n)}

P(X=xX+Y=n)=eλ2λ2nx(nx)!eλ1λ1xx!e(λ1+λ2)(λ1+λ2)nn!\Rightarrow P(X=x | X+Y=n) = \frac{\frac{e^{-\lambda_2}\cdot \lambda_2^{n-x}}{(n-x)!} \cdot \frac{e^{-\lambda_1}\cdot \lambda_1^{x}}{x!} }{ \frac{e^{-(\lambda_1 + \lambda_2)}\cdot (\lambda_1 + \lambda_2)^n }{n!} } . 이 식것을 정리하면 다음과 같다.

P(X=xX+Y=n)==nCx(λ1λ1+λ2)x(λ2λ1+λ2)nxP(X=x | X+Y=n) = = {_nC_x} \left ( \frac{\lambda_1} {\lambda_1 + \lambda_2} \right )^x \left ( \frac{\lambda_2} {\lambda_1 + \lambda_2} \right )^{n-x} .

P(X=xX+Y=n)\therefore P(X=x|X+Y=n) 는 시행횟수 nn , 성공확률 λ1λ1+λ2\frac{\lambda_1} {\lambda_1 + \lambda_2} 인 이항분포를 따른다.

이렇게 포와송 분포의 조건부 분포는 이항 분포가 되었다.

3.2 Poisson Distribution from Binomial Distribution

이항 분포에 극한을 취했을 경우 어떻게 되는지 보자.

λ=np\lambda = np 라고 하면, p=λn p = \frac{\lambda}{n}이 된다.

P(X=x)=nCxpx(1p)(nx)P(X=x) = {_nC_x} \cdot p^x \cdot (1-p)^{(n-x)} =n(n1)(nx+1)x!(λn)x(1λn)n(1λn)x= \frac {n(n-1) \dots (n-x+1)} {x! } \cdot (\frac{ \lambda} {n })^x \cdot (1- \frac{ \lambda} {n })^n \cdot (1- \frac{ \lambda} {n })^{-x} =λxx!n(n1)(nx+1)nx(1λn)n(1λn)x= \frac{ \lambda^x} {x! } \cdot \frac {n(n-1) \dots (n-x+1) } { n^x } \cdot ( 1 - \frac{ \lambda}{n})^n \cdot ( 1 - \frac{ \lambda}{n})^{-x} .

양변에 극한을 취한다. 즉, nn \rightarrow \infty 이면, p0p \rightarrow 0 이므로 1) n(n1)(nx+1)nx1 \frac {n(n-1) \dots (n-x+1) } { n^x } \rightarrow 1 2) (1λn)neλ( 1 - \frac{ \lambda}{n})^n \rightarrow e^{-\lambda} 3) (1λn)x1( 1 - \frac{ \lambda}{n})^{-x} \rightarrow 1

따라서, nn \rightarrow \infty 이면, P(X=x)=eλλxx!P(X=x) = \frac {e^{-\lambda} \cdot \lambda ^ x} {x!} 이 된다.

이항 분포에 극한을 취한 결과를 통해 알 수 있는 것은 수많은 사건 중(즉, nn \rightarrow \infty) 특정한 사건이 발생할 확률이 매우 적은(즉, p0p \rightarrow 0) 확률변수가 갖는 분포가 포아송 분포임을 알 수 있다.

이를 정리하면 다음의 그림과 같은 관계가 된다.

보통 다음과 같은 확률 문제를 알아내기 위해 포아송 분포를 많이 응용하여 사용한다.

  • 하루동안 발생하는 출생자 수 혹은 사망자 수

  • 어떤 특정 진도 이상의 지진이 발생하는 수

  • 어떤 특정량의 방사선을 DNA에 쬐었을 때 발생하는 돌연변이 수

  • 어떤 시간 동안 톨게이트를 통과하는 차량의 수

Last updated