더북(TheBook)

부정행위에 대해 학생 100명을 조사한다고 가정해보자. 우리는 부정행위자의 비율인 p를 찾으려 한다. 이를 PyMC에서 모델링하는 방법이 몇 가지 있다. 가장 명확한 방법을 먼저 보여주고, 나중에 간소화된 버전을 보여줄 것이다. 두 버전 모두 같은 추론에 도달한다. 데이터 생성 모델에서 우리는 사전확률분포로부터 부정행위자의 진짜 비율인 p를 표본추출한다. 우리는 p에 대해서 전혀 모르므로 p의 사전확률로 Uniform(0, 1)을 부여한다.

 


import pymc as pm

N = 100
p = pm.Uniform("freq_cheating", 0, 1)

 

우리의 데이터 생성 모델을 다시 생각해보면 우리는 학생 100명에게 베르누이 확률변수를 할당한다. 1은 그들이 부정행위를 했다는 것을, 0은 부정행위를 하지 않았다는 것을 의미한다.

 


true_answers = pm.Bernoulli("truths", p, size=N)

 

이 알고리즘을 수행한다면 다음 단계는 각 학생이 시행하는 첫 번째 동전 던지기다. p = 1/2을 사용해 베르누이 확률변수 100개를 표본추출하여 이 단계를 다시 모델링할 수 있다. 1은 앞면을, 0은 뒷면을 나타낸다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.