Python notes/Statistical Analysis

Python-Statistics) 파이썬으로 베이지안 방법, 사후 확률 구하기

성실한 나무 2022. 6. 22. 15:23

 베이지안 방법을 파이썬 코드로 보기 쉽게 정리해보려고 한다. 이를 위해 먼저 전확률의 정리와 베이즈의 정리의 개념을 알아본다.

 전확률의 정리와 베이즈의 정리가 성립하기 위해서는 아래와 같이 표본공간 S를 이루고 있는 n개의 부분집합 A들이 있어야 한다. 즉, 부분집합 A들은 서로 겹치는 부분이 없어야 하고(교집합이 공집합), A들의 확률을 다 합쳤을 때 1이 되어야 한다.

전확률의 정리와 베이즈의 정리

 

#1. 전확률의 정리 (Theorem of Total Probability)

 전확률의 정리는 아래와 같이 정리할 수 있는데 쉽게 말하면, 사건 B의 확률을 구하는 방법이다. 사건 B의 확률을 구하기 위해 위에서 언급했던 서로 겹치지 않는 부분집합 A들을 사용한다. A1이 일어날 때 B가 일어날 확률(조건부 확률)에 A1이 일어날 확률을 곱하면, A1과 B가 일어날 확률, 즉 A1과 B의 교집합의 확률을 구할 수 있다. 이렇게 A2, A3, ...An까지 B와의 교집합의 확률을 구한 뒤 이를 모두 더하면 B의 전체 확률을 구할 수 있는 것이다. 

전확률의 정리

 

#2. 베이즈 정리(Bayes Theorem)

 베이즈 정리에서 A1, A2, ..., An을 n개의 원인이라고 한다면, 원인의 가능성으로 처음의 확률 P(Ai)를 사전확률(Prior Probability)라고 하고, B가 관측된 후에 원인 Ak의 가능성으로 수정된 확률 P(Ak|B)를 사후 확률(Posterior Probability)라고 한다. 즉, 베이즈 정리는 관측 전후에 대한 가능성의 관계라고 말할 수 있다.

 B가 일어났을 때 Ak가 일어날 조건부 확률을 구하기 위해서는 아래와 같이 분모에 P(B)의 전확률이 들어가야 한다. 그리고 A들 중에서도 관심이 있는 Ak와 B의 교집합을 구하기 위해 분자식을 아래와 같이 쓴다.

베이즈 정리

 

#3. 전확률, 사후확률 구하기 예제 1

 모 선출에서 2명의 후보자가 있다. A1, A2가 당선될 확률은 각각 0.7과 0.3이다. A1, A2가 당선되면 각각 0.2와 0.9의 예측 확률로 회비를 인상할 것으로 판단된다. 회원의 회비가 인상될 확률은 얼마인가?

파이썬으로 전확률, 사후확률 계산

 P(A1)은 A1 후보자가 당선될 확률, P(A2)는 A2후보자가 당선될 확률이다. P(B|A1)은 A1이 당선되었을 때 회비가 인상될 확률이고, P(B|A2)는 A2가 당선되었을 때 회비가 인상될 확률이다. 전확률의 정리에 따라 P(A1)*P(B|A1)과 P(A2)*P(B|A2), 이 둘을 합한 P(B)는 회비가 인상될 확률이다. 위의 결합확률 0, 1행을 모두 합한 0.41로 계산이 된다. 즉, 회비가 인상될 확률은 0.41이다.

 이에 추가적으로 회비가 인상된 상황에서 A1 혹은 A2 후보자가 당선될 사후 확률을 구해본다면 맨 끝의 사후확률 열을 보면 된다.   

 

 

#4. 전확률, 사후확률 구하기 예제 2

 기계 A1, A2, A3이 있다. 각 기계는 각각 전 생산량의 20%, 35%, 45%를 생산하고 각 기계의 불량률은 각각 2%, 4%, 3%라고 한다. 제품 하나를 추출하였는데 그 제품이 불량이었다. 이것이 A1, A2, A3 각각에서 만들어졌을 확률을 구하여라.

파이썬으로 전확률, 사후확률 계산

 여기서도 전확률은 결합확률 열의 값들을 다 더한 값이다. P(B)는 제품이 불량일 확률이다. 이 확률을 분모에 놓고 원하는 사건을 분자에 입력하면된다. 제품 하나를 추출하였는데 그 제품이 불량일 때 이 제품이 기계 A1에서 만들어졌을 확률을 구해보면, 위의 0 행의 사후확률 0.127이 된다. 이 값은 0.004 / (0.004+0.014+0.0135) 로 구한다.

 

 

**KOCW 공개강의 중 의용통계학(홍성식, 고려대학교)의 내용을 참조하였고, 코드는 직접 작성해 보았다.