เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เราพบ 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, 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()
แก้ไขและรันโค้ด