การทดสอบสมมติฐาน: จะงอยปากลึกขึ้นในปี 2012 หรือไม่?
จากกราฟ ECDF และช่วงความเชื่อมั่นที่คำนวณได้ เห็นได้ค่อนข้างชัดเจนว่าจะงอยปากของ G. scandens บนเกาะ Daphne Major มีความลึกเพิ่มขึ้น แต่เป็นไปได้ไหมที่ผลลัพธ์นี้เกิดจากความบังเอิญ? กล่าวคือ ความน่าจะเป็นที่จะสังเกตเห็นความแตกต่างของค่าเฉลี่ยความลึกของจะงอยปากในระดับนี้ หากค่าเฉลี่ยทั้งสองเท่ากันจริง มีค่าเท่าใด?
ข้อควรระวัง! สมมติฐานที่ทดสอบที่นี่ ไม่ใช่ ว่าความลึกของจะงอยปากมาจากการแจกแจงเดียวกัน ซึ่งหากเป็นกรณีนั้น สามารถใช้ permutation test ได้ แต่สมมติฐานนี้คือค่าเฉลี่ยทั้งสองเท่ากัน ดังนั้นในการทดสอบสมมติฐานนี้ จำเป็นต้องเลื่อนชุดข้อมูลทั้งสองให้มีค่าเฉลี่ยเท่ากัน แล้วจึงใช้ bootstrap sampling เพื่อคำนวณผลต่างของค่าเฉลี่ย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 2)
คำแนะนำการฝึกหัด
- สร้างอาร์เรย์ที่ต่อรวมกันจากความลึกของจะงอยปากในปี 1975 และ 2012 แล้วคำนวณและเก็บค่าเฉลี่ยของอาร์เรย์นั้น
- เลื่อน
bd_1975และbd_2012เพื่อให้ค่าเฉลี่ยของทั้งสองเท่ากับค่าเฉลี่ยของชุดข้อมูลรวมที่คำนวณไว้ - สุ่ม bootstrap replicates ของค่าเฉลี่ยจำนวน 10,000 ครั้ง สำหรับความลึกของจะงอยปากทั้งปี 1975 และ 2012
- ลบ replicates ของปี 1975 ออกจาก replicates ของปี 2012 เพื่อให้ได้ bootstrap replicates ของผลต่าง
- คำนวณและแสดงค่า p-value โดยผลต่างของค่าเฉลี่ยที่สังเกตได้จากแบบฝึกหัดก่อนหน้ายังคงอยู่ใน namespace ของคุณในชื่อ
mean_diff
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Compute mean of combined data set: combined_mean
combined_mean = ____(____((bd_1975, bd_2012)))
# Shift the samples
bd_1975_shifted = ____
bd_2012_shifted = ____
# Get bootstrap replicates of shifted data sets
bs_replicates_1975 = ____
bs_replicates_2012 = ____
# Compute replicates of difference of means: bs_diff_replicates
bs_diff_replicates = ____
# Compute the p-value
p = np.sum(____ >= ____) / len(____)
# Print p-value
print('p =', p)