이야기가 있다면, 곧바로 시뮬레이션할 수 있어요!
때로는 우리가 다루려는 확률 분포를 설명하는 이야기가 있지만, 그에 해당하는 이름 있는 분포가 없을 때가 있어요. 그래도 걱정하지 마세요! 언제든 시뮬레이션으로 구현할 수 있습니다. 이번 연습과 다음 연습에서 그렇게 해 보겠습니다.
앞선 연습에서 메이저리그에서의 노히터처럼 드문 사건을 살펴봤습니다. 한 타자가 한 경기에서 단타, 2루타, 3루타, 홈런을 모두 기록하는 ‘사이클 달성’도 또 다른 희귀한 야구 사건이에요. 노히터와 마찬가지로 이를 Poisson 과정으로 모델링할 수 있으므로, 사이클 달성 사이의 시간도 Exponential 분포를 따릅니다.
노히터를 보고 나서 그다음으로 사이클 달성까지 보려면 얼마나 기다려야 할까요? 아이디어는 노히터를 위해 일정 시간을 기다리고, 그 후에 사이클 달성을 위해 다시 기다린다는 것입니다. 달리 말하면, 서로 다른 두 Poisson 과정이 차례로 도착할 때의 총 대기 시간이 얼마인가 하는 문제예요. 총 대기 시간은 노히터를 기다린 시간과 사이클 달성을 기다린 시간을 더한 값입니다.
이제, 이 이야기로 정의되는 분포에서 샘플을 뽑는 함수를 작성해 보세요.
이 연습은 강의의 일부입니다
Python으로 하는 Statistical Thinking (파트 1)
연습 안내
- 호출 시그니처가
successive_poisson(tau1, tau2, size=1)인 함수를 정의해 노히터와 사이클 달성까지의 대기 시간을 샘플링하세요.tau1로 모수화한 Exponential 분포에서 노히터에 대한 대기 시간을 (size개수만큼) 뽑아t1에 할당하세요.tau2로 모수화한 Exponential 분포에서 사이클 달성에 대한 대기 시간을 (size개수만큼) 뽑아t2에 할당하세요.- 함수는 두 사건의 대기 시간을 합한 값을 반환해야 합니다.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
def successive_poisson(tau1, tau2, size=1):
"""Compute time for arrival of 2 successive Poisson processes."""
# Draw samples out of first exponential distribution: t1
t1 = ____(____, ____)
# Draw samples out of second exponential distribution: t2
t2 = ____(____, ____)
return t1 + t2