การทดสอบสมมติฐาน bootstrap สองกลุ่มตัวอย่างสำหรับผลต่างของค่าเฉลี่ย
ตอนนี้เราต้องการทดสอบสมมติฐานว่ากบ A และกบ B มีแรงกระแทกเฉลี่ยเท่ากัน แต่ไม่จำเป็นต้องมีการกระจายแบบเดียวกัน ซึ่งไม่สามารถทดสอบได้ด้วย permutation test
ในการทดสอบ bootstrap สองกลุ่มตัวอย่าง เราจะเลื่อน ทั้งสอง อาร์เรย์ให้มีค่าเฉลี่ยเท่ากัน เนื่องจากเราจำลองสมมติฐานว่าค่าเฉลี่ยของทั้งสองกลุ่มเท่ากัน จากนั้นจึงสุ่ม bootstrap samples จากอาร์เรย์ที่เลื่อนแล้ว และคำนวณผลต่างของค่าเฉลี่ย ซึ่งนับเป็น bootstrap replicate หนึ่งค่า และเราจะสร้าง replicates จำนวนมาก โดย p-value คือสัดส่วนของ replicates ที่มีผลต่างของค่าเฉลี่ยมากกว่าหรือเท่ากับที่สังเกตได้จริง
ออบเจกต์ forces_concat และ empirical_diff_means ถูกกำหนดไว้ใน namespace ของคุณแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 2)
คำแนะนำการฝึกหัด
- คำนวณค่าเฉลี่ยของแรงกระแทกทั้งหมด (จาก
forces_concat) โดยใช้np.mean() - สร้างชุดข้อมูลที่เลื่อนแล้วสำหรับ ทั้ง
force_aและforce_bให้ค่าเฉลี่ยของแต่ละชุดเท่ากับค่าเฉลี่ยของอาร์เรย์แรงกระแทกที่เชื่อมกัน - สร้าง bootstrap replicates ของค่าเฉลี่ยจำนวน 10,000 ค่า สำหรับอาร์เรย์ที่เลื่อนแล้วทั้งสอง
- คำนวณ bootstrap replicates ของผลต่างของค่าเฉลี่ย โดยนำ replicates ของแรงกระแทกที่เลื่อนแล้วของกบ B ลบออกจากกบ A
- คำนวณและแสดงค่า p-value จาก bootstrap replicates ที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Compute mean of all forces: mean_force
mean_force = ____
# Generate shifted arrays
force_a_shifted = force_a - np.mean(force_a) + mean_force
force_b_shifted = ____
# Compute 10,000 bootstrap replicates from shifted arrays
bs_replicates_a = draw_bs_reps(____, ____, ____)
bs_replicates_b = draw_bs_reps(____, ____, ____)
# Get replicates of difference of means: bs_replicates
bs_replicates = ____
# Compute and print p-value: p
p = ____ / ____
print('p-value =', p)