Bootstrap Replicates ของค่าเฉลี่ยและ SEM
ในแบบฝึกหัดนี้ คุณจะประมาณฟังก์ชันความหนาแน่นของความน่าจะเป็น (PDF) ของปริมาณน้ำฝนเฉลี่ยรายปีที่สถานีอุตุนิยมวิทยา Sheffield ด้วยวิธี bootstrap ขอให้นึกถึงสิ่งที่เรากำลังทำ: เราพยายามประมาณค่าเฉลี่ยปริมาณน้ำฝนรายปีที่จะได้รับ หากสถานีอุตุนิยมวิทยา Sheffield สามารถวัดซ้ำข้อมูลตั้งแต่ปี 1883 ถึง 2015 ได้ไม่จำกัดครั้ง นี่คือการประมาณค่าเฉลี่ยในเชิง ความน่าจะเป็น จากนั้นคุณจะพล็อต PDF ในรูปแบบฮิสโทแกรม และจะเห็นว่ามันมีการแจกแจงแบบปกติ (Normal)
ในทางทฤษฎีสามารถพิสูจน์ได้ว่า ภายใต้เงื่อนไขที่ไม่เข้มงวดมากนัก ค่าเฉลี่ยจะมีการแจกแจงแบบปกติเสมอ (หลักการนี้ใช้ได้เฉพาะกับค่าเฉลี่ยและสถิติบางตัวเท่านั้น ไม่ใช่ทุกกรณี) ค่าเบี่ยงเบนมาตรฐานของการแจกแจงนี้เรียกว่า ค่าความผิดพลาดมาตรฐานของค่าเฉลี่ย หรือ SEM คำนวณได้จากค่าเบี่ยงเบนมาตรฐานของข้อมูลหารด้วยรากที่สองของจำนวนข้อมูล กล่าวคือ sem = np.std(data) / np.sqrt(len(data)) ด้วยวิธีสถิติแบบแฮกเกอร์ คุณจะได้ผลลัพธ์เดียวกันโดยไม่ต้องอนุมานสูตรทางคณิตศาสตร์ และจะสามารถตรวจสอบผลลัพธ์นี้จาก bootstrap replicates ของคุณได้
ชุดข้อมูลถูกโหลดไว้ล่วงหน้าในอาร์เรย์ชื่อ rainfall แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 2)
คำแนะนำการฝึกหัด
- สุ่ม bootstrap replicates จำนวน
10000ตัวของค่าเฉลี่ยปริมาณน้ำฝนรายปี โดยใช้ฟังก์ชันdraw_bs_reps()และอาร์เรย์rainfallคำใบ้: ส่งnp.meanเป็นค่าของfuncเพื่อคำนวณค่าเฉลี่ย- เป็นการเตือนความจำ:
draw_bs_reps()รับอาร์กิวเมนต์ 3 ตัว ได้แก่data,func, และsize
- เป็นการเตือนความจำ:
- คำนวณและแสดงค่าความผิดพลาดมาตรฐานของค่าเฉลี่ยของ
rainfall- สูตรที่ใช้คำนวณคือ
np.std(data) / np.sqrt(len(data))
- สูตรที่ใช้คำนวณคือ
- คำนวณและแสดงค่าเบี่ยงเบนมาตรฐานของ
bs_replicates - สร้างฮิสโทแกรมของ replicates โดยใช้ keyword argument
normed=Trueและ50bins - กด ส่งคำตอบ เพื่อดูกราฟ!
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Take 10,000 bootstrap replicates of the mean: bs_replicates
bs_replicates = ____
# Compute and print SEM
sem = ____ / np.sqrt(____)
print(sem)
# Compute and print standard deviation of bootstrap replicates
bs_std = ____
print(bs_std)
# Make a histogram of the results
_ = plt.hist(____, ____=50, ____=True)
_ = plt.xlabel('mean annual rainfall (mm)')
_ = plt.ylabel('PDF')
# Show the plot
plt.show()