การทดสอบสมมติฐานแบบ Bootstrap
การทดสอบด้วย permutation มีสมมติฐานที่ค่อนข้างจำกัด กล่าวคือ ความยาว bout ของกลุ่ม heterozygote และ wild type ต้องมีการกระจายตัวที่เหมือนกันทุกประการ ทีนี้ลองใช้การทดสอบสมมติฐานแบบ bootstrap เพื่อทดสอบว่าค่าเฉลี่ยของทั้งสองกลุ่มเท่ากันหรือไม่ โดยไม่ต้องตั้งสมมติฐานใด ๆ เกี่ยวกับการกระจายตัวของข้อมูล
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
กรณีศึกษาด้านการคิดเชิงสถิติ
คำแนะนำการฝึกหัด
- สร้างอาร์เรย์
bout_lengths_concatที่รวมความยาว bout ของทั้ง wild type (bout_lengths_wt) และ heterozygote (bout_lengths_het) เข้าด้วยกันโดยใช้np.concatenate() - คำนวณค่าเฉลี่ยของความยาว bout ทั้งหมดจากอาร์เรย์ที่รวมแล้ว (
bout_lengths_concat) แล้วเก็บผลลัพธ์ไว้ในตัวแปรmean_bout_length - เลื่อนทั้งสองชุดข้อมูลให้มีค่าเฉลี่ยเท่ากัน โดยใช้ค่า
mean_bout_lengthแล้วเก็บอาร์เรย์ที่เลื่อนแล้วไว้ในตัวแปรwt_shiftedและhet_shifted - ใช้
dcst.draw_bs_reps()เพื่อสุ่ม bootstrap replicate ของค่าเฉลี่ยจำนวน 10,000 ครั้งสำหรับแต่ละชุดข้อมูลที่เลื่อนแล้ว แล้วเก็บผลลัพธ์ไว้ในbs_reps_wtและbs_reps_hetตามลำดับ - ลบ
bs_reps_wtออกจากbs_reps_hetเพื่อให้ได้ bootstrap replicate ของผลต่างค่าเฉลี่ย แล้วเก็บผลลัพธ์ไว้ในตัวแปรbs_reps - คำนวณค่า p-value โดยนิยามให้ "รุนแรงพอ ๆ กันหรือมากกว่า" หมายถึงกรณีที่ผลต่างค่าเฉลี่ยภายใต้สมมติฐานหลักมีค่ามากกว่าหรือเท่ากับค่าที่สังเกตได้จากการทดลองจริง ทั้งนี้ ตัวแปร
diff_means_expจากแบบฝึกหัดก่อนหน้ายังคงอยู่ใน namespace ของคุณแล้ว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Concatenate arrays: bout_lengths_concat
bout_lengths_concat = ____((____, ____))
# Compute mean of all bout_lengths: mean_bout_length
mean_bout_length = ____
# Generate shifted arrays
wt_shifted = ____ - np.mean(____) + ____
het_shifted = ____ - ____ + ____
# Compute 10,000 bootstrap replicates from shifted arrays
bs_reps_wt = ____
bs_reps_het = ____
# Get replicates of difference of means: bs_replicates
bs_reps = ____ - ____
# Compute and print p-value: p
p = ____(____ >= ____) / len(____)
print('p-value =', p)