시작하기무료로 시작하기

이야기가 있다면, 곧바로 시뮬레이션할 수 있어요!

때로는 우리가 다루려는 확률 분포를 설명하는 이야기가 있지만, 그에 해당하는 이름 있는 분포가 없을 때가 있어요. 그래도 걱정하지 마세요! 언제든 시뮬레이션으로 구현할 수 있습니다. 이번 연습과 다음 연습에서 그렇게 해 보겠습니다.

앞선 연습에서 메이저리그에서의 노히터처럼 드문 사건을 살펴봤습니다. 한 타자가 한 경기에서 단타, 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
코드 편집 및 실행