📊 Statistics

[통계/Python] 다항분포(Multinomial Distribution) 개념 및 예제

민이언즈 2023. 8. 8. 13:35

[ 다항분포(Multinomial Distribution) ]

  • 여러 개의 독립 확률변수들에 대한 확률분포로, 여러 번의 독립적 시행에서 각 사건(확률변수)에 따라 특정 횟수가 나타날 확률을 정의하는 분포이다.
  • 독립 확률변수가 여러 개? :  독립적으로 서로 다른 여러 개의 사건 또는 범주가 존재한다는 것을 의미

 

  • 이항분포의 확장이라고 볼 수 있다.
    • 동전을 N번 던져 '앞면'이 나오는 횟수의 분포가 이항 분포
    • 주사위를 N번 던져 '각 면'이 나오는 횟수 집합의 분포가 다항분포
    • 이항분포는 앞면이라는 성공 횟수에 초점을 두고, 다항분포는 하나가 아닌 여러'집합'의 분포에 초점을 둔다.

  • 카테고리가 $k$개인 카테고리 확률변수의 표본 데이터를 $N$개 얻었을 때, 각각의 카테고리 $k(k=1, \cdot \cdot \cdot,k)$가 각각 $x_k$번 나올 확률분포
  • 다항분포는 보통 $X \sim MULT(n, p_1, p_2, \cdot \cdot \cdot, p_k)$ 라고 표기한다.

 

다항분포의 확률질량함수

$N$ : 총 횟수, $x_k$ : k번째 횟수, $p_k$ : k번째 각 상황의 확률

 

다항분포 Example 1

어느 공항의 항공기 이착륙 상황에 대한 이상적인 조건을 알아보기 위해 컴퓨터 시뮬레이션이 수행되었을 때, 3개의 활주로가 있는 이 공항에서 각 활주로가 사용될 확률이 다음과 같을 때 임의로 도착하는 6대의 비행기가 다음과 같이 활주로에 도착할 확률은?

 

 

 

위 문제를 수식으로 풀어보면 다음과 같다.

 

Python 구현

Python의 scipy.statsmultinomial을 이용해 쉽게 구현할 수 있다.

문제에서 주어진 정보를 다음과 같이 입력하면 된다.

총 횟수와 확률을 입력하여 다항분포 객체를 생성해주고, pmf를 이용해 확률을 계산해주면 된다.

import numpy as np
from scipy.stats import multinomial

# 다항분포의 확률 배열 
probabilities = [2/9, 1/6, 11/18]

# 범주별 관측된 횟수 배열 
counts = [2, 1, 3]

# 다항분포 객체 생성
multinom_dist = multinomial(n=np.sum(counts), p=probabilities)

# 주어진 범주별 관측된 횟수에 대한 확률 계산
probability = multinom_dist.pmf(counts)

print("확률 :", probability)

 

Python Output

 

 


ADP 실기를 공부하면서, 저번 회차에 이항분포 문제가 나온 걸 보고 다항분포도 알아두면 좋겠다싶어서 정리해봤다.

빅분기 준비하면서 이기적 교재를 오래 전에 사두고 거의 보는둥 마는둥 했었는데,  ADP 스터디에서 출제할 문제들을 살펴보느라 다시 펴보았다. 그때는 책이 그렇게 좋아보이지 않았는데 다시 펴보니까 ADP 통계 문제에 적합해 보인 예제들이 꽤 있었고 나름 들어갈 내용은 다 들어가 있어서 놀랐다,, 무튼 게시글은 계속 공부하면서 업데이트할 계획이다. 

 

 

Reference

  • 다항분포 Example 출처 : 이기적 빅데이터분석기사 필기 교재 252p
728x90