이러한 변수를 사용해서 우리는 “예”라는 답변이 관측된 비율의 결과추정치를 얻을 수 있다. 우리는 PyMC deterministic 변수를 사용하여 비율을 얻는다.
@pm.deterministic def observed_proportion(t_a=true_answers, fc=first_coin_flips, sc=second_coin_flips): observed = fc * t_a + (1 - fc) * sc return observed.sum() / float(N)
fc*t_a + (1-fc)*sc 라인은 프라이버시 알고리즘의 핵심을 포함하고 있다. 이 배열의 요소는 1이며, 이때 필요충분조건은 (1) 첫 번째 동전을 던져 앞면이 나오고 학생이 부정행위를 한 경우, (2) 첫 번째 동전을 던져 뒷면이 나오고 두 번째 동전을 던져 앞면이 나온 경우, 그 밖에는 0이다. 마지막 줄은 이 벡터를 더하고 float(N)으로 나눠서 비율을 만들어낸다.
observed_proportion.value
결과
0.26000000000000001