การทดสอบสมมติฐาน - ความแตกต่างของค่าเฉลี่ย
เราต้องการทดสอบสมมติฐานว่ามีความแตกต่างในยอดบริจาคเฉลี่ยที่ได้รับจากกลุ่ม A และ B หรือไม่ ในแบบฝึกหัดก่อนหน้า คุณได้เรียนรู้วิธีสร้าง permutation ของข้อมูลหนึ่งชุดแล้ว คราวนี้เราจะสร้าง null distribution ของความแตกต่างระหว่างค่าเฉลี่ย แล้วจึงคำนวณ p-value
ในการสร้าง null distribution เราจะสร้างชุดข้อมูลที่ถูก permute หลายชุด และบันทึกความแตกต่างของค่าเฉลี่ยในแต่ละกรณี จากนั้นคำนวณค่าสถิติทดสอบ (test statistic) จากความแตกต่างของค่าเฉลี่ยของชุดข้อมูลต้นฉบับ สุดท้ายประมาณค่า p-value โดยคำนวณสองเท่าของสัดส่วนกรณีที่ความแตกต่างมีค่ามากกว่าหรือเท่ากับค่าสัมบูรณ์ของค่าสถิติทดสอบ (สมมติฐานแบบ 2-sided) หาก p-value น้อยกว่าประมาณ 0.05 ก็สามารถสรุปได้ว่ามีนัยสำคัญทางสถิติ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจำลองทางสถิติด้วย Python
คำแนะนำการฝึกหัด
- สร้าง permutation หลายชุดของ
donations_Aและdonations_Bแล้วกำหนดให้กับตัวแปรperm - กำหนดให้
samplesเท่ากับความแตกต่างของค่าเฉลี่ยระหว่างpermuted_A_datasetsและpermuted_B_datasetsโดยกำหนดaxis=1เพื่อให้คำนวณค่าเฉลี่ยของแต่ละชุดข้อมูลแทนที่จะเป็นค่าเฉลี่ยรวม - กำหนดให้
test_statเท่ากับความแตกต่างของค่าเฉลี่ยระหว่างdonations_Aและdonations_B - คำนวณ p-value
p_valโดยใช้สองเท่าของสัดส่วนของsamplesที่มีค่ามากกว่าหรือเท่ากับค่าสัมบูรณ์ของtest_stat
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Generate permutations equal to the number of repetitions
perm = np.array([np.random.____(len(____) + len(____)) for i in range(reps)])
permuted_A_datasets = data[perm[:, :len(donations_A)]]
permuted_B_datasets = data[perm[:, len(donations_A):]]
# Calculate the difference in means for each of the datasets
samples = np.mean(____, axis=1) - np.mean(____, axis=1)
# Calculate the test statistic and p-value
test_stat = ____
p_val = 2*np.sum(____ >= np.abs(____))/reps
print("p-value = {}".format(p_val))