เราพบเกม no-hitter บ่อยแค่ไหน?
จำนวนเกมที่เล่นระหว่างเกม no-hitter แต่ละครั้งในยุคสมัยใหม่ (ค.ศ. 1901-2015) ของ Major League Baseball ถูกเก็บไว้ในอาร์เรย์ nohitter_times
หากสมมติว่าเกม no-hitter เป็นไปตามกระบวนการ Poisson แล้ว ช่วงเวลาระหว่างเกม no-hitter แต่ละครั้งจะมีการแจกแจงแบบเอกซ์โพเนนเชียล ดังที่ได้เห็นกันมาแล้ว การแจกแจงแบบเอกซ์โพเนนเชียลมีพารามิเตอร์เพียงตัวเดียว ซึ่งเราจะเรียกว่า \(\tau\) หรือช่วงเวลาปกติ ค่าพารามิเตอร์ \(\tau\) ที่ทำให้การแจกแจงแบบเอกซ์โพเนนเชียลเข้ากับข้อมูลได้ดีที่สุดคือค่าเฉลี่ยของช่วงเวลาระหว่างเกม no-hitter (โดยนับเวลาเป็นจำนวนเกม)
ให้คำนวณค่าพารามิเตอร์นี้จากข้อมูล จากนั้นใช้ np.random.exponential() เพื่อ "จำลอง" ประวัติศาสตร์ของ Major League Baseball ด้วยการสุ่มช่วงเวลาระหว่างเกม no-hitter จากการแจกแจงแบบเอกซ์โพเนนเชียลที่ใช้ค่า \(\tau\) ที่หาได้ แล้วพล็อตฮิสโทแกรมเป็นค่าประมาณของ PDF
มีการนำเข้า NumPy, pandas, matplotlib.pyplot และ seaborn ให้แล้วในชื่อ np, pd, plt และ sns ตามลำดับ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 2)
คำแนะนำการฝึกหัด
- กำหนด seed ของตัวสร้างตัวเลขสุ่มด้วยค่า
42 - คำนวณค่าเฉลี่ยของช่วงเวลา (นับเป็นจำนวนเกม) ระหว่างเกม no-hitter
- สุ่ม 100,000 ตัวอย่างจากการแจกแจงแบบเอกซ์โพเนนเชียล โดยใช้พารามิเตอร์ที่คำนวณได้จากค่าเฉลี่ยของช่วงเวลาระหว่างเกม no-hitter
- พล็อต PDF เชิงทฤษฎีโดยใช้
plt.hist()โดยระบุ keyword arguments ได้แก่bins=50,density=Trueและhisttype='step'และอย่าลืมติดป้ายกำกับแกน - แสดงกราฟที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Seed random number generator
____
# Compute mean no-hitter time: tau
tau = ____
# Draw out of an exponential distribution with parameter tau: inter_nohitter_time
inter_nohitter_time = ____(____, 100000)
# Plot the PDF and label axes
_ = ____(inter_nohitter_time,
____, ____, ____)
_ = plt.xlabel('Games between no-hitters')
_ = plt.ylabel('PDF')
# Show the plot
plt.show()