이항 확률 분포 만들기
이항 분포의 구조
이항 분포는 시행 횟수와 성공적인 결과의 확률이 주어졌을 때 특정 수의 성공적인 결과의 확률을 계산하는 데 사용됩니다. 이항이라는 용어의 "bi"는 우리가 관심을 두고 있는 두 가지 가능한 결과, 즉 이벤트가 발생하고 이벤트가 발생하지 않는 것을 말합니다. (결과가 두 개 이상인 경우 분포를 다항 분포라고 합니다.)
$$\tag{1} \text{binomial distribution} \sim B(k; n, p)$$
이항 분포의 예는 다음과 같습니다.
- 동전 던지기 세 번에서 두 번 앞면이 나오는 경우
- 복권 100만 장을 사서 적어도 한 번은 당첨되는 경우
- 20면체 주사위를 10번 굴려 20이 세 번 미만 나오는 경우
이항분포는 3개의 모수들과 연관된다.
- k: 결과(성공)횟수
- n: 총 시행횟수
- p: 사건 하나당 확률
문제의 세부 사항 이해 및 추상화
우리는 동전 던지기 3번에서 앞면이 두 번 나올 확률을 계산하는 예를 계속할 것입니다. 가능한 결과의 수가 적기 때문에 연필과 종이만 있으면 관심 있는 결과를 빠르게 알아낼 수 있습니다.
$$\tag{2} HHT, HTH, THH$$
일반화를 시작하기 위해, 우리는 이 문제를 지금 당장 해결할 수 있는 더 작은 조각으로 나누고, 그 조각들을 관리 가능한 방정식으로 축소할 것입니다. 방정식을 구축하면서, 우리는 그것들을 모아 이항 분포에 대한 일반화된 함수를 만들 것입니다.
이항 분포에서 순열
- 각 결과는 같은 확률을 가진다.
- 각 결과는 다른 결과의 순열 또는 재정렬일 뿐이다. 즉, 다음의 각 확률은 같다.
$$\tag{3}P(H,H,T) = P(H,T,H) = P(T,H,H) = P(outcome)
위 세 경우는 동시에 일어날 수 없습니다. 즉, 독립사건이므로 이 사건들의 곱사건은 다음과 같습니다.
$$\tag{4}P(H,H,T) + P(H,T,H) + P(T,H,H) = 3\times P(outcome)$$
위 식의 계수 3은 조합으로 계산할 수 있다. H, H, T의 3개의 사건중 두개가 H인 경우 다음과 같이 조합으로 계산한다.
\begin{align}\tag{5}\text{조합}&=\binom{n}{k}\\&=\frac{n!}{k!(n-k)!}\\\binom{3}{2}&=3 \end{align}
조합론: 이항 계수를 사용한 고급 계산
조합론에는 이항 계수라는 특수 연산이 있는데, 이는 n에서 k를 선택할 수 있는 방법의 수를 세는 것을 나타냅니다. 즉, 총 시행 횟수에서 관심 있는 결과를 선택하는 것입니다.
조합을 적용하여 위 사항을 계산하면 다음과 같다.
$$\tag{6} B(2; 3, p)\binom{3}{2}P(\text{outcome})$$
식 6은 P(outcome)가 3번 일어나는 확률을 계산하는 것으로 P(Outcomes)을 알아야 한다. 이 확률은 식 4의 좌항의 각 확률이며 예로서 HHT를 알아본다. 식 3에서 나타낸 것과 같이 나머지 두 확률과 같다. 곱의 법칙과 부정을 사용하여 이 문제를 다음과 같이 설명할 수 있습니다.
\begin{align}\tag{7}P(H,H,T) &= P(H,H,1-H) \\&= P(H)\times P(H) \times P(1-H)\\&=P(H)^2 \times P(1-H)\end{align}
식 7을 6에 대입하면
\begin{align} \tag{8} B(2; 3, p)&=\binom{3}{2}P(H)^2 \times P(1-H)\\B(k; n, p)&=\binom{n}{k}p^k(1-p)^{n-k}\\k:&\, \text{결과의 횟수}\\kn:&\, \text{총 시행의 횟수}\\p:&\, \text{각 결과의 확률}\end{align}
방정식 8은 이항 분포의 기초입니다. 이를 확률 질량 함수(PMF)라고 합니다. 이름의 질량 부분은 고정된 n과 p를 사용하여 주어진 k에 대한 확률의 양을 계산하는 데 사용할 수 있다는 사실에서 유래했으므로 이것이 확률의 질량입니다.
이항분포는 파이썬의 scipy.stats.binom() 클래스의 다양한 메서드로 계산한다.
이제 이 방정식이 있으므로 동전 던지기의 결과와 관련된 모든 문제를 해결할 수 있습니다. 예를 들어, 동전 던지기 24번에서 정확히 12번 앞면이 나올 확률을 계산할 수 있습니다.
$$\binom{24}{12}p^\frac{1}{2}(1-p)^\frac{1}{2}$$
import numpy as np
import pandas as pd
from scipy import stats, special
import itertools
from sympy import *
from empiricaldist import Pmf, Cdf
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("darkgrid")
special.comb(24, 12)*0.5**12*(1-0.5)**(24-12)
0.1611802577972412
stats.binom.pmf(12, 24, 1/2)
0.16118025779724124
10번의 동전 던지기에서 k에 대한 모든 가능한 값을 PMF에 넣고 모든 가능한 값에 대한 이항 분포가 어떻게 보이는지 시각화할 수 있습니다.
def decorate_plot(xlab, ylab, title=None, size=(4,3)):
plt.figure(figsize=size)
plt.xlabel(xlab)
plt.ylabel(ylab)
plt.title(title)
s=range(11)
p=stats.binom.pmf(s, 10, 0.5)
decorate_plot("# of H", "Prob.")
plt.bar(s, p)
plt.show()
6면체 주사위를 10번 굴렸을 때 6이 나올 확률에 대해서도 동일한 분포를 살펴볼 수 있습니다.
k=range(1, 11)
p=stats.binom.pmf(k, 10, 1/6)
decorate_plot("# of k", "Prob.")
plt.bar(k, p)
plt.show()
연습 문제
연습 문제) 20면체 주사위를 12번 굴렸을 때 1 또는 20이 나올 확률에 대한 이항 분포의 매개변수는 무엇입니까?
- k = 관심 사건: 1과 20 = 2.
- n = 시행 횟수 = 12
- p = 각 시행의 확률 =2/20
stats.binom.pmf(2, 12, 2/20)
0.230127770466
연습문제) 52장의 카드 덱에 에이스가 4장 있습니다. 카드를 뽑았다가 다시 돌려놓고, 다시 섞은 다음 카드를 뽑으면, 5번 뽑는 동안 에이스 하나만 뽑을 수 있는 방법은 몇 가지입니까?
case=list(itertools.product([0, 1], repeat=5)) target=[i for i in case if sum(i)==1] target
[(0, 0, 0, 0, 1), (0, 0, 0, 1, 0), (0, 0, 1, 0, 0), (0, 1, 0, 0, 0), (1, 0, 0, 0, 0)]
special.comb(5, 1)
5.0
연습문제) 위 연습문제의 예에서, 10번 뽑아서 에이스 5장을 뽑을 확률은 얼마입니까(뽑을 때 카드는 덱으로 다시 섞인다는 것을 기억하세요)?
stats.binom.pmf(5, 10, 4/52)
0.00045485528790408636
연습문제) 새로운 직장을 찾을 때는 협상에 사용할 수 있도록 두 개 이상의 제안을 테이블에 올려놓는 것이 항상 도움이 됩니다. 면접에서 직장 제안을 받을 확률이 1/5이고 한 달 동안 7개 회사와 면접을 본다면 그 달 말까지 적어도 두 개의 경쟁 제안을 받을 확률은 얼마입니까?
1-stats.binom.cdf(1, 7, 1/5)
0.4232832000000002
연습) 채용 담당자로부터 이메일을 많이 받았고 다음 달에 25개의 면접이 예정되어 있다는 것을 알게 되었습니다. 안타깝게도 피곤할 것이고, 피곤하면 제안을 받을 확률이 1/10으로 떨어질 것이라는 것을 알고 있습니다. 최소한 두 개의 경쟁 제안을 받을 가능성이 두 배 이상 높지 않는 한 이렇게 많은 면접에 가고 싶지 않을 것입니다. 25개의 면접에 가면 적어도 두 개의 제안을 받을 가능성이 더 높은가요, 아니면 7개만 고집할까요?


댓글
댓글 쓰기