Permutation test กับข้อมูลกบ
แรงกระแทกเฉลี่ยของกบ A อยู่ที่ 0.71 นิวตัน (N) และกบ B อยู่ที่ 0.42 N ซึ่งต่างกัน 0.29 N เป็นไปได้ว่ากบทั้งสองกระแทกด้วยแรงเท่ากัน และผลต่างที่สังเกตได้นี้เกิดขึ้นโดยบังเอิญ เราจะคำนวณความน่าจะเป็นที่จะได้ผลต่างของค่าเฉลี่ยแรงกระแทกอย่างน้อย 0.29 N ภายใต้สมมติฐานที่ว่าการกระจายตัวของแรงกระแทกของกบทั้งสองตัวเหมือนกัน โดยใช้ permutation test ที่มี test statistic เป็นผลต่างของค่าเฉลี่ย
เพื่อความสะดวก ข้อมูลถูกเก็บไว้ในอาร์เรย์ force_a และ force_b แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 2)
คำแนะนำการฝึกหัด
- นิยามฟังก์ชันที่มี call signature เป็น
diff_of_means(data_1, data_2)ซึ่งคืนค่าผลต่างของค่าเฉลี่ยระหว่างชุดข้อมูลสองชุด คือค่าเฉลี่ยของdata_1ลบด้วยค่าเฉลี่ยของdata_2 - ใช้ฟังก์ชันนี้คำนวณผลต่างของค่าเฉลี่ยเชิงประจักษ์ที่สังเกตได้จากกบทั้งสองตัว
- สุ่ม permutation replicates ของผลต่างของค่าเฉลี่ยจำนวน 10,000 ครั้ง
- คำนวณ p-value
- แสดงผล p-value
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def diff_of_means(data_1, data_2):
"""Difference in means of two arrays."""
# The difference of means of data_1, data_2: diff
diff = ____
return diff
# Compute difference of mean impact force from experiment: empirical_diff_means
empirical_diff_means = ____
# Draw 10,000 permutation replicates: perm_replicates
perm_replicates = draw_perm_reps(____, ____,
____, size=10000)
# Compute p-value: p
p = np.sum(____ >= ____) / len(____)
# Print the result
print('p-value =', p)