ถ้ามีเรื่องราว ก็จำลองได้!
บางครั้ง เรื่องราวที่อธิบายการแจกแจงความน่าจะเป็นของเราอาจไม่มีการแจกแจงที่มีชื่อเฉพาะรองรับ ในกรณีเช่นนี้ ไม่ต้องกังวล! เพราะสามารถจำลองมันได้เสมอ เราจะทำแบบนั้นในแบบฝึกหัดนี้และแบบฝึกหัดถัดไป
ในแบบฝึกหัดก่อนหน้า เราได้พิจารณาเหตุการณ์หายากอย่างการขว้างโนฮิตเตอร์ใน Major League Baseball Hitting the cycle คือเมื่อนักตีทำได้ครบทั้ง 4 ประเภทในเกมเดียว ซึ่งก็เป็นอีกเหตุการณ์หายากในเบสบอลเช่นกัน เช่นเดียวกับโนฮิตเตอร์ เหตุการณ์นี้สามารถจำลองด้วยกระบวนการปัวซง ดังนั้นเวลาระหว่างการเกิด hitting the cycle จึงมีการแจกแจงแบบเอกซ์โพเนนเชียลด้วย
เราต้องรอนานแค่ไหนกว่าจะได้เห็นโนฮิตเตอร์ แล้วตามด้วย การ hitting the cycle? แนวคิดคือต้องรอสักช่วงหนึ่งสำหรับโนฮิตเตอร์ก่อน แล้วหลังจากนั้นจึงรอสำหรับ hitting the cycle อีกครั้ง กล่าวอีกนัยหนึ่ง เวลารอรวมสำหรับการมาถึงของกระบวนการปัวซงสองกระบวนการต่อเนื่องกันคือเท่าไร? เวลารอรวมคือเวลาที่รอโนฮิตเตอร์บวกกับเวลาที่รอ hitting the cycle
ตอนนี้จะได้เขียนฟังก์ชันเพื่อสุ่มตัวอย่างจากการแจกแจงที่อธิบายด้วยเรื่องราวนี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 1)
คำแนะนำการฝึกหัด
- กำหนดฟังก์ชันที่มี call signature เป็น
successive_poisson(tau1, tau2, size=1)เพื่อสุ่มเวลารอสำหรับโนฮิตเตอร์และการ hitting the cycle- สุ่มเวลารอ (จำนวน
sizeตัวอย่าง) สำหรับโนฮิตเตอร์จากการแจกแจงแบบเอกซ์โพเนนเชียลที่กำหนดพารามิเตอร์ด้วยtau1แล้วกำหนดให้กับt1 - สุ่มเวลารอ (จำนวน
sizeตัวอย่าง) สำหรับการ hitting the cycle จากการแจกแจงแบบเอกซ์โพเนนเชียลที่กำหนดพารามิเตอร์ด้วยtau2แล้วกำหนดให้กับ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