การคำนวณค่า b-value สำหรับ Parkfield
ECDF มีประสิทธิภาพในการเผยให้เห็น roll-off ได้ชัดเจน ดังที่เห็นในช่วงขนาดต่ำกว่า 1 เนื่องจากมีแผ่นดินไหวที่ขนาดเกิน 3 อยู่เป็นจำนวนมาก จึงสามารถใช้ mt = 3 เป็นเกณฑ์ความสมบูรณ์ของข้อมูล (completeness threshold) ได้ โดยใช้เกณฑ์นี้คำนวณค่า b-value สำหรับพื้นที่ Parkfield ในช่วงปี 1950 ถึง 2016 พร้อมช่วงความเชื่อมั่น 95% แล้วแสดงผลลัพธ์บนหน้าจอ ตัวแปร mags ที่เก็บขนาดแผ่นดินไหวทั้งหมดมีอยู่แล้วใน namespace
จากนั้นซ้อนกราฟ CDF เชิงทฤษฎีของการแจกแจงแบบเอกซ์โปเนนเชียลเพื่อตรวจสอบว่าพื้นที่ Parkfield เป็นไปตามกฎ Gutenberg-Richter หรือไม่
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
กรณีศึกษาด้านการคิดเชิงสถิติ
คำแนะนำการฝึกหัด
- คำนวณค่า b-value และช่วงความเชื่อมั่น 95% โดยใช้ฟังก์ชัน
b_value()ที่สร้างขึ้น โดยใช้ bootstrap replicates จำนวน 10,000 ครั้ง - ใช้
np.random.exponential()เพื่อสุ่มตัวอย่าง 100,000 ค่าจากการแจกแจงเชิงทฤษฎี โดยค่าเฉลี่ยของการแจกแจงคือb/np.log(10)และต้องบวกmtเข้าไปในตัวอย่างเพื่อจัดการพารามิเตอร์ตำแหน่ง (location parameter) ให้ถูกต้อง จากนั้นเก็บผลลัพธ์ไว้ในm_theor - พล็อต ECDF ของ
m_theorเป็นเส้นกราฟ - พล็อต ECDF ของขนาดแผ่นดินไหวทั้งหมดที่สูงกว่า
mtเป็นจุด - คลิก 'ส่งคำตอบ' เพื่อแสดงกราฟและพิมพ์ค่า b-value พร้อมช่วงความเชื่อมั่นบนหน้าจอ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Compute b-value and 95% confidence interval
b, conf_int = ____(____, ____, ____=[____, ____], n_reps=____)
# Generate samples to for theoretical ECDF
m_theor = ____(____, size=____) + ____
# Plot the theoretical CDF
_ = ____(*____)
# Plot the ECDF (slicing mags >= mt)
_ = plt.plot(*____(____[____ >= ____]), marker='.', linestyle='none')
# Pretty up and show the plot
_ = plt.xlabel('magnitude')
_ = plt.ylabel('ECDF')
_ = plt.xlim(2.8, 6.2)
plt.show()
# Report the results
print("""
b-value: {0:.2f}
95% conf int: [{1:.2f}, {2:.2f}]""".format(b, *conf_int))