เราพบ 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 argumentsbins=50,normed=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()