p-values

การทดสอบสมมติฐานด้วย Python

James Chapman

Curriculum Manager, DataCamp

คดีอาญา

  • สถานะความจริงที่เป็นไปได้ 2 แบบ:
    1. จำเลยกระทำความผิด
    2. จำเลยไม่ได้กระทำความผิด
  • คำตัดสินที่เป็นไปได้ 2 แบบ:
    1. มีความผิด
    2. ไม่มีความผิด
  • เริ่มต้นจะสันนิษฐานว่าจำเลยไม่มีความผิด
  • อัยการต้องนำเสนอหลักฐาน "เกินกว่าข้อสงสัยที่สมเหตุสมผล" เพื่อให้ตัดสินว่ามีความผิด
การทดสอบสมมติฐานด้วย Python

อายุเมื่อเริ่มเขียนโปรแกรมครั้งแรก

  • age_first_code_cut จำแนกช่วงเวลาที่ผู้ใช้ Stack Overflow เริ่มเขียนโปรแกรมครั้งแรก
    • "adult" หมายถึงเริ่มต้นเมื่ออายุ 14 ปีขึ้นไป
    • "child" หมายถึงเริ่มต้นก่อนอายุ 14 ปี
  • งานวิจัยก่อนหน้า: 35% ของนักพัฒนาซอฟต์แวร์เริ่มเขียนโปรแกรมตั้งแต่วัยเด็ก
  • มีหลักฐานว่านักวิทยาศาสตร์ข้อมูลสัดส่วนที่มากกว่านี้เริ่มเขียนโปรแกรมตั้งแต่วัยเด็กหรือไม่?
การทดสอบสมมติฐานด้วย Python

นิยาม

สมมติฐาน คือข้อความเกี่ยวกับพารามิเตอร์ของประชากรที่ยังไม่ทราบค่า

การทดสอบสมมติฐาน คือการทดสอบสมมติฐานสองข้อที่แข่งขันกัน

  • สมมติฐานว่าง ($H_{0}$) คือแนวคิดที่มีอยู่เดิม

  • สมมติฐานทางเลือก ($H_{A}$) คือแนวคิด "ท้าทาย" ใหม่ของนักวิจัย

สำหรับปัญหาของเรา:

  • $H_{0}$: สัดส่วนของนักวิทยาศาสตร์ข้อมูลที่เริ่มเขียนโปรแกรมตั้งแต่วัยเด็กคือ 35%
  • $H_{A}$: สัดส่วนของนักวิทยาศาสตร์ข้อมูลที่เริ่มเขียนโปรแกรมตั้งแต่วัยเด็กมากกว่า 35%
1 "Naught" เป็นภาษาอังกฤษแบบบริติชที่แปลว่า "ศูนย์" ด้วยเหตุผลทางประวัติศาสตร์ "H-naught" จึงเป็นแบบแผนสากลในการออกเสียงสมมติฐานว่าง
การทดสอบสมมติฐานด้วย Python

คดีอาญาเทียบกับการทดสอบสมมติฐาน

  • $H_{A}$ หรือ $H_{0}$ เป็นจริงเพียงข้อเดียว (ไม่ใช่ทั้งคู่)
  • เริ่มต้นสันนิษฐานว่า $H_{0}$ เป็นจริง
  • ผลการทดสอบคือ "ปฏิเสธ $H_{0}$" หรือ "ไม่ปฏิเสธ $H_{0}$"
  • หากหลักฐานจากตัวอย่างบ่งชี้อย่าง "มีนัยสำคัญ" ว่า $H_{A}$ เป็นจริง ให้ปฏิเสธ $H_{0}$ มิฉะนั้นเลือก $H_{0}$

ระดับนัยสำคัญ คือ "เกินกว่าข้อสงสัยที่สมเหตุสมผล" ในการทดสอบสมมติฐาน

การทดสอบสมมติฐานด้วย Python

การทดสอบหางเดียวและสองหาง

กราฟความหนาแน่นของการแจกแจงปกติมาตรฐาน โดยเน้นหางซ้ายและหางขวาด้วยสีแดง

การทดสอบสมมติฐานจะตรวจสอบว่าค่าสถิติจากตัวอย่างอยู่ในหางของ null distribution หรือไม่

การทดสอบ หาง
ทางเลือก แตกต่างจาก ค่าว่าง สองหาง
ทางเลือก มากกว่า ค่าว่าง หางขวา
ทางเลือก น้อยกว่า ค่าว่าง หางซ้าย

 

$H_{A}$: สัดส่วนของนักวิทยาศาสตร์ข้อมูลที่เริ่มเขียนโปรแกรมตั้งแต่วัยเด็กมากกว่า 35%

นี่คือการทดสอบหางขวา

การทดสอบสมมติฐานด้วย Python

p-values

p-values: ความน่าจะเป็นของการได้ผลลัพธ์นั้น โดยสมมติว่าสมมติฐานว่างเป็นจริง

  • p-value มาก แสดงว่าสนับสนุน $H_{0}$ มาก
    • ค่าสถิติมักจะไม่อยู่ในหางของ null distribution
  • p-value น้อย แสดงว่ามีหลักฐานต่อต้าน $H_{0}$ อย่างชัดเจน
    • ค่าสถิติมักจะอยู่ในหางของ null distribution
  • "p" ใน p-value → ความน่าจะเป็น (probability)
  • "น้อย" หมายถึง "ใกล้ศูนย์"
การทดสอบสมมติฐานด้วย Python

การคำนวณ z-score

prop_child_samp = (stack_overflow['age_first_code_cut'] == "child").mean()
0.39141972578505085
prop_child_hyp = 0.35
std_error = np.std(first_code_boot_distn, ddof=1)
0.010351057228878566
z_score = (prop_child_samp - prop_child_hyp) / std_error
4.001497129152506
การทดสอบสมมติฐานด้วย Python

การคำนวณ p-value

  • norm.cdf() คือ normal CDF จาก scipy.stats
  • การทดสอบหางซ้าย → ใช้ norm.cdf()
  • การทดสอบหางขวา → ใช้ 1 - norm.cdf()

 

from scipy.stats import norm
1 - norm.cdf(z_score, loc=0, scale=1)
3.1471479512323874e-05
การทดสอบสมมติฐานด้วย Python

มาฝึกกันเถอะ!

การทดสอบสมมติฐานด้วย Python

Preparing Video For Download...