Power Analysis - ส่วนที่ 1
ต่อไปเราจะมาทำ Power Analysis กัน โดยทั่วไปแล้ว การทดลองหรือการทดสอบ A/B ควรมี Power อย่างน้อย 80% วิธีหนึ่งที่ใช้บรรลุเป้าหมายนี้คือการคำนวณขนาดตัวอย่างที่จำเป็นเพื่อให้ได้ Power 80%
สมมติว่าคุณดูแลเว็บไซต์สื่อข่าว และต้องการเพิ่มระยะเวลาที่ผู้ใช้ใช้งานบนเว็บไซต์ ปัจจุบันระยะเวลาที่ผู้ใช้ใช้งานมีการแจกแจงแบบปกติ โดยมีค่าเฉลี่ย 1 นาที และส่วนเบี่ยงเบนมาตรฐาน 0.5 นาที สมมติว่าคุณกำลังเปิดตัวฟีเจอร์ใหม่ที่ทำให้หน้าเว็บโหลดเร็วขึ้น และต้องการทราบว่าต้องใช้ขนาดตัวอย่างเท่าใดจึงจะวัดการเพิ่มขึ้นของระยะเวลาใช้งาน 5% ได้
ในแบบฝึกหัดนี้ เราจะสร้างกรอบการทำงานสำหรับรันการจำลองหนึ่งครั้ง รัน t-test และคำนวณ p-value
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจำลองทางสถิติด้วย Python
คำแนะนำการฝึกหัด
- กำหนดค่า
effect_sizeเป็น 5%,control_meanเป็น 1 และcontrol_sdเป็น 0.5 - ใช้
np.random.normal()เพื่อสุ่มตัวอย่างหนึ่งชุดสำหรับcontrol_time_spentและtreatment_time_spentโดยใช้ค่าที่กำหนดไว้ - รัน t-test บน
treatment_time_spentและcontrol_time_spentโดยใช้st.ttest_ind()โดยที่stคือscipy.statsซึ่ง import ไว้แล้ว - กำหนดให้
stat_sigมีค่าเป็นTrueหากp_valueน้อยกว่า 0.05 และเป็นFalseในกรณีอื่น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Initialize effect_size, control_mean, control_sd
effect_size, sample_size, control_mean, control_sd = ____, 50, ____, ____
# Simulate control_time_spent and treatment_time_spent, assuming equal variance
control_time_spent = np.random.normal(loc=control_mean, scale=____, size=sample_size)
treatment_time_spent = np.random.normal(loc=____*(1+effect_size), scale=control_sd, size=____)
# Run the t-test and get the p_value
t_stat, p_value = st.ttest_ind(____, ____)
stat_sig = p_value < ____
print("P-value: {}, Statistically Significant? {}".format(p_value, stat_sig))