Python에서 이항 분포를 사용하는 방법
이항 분포는 통계학에서 가장 일반적으로 사용되는 분포 중 하나입니다. n 번의 이항 실험에서 k번 성공할 확률을 설명합니다.
확률 변수 X가 이항 분포를 따르는 경우 X = k 성공 확률은 다음 공식으로 찾을 수 있습니다.
P(X=k) = n C k * p k * (1-p) nk
금:
- n: 시행 횟수
- k: 성공 횟수
- p: 주어진 시행의 성공 확률
- n C k : n 번 시행에서 k번 성공하는 방법의 수
이 튜토리얼에서는 Python에서 이항 분포를 사용하는 방법을 설명합니다.
이항 분포를 생성하는 방법
numpy 라이브러리의 Random.binomial 함수를 사용하여 이항 분포를 따르는 값 배열을 생성할 수 있습니다.
from numpy import random #generate an array of 10 values that follows a binomial distribution random.binomial(n=10, p=.25, size=10) array([5, 2, 1, 3, 3, 3, 2, 2, 1, 4])
결과 표의 각 숫자는 주어진 시행의 성공 확률이 0.25 인 10번의 시행 과정에서 발생한 “성공” 횟수를 나타냅니다.
이항 분포를 사용하여 확률을 계산하는 방법
scipy 라이브러리의 binom 함수를 사용하여 이항 확률에 대한 질문에 답할 수도 있습니다.
질문 1: Nathan은 자유투 시도의 60%를 성공시켰습니다. 만약 그가 12번의 자유투를 성공했다면, 그가 정확히 10번의 자유투를 성공할 확률은 얼마입니까?
from scipy.stats import binom #calculate binomial probability binom.pmf(k= 10 , n= 12 , p= 0.6 ) 0.0639
Nathan이 정확히 10번의 자유투를 성공할 확률은 0.0639 입니다.
질문 2: 마티는 공정한 동전을 5번 던졌습니다. 동전이 앞면이 2번 이하로 나올 확률은 얼마입니까?
from scipy.stats import binom #calculate binomial probability binom.cdf(k= 2 , n= 5 , p= 0.5 ) 0.5
동전이 앞면이 2번 이하로 나올 확률은 0.5 입니다.
질문 3: 우리는 개인의 70%가 특정 법률을 지지한다는 것을 알고 있습니다. 10명을 무작위로 선택한다면 그 중 4~6명이 법을 지지할 확률은 얼마입니까?
from scipy.stats import binom #calculate binomial probability binom.cdf(k= 6 , n= 10 , p= 0.7 ) - binom.cdf(k= 3 , n= 10 , p= 0.7 ) 0.3398
무작위로 선택된 4~6명의 개인이 이 법칙을 지지할 확률은 0.3398 입니다.
이항 분포를 시각화하는 방법
seaborn 및 matplotlib 라이브러리를 사용하여 Python에서 이항 분포를 시각화할 수 있습니다.
from numpy import random import matplotlib.pyplot as plt import seaborn as sns x = random.binomial(n= 10 , p= 0.5 , size= 1000 ) sns.distplot(x, hist= True , kde= False ) plt.show()
차