有了情境,就能模擬!
有時候,描述機率分配的情境並沒有對應到一個已命名的分配。遇到這種情況別擔心!你一樣可以用模擬來處理。這一題與下一題就要這麼做。
在前面的練習中,我們看過美國職棒大聯盟的「無安打」這種罕見事件。打者在單場集齊四種類型安打的「完全打擊(hitting the cycle)」也是另一種罕見事件。和無安打一樣,這可以用 Poisson 程序建模,因此兩次完全打擊之間的時間服從 Exponential 分配。
我們要等多久才能先看到一次無安打,接著再看到一次完全打擊?也就是說,我們先等無安打發生,之後再等完全打擊發生。換句話說,連續發生的兩個不同 Poisson 程序,其總等候時間是多少?總等候時間就是等無安打的時間,加上等完全打擊的時間。
現在,請你撰寫一個函式,用來從這個情境描述的分配中取樣。
本練習屬於課程
Statistical Thinking in Python (Part 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