수학/통계학

이산확률분포 총정리(베르누이,이항,다항,포아송,기하,음이항)

빛날희- 2022. 2. 18. 12:48

이번 포스팅에선 총 여섯가지의 이산확률분포를 정리하고, python의 scipy패키지를 통해 몇가지 그래프를 출력해보고자한다. 

포스팅에서 다룰 여섯가지 분포는 다음과 같다. 

- 베르누이 분포

- 이항분포

- 다항분포

- 포아송분포

- 기하분포

- 음이항 분포

 

▶ 베르누이분포 Bernoulli trial

베르누이 시행이란, 결과가 두가지 중 하나로만 나오는 실험이다. 

베르누이 확률변수란, 두가지 중 하나로 나온 베르누이 시행의 결과를 실수 0 또는 1로 바꾼것을 말한다. 

베르누이 분포란, 베르누이 확률변수의 분포를 일컫는다. 즉 시행횟수가 1번이고 한번의 시행결과가 성공(1) 혹은 실패(0)로만 나눠지는 분포를 베르누이 분포라고 한다.

 

▷ 분포함수

$$ P(x) = p^x(1-p)^{1-x}$$

- $x$가 0이면: P(0) = 1-p

- $x$가 1이면: P(1) = p

 

 기호

$$B(1,p)$$

- 시행을 1번 수행할 때 성공확률은 P이다.

 

 예시

주머니에 공이 10개 있고, 그 중 6개의 공은 빨간공(확률변수 0), 나머지 4개의 공은 파란공(확률변수 1)이라고 하자.

이 주머니에서 공 1개를 꺼낼 때 그 공의 색이 0일 확률은 0.6이다. 

 

>주머니에서 나올 수 있는 결과는 빨간색, 파란색 공으로 두가지 뿐이며, 시행횟수가 한 번일 때의 확률변수 x의 분포를 나타낸 것이기 때문에 베르누이 확률분포이다.

 

 Scipy 코드

scipy.stats의 bernoulli함수

확률변수 1의 확률분포가 0.4인 베르누이 분포 시뮬레이션을 돌려보자. 

rvs를 활용해 확률분포가 0.4인 random variates를 100개 만들어보자

위 변수의 분포를 그래프로 출력해보면 다음과 같다. 

- 설정한 확률변수 1의 확률분포와 동일하진 않지만 유사한 분포의 시뮬레이션이 나오는 것을 볼 수 있다. 

 

 

 

 이항분포 Binomial distribution

서로 독립인 베르누이시행을 n번 할 때 사건이 발생한 횟수를 확률변수 x로 하는 확률분포를 말한다. 

여기서 사건이 발생한 횟수는 베르누이시행의 성공횟수를 일컫는다. 

즉, 이항분포는 서로 독립인 베르누이 시행에서 나오는 '성공'횟수의 분포라고 말할 수 있다.

 

▷ 분포함수

$$P(x)= _{n}C_{x} p^x (1-p)^{n-x}$$

- n번의 시행 중 순서와 상관없이 x번의 성공횟수를 선택한 경우의 수에 확률값을 곱해준다.

 

▷ 기호

$$B(n,p)$$

- 시행횟수가 n번일 때 성공 확률은 p이다. 

 

▷예시

축구선수가 골을 넣을 확률이 70%라고 한다면, 그 선수가 10번 공을 찾을 때 성공횟수를 5라고 하자. 이때 해당 선수의 이항분포 값은 0.103정도의 값이 나온다. 

 

$$B(10,0.7) = _{10}C_{5} 0.7^5 0.3^{5} = 0.1029$$

 

▷ Scipy코드

scipy.stats의 binom함수

시행횟수가 10번이고 성공확률이 0.7인 확률 시뮬레이션을 돌려보자. 

우선 예시에서 확률변수가 봤던 분포값이 맞는지는 다음 코드를 통해 알아볼 수 있다. 

pmf 메소드를 통해 확률변수가 5일때의 이항분포 값을 출력해보았다. 

- 공식으로 계산했을 때와 같은 값이 나온다. 

 

이제 해당 분포를 갖는 무작위 변수를 100개 만들어보자. 

- array에 들어간 값들은 10번의 시행 중 어떤 시행에서 성공이 나왔는지를 보여주는 값들이다. 

[성공이 7번째 시행에서 나옴, 성공시행이 7번째 시행에서 나옴, 성공시행이 3번째 시행에서 나옴...]

 

- 확률변수가 5일때를 기준으로 비교해보면 완전히 동일한 값은 나오지 않았다. 하지만 시뮬레이션 분포를 이론분포와 비교해보면 그와 비슷한 분포를 띈 그래프 모양일 것이다. 

 

 

 다항분포 Multinomial distribution

이항분포의 확장버전으로, 어떤 시행의 결과가 두개가 아니라 여러개로 나뉘었을 때의 분포이다.

다음 그림을 보며 이해해보자. 

- 시행결과가 k라고 한다면 시행 결과는 $A_{1}, A_{2} ... A_{k}$로 k개의 사건으로 나눠진다.

- 각각의 사건에 대한 확률 또한 $p_{1},p_{2}...p_{k}$로 k개의 확률로 나눠질 수 있다. 이때 $p_{1},p_{2}...p_{k}$를 모두 더하면 1이 된다. 

- 그리고 각각의 사건이 발생할 건수는 $x_{1},x_{2}...x_{k}$이고, 이들을 모두 더하면 n이 된다. 

 

 분포함수

$$P(x_{1},x_{2}...x_{k}) = \frac{n!}{(x_{1})!(x_{2})!...(x_{k})!}(p_{1})^{x_{1}}(p_{2})^{x_{2}}...(p_{k})^{x_{k}}$$

 

 기호

$$M(n,p_{1},p_{2}...p_{k})$$

- n은 시행횟수, 각각의 p값은 각각의 사건이 발생할 확률이다.

 

 예시

상자 안에 공이 100개가 들어있고, 빨간공 20개, 파란공 40개, 노란공 40개가 있다고 하자. 

이 상자에서 복원 추출로 10개의 공을 뽑았다고 할 때, 그 10개 중 빨간공이 $x_{1}$개, 파란공이 $x_{2}$개, 노란공이 $x_{3}$개 들어있을 확률분포를 다항분포라고 한다. 

 

 

 포아송분포 Poisson distribution

- 어떤 단위시간동안 발생한 사건 횟수를 x라고 했을 때의 확률분포이다. 

- 포아송 분포는 이항분포와 연관지어서 설명될 수 있다. 이항분포$B(n,p)$에서 시행횟수 n이 크고 성공확률p가 작은 경우에는 확률 계산을 정확히 하는것이 매우 어렵기 때문에 근사계산을 한다. 그리고 근사계산에선 np(정해진 시간안에 어떤 사건이 일어날 횟수에 대한 기댓값)의 값은 어떠한 양수 $\lambda$로 근사할 수 있다는 걸 전제하고 있다. 이 근사계산을 이항확률을 포아송근사라고 하고 이때의 확률분포를 즉 포아송 분포라고도 할 수 있다. 

 

▷ 분포함수 

$$ \lim_{n \to \infty,np_{n} \to \lambda}\binom{n}{x}p_n^x(1-p_{n})^{n-x} = \frac{e^{-\lambda}\lambda^x}{x!} $$

$$(\lambda >0)$$

- 포아송 분포는 이상분포에서 n이 무한대로, p가 0으로, np가 $\lambda$로 근사할 때의 분포이다.

 

 기호

$$Pois (\lambda)$$

 

 

 예시

DNA에 방사선을 쬐었을 때, 각 염기쌍이 돌연변이를 일으킬 확률은 각각 매우 작고 서로 독립적이다. 또한 하나의 DNA에는 많은 염기쌍이 있다. 따라서 DNA에 방사선을 쬐었을 때 발생하는 돌연변이의 개수는 푸아송 분포로 나타낼 수 있다.

 

▷ Scipy코드

scipy.stats의 poisson함수

정해진 단위시간에 어떤 사건이 발생할 횟수에 대한 기댓값을 $\lambda$라 했을 때, 그 사건이 x회 발생할 확률을 나타내보면 다음과 같다.

- lambda가 작을수록, 즉 사건이 발생할 확률이 적을수록 정해진 시간 내에 그 사건이 발생할 수 있는 횟수가 적을 확률이 더욱 크다. 

- 반면 labmda가 클수록 정해진 시간 내에서 그 사건이 더 많이 발생할 확률이 커지는 것을 알 수 있다. 

 

 

 기하분포 Geometric distribution

성공 시행이 나오기까지 시행 횟수를 확률변수 x로 하는 확률분포이다.

여기서 각각의 시행은 서로 독립인 베르누이 시행이다. 

 

 분포함수

$$ P(x)= (1-p)^{x-1}p $$

- 성공확률이 p일 때 x번의 시행 중 실패한 시행은 x-1번 발생한다. 

- 따라서 실패할 확률에 x-1승 한 값에 성공확률 p값을 곱해준 값이 확률변수 x에 대한 기하분포 값이다. 

 

 기호

$$ Geo(p) $$

 

 예시

연애를 시작한 남녀가 결혼까지 갈 확률이 5%라고 하자.

이성을 사귈 때 그 이성과의 관계엔 결국 '결혼하냐 안하냐' 이 두가지 결과가 존재하기 때문에 이는 베르누이 시행이다.  이 예시에서 어떤 사람이 x번째 사귄 사람과 결혼할 확률분포가 기하분포이다. 

즉, 세번째 사귄 사람과 결혼할 확률분포는 다음 식에 의해 0.125이다.

$$ P(3) = 0.5^20.5 = 0.125 $$

 

▷ Scipy코드

scipy.stats의 geom함수

위 예시에 대해 파이썬으로 계산해보면 다음과 같다.

- 성공확률이 0.5인 베르누이 시행에서, 3번째 시행에 성공시행에 나왔을 경우의 기하분포 값

 

기하분포에서 성공확률에 따른 분포그래프를 그려보았다. 

- 성공확률이 클수록 초반에 '성공'할 확률이 크고, 성공확률이 낮을 수록 초반에 '성공'할 확률이 낮다는 것을 알 수 있다. 

 

 

 음이항 분포 negative binomial distribution

성공시행이 r번 나올때까지 실패한 횟수가 x회인 확률분포이다. 

따라서, r번째 성공 전의 시행들 중에 실패시행은 x회가 들어있고 성공시행은 r-1회가 있다. 

따라서 r번째 성공 전의 총 시행 수는 x+r-1회라고 할 수 있겠다.

 분포함수

$$  P(x) = _{x+r-1}C_{x}p^r(1-p)^x $$

- $ _{x+r-1}C_{x} $ : r번째 성공 이전의 시행들이 나열될 수 있는 경우의 수

 

 기호

$$ NB(r,p) $$

- 성공횟수 r, 성공확률 p

 

 예시

어떤 농구선수의 자유투 성공확률이 30%라고 하자.

세번의 성공이 나오기까지 실패시킨 자유투 횟수가 x번일 때의 확률분포가 음이항분포이다. 

즉, 세번의 성공이 나오기까지 자유투를 2번 실패시켰을 경우의 확률분포는 다음 식에 의하여 약 0.08이다.

$$ _{4}C_{2}0.3^3(0.7)^2 = 0.07938 $$

- r= 3, x=2, p=0.3

 

▷ Scipy코드

scipy.stats의 nbinom함수

위 예시를 파이썬으로 계산해보면 다음과 같다. 

10번 성공할때까지 걸리는 실패횟수 x에 대한 확률분포값을 성공확률에 따라 그래프로 출력해보았다.  

- 성공확률이 클수록 실패횟수가 적게 필요할 확률이 크다. 즉 성공확률이 클 수록 초기에 10번의 성공횟수를 채울 확률이 크기 때문에 그 과정에 들어갈 수 있는 실패횟수는 적어진다는 것을 알 수 있다. 

- 반면, 성공확률이 작을수록 성공횟수 10번을 채우기까지 실패횟수가 많이 필요하고 대체적으로 분산도 큰 모습을 볼 수 있다. 

 

 

▶ 참고자료

https://www.youtube.com/watch?v=CXum73zrMzc&list=LL&index=1 

 


포스팅에서 틀린 부분에 대한 피드백 언제나 환영입니다!