การคำนวณ p-value จาก t-statistic

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

James Chapman

Curriculum Manager, DataCamp

t-distributions

  • t statistic เป็นไปตาม t-distribution
  • มีพารามิเตอร์ที่เรียกว่า degrees of freedom หรือ df
  • มีรูปร่างคล้าย normal distribution แต่หางอ้วนกว่า

กราฟแสดง PDF ของ standard normal distribution เปรียบเทียบกับ t-distribution ที่มี 1 degree of freedom โดย t-distribution มีหางอ้วนกว่าและยอดเตี้ยกว่า

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

Degrees of freedom

  • Degrees of freedom มากขึ้น $\rightarrow$ t-distribution เข้าใกล้ normal distribution มากขึ้น
  • Normal distribution $\rightarrow$ t-distribution ที่มี df อนันต์
  • Degrees of freedom: จำนวนค่าที่เป็นอิสระเชิงตรรกะสูงสุดในตัวอย่างข้อมูล

กราฟแสดง PDF ของ standard normal distribution เปรียบเทียบกับ t-distribution ที่มี degrees of freedom ต่างกัน เมื่อ degrees of freedom เพิ่มขึ้น หางจะแคบลงและยอดสูงขึ้น ใกล้เคียง normal distribution มากขึ้น

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

การคำนวณ degrees of freedom

  • ชุดข้อมูลมี 5 ค่าสังเกตที่เป็นอิสระ
  • สี่ค่าแรกคือ 2, 6, 8 และ 5
  • ค่าเฉลี่ยของตัวอย่างเท่ากับ 5
  • ค่าสุดท้ายต้องเป็น 4
  • ในที่นี้มี degrees of freedom เท่ากับ 4

 

  • $df = n_{child} + n_{adult} - 2$
การทดสอบสมมติฐานด้วย Python

สมมติฐาน

$H_{0}$: ค่าตอบแทนเฉลี่ย (หน่วย USD) เท่ากัน สำหรับผู้ที่เริ่มเขียนโค้ดตั้งแต่เด็กและผู้ที่เริ่มเขียนโค้ดเมื่อโตแล้ว

$H_{A}$: ค่าตอบแทนเฉลี่ย (หน่วย USD) สูงกว่า สำหรับผู้ที่เริ่มเขียนโค้ดตั้งแต่เด็ก เมื่อเทียบกับผู้ที่เริ่มเขียนโค้ดเมื่อโตแล้ว

 

ใช้ right-tailed test

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

ระดับนัยสำคัญ

$\alpha = 0.1$

หาก $p \le \alpha$ ให้ปฏิเสธ $H_{0}$

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

การคำนวณ p-value: สัดส่วนหนึ่งเทียบกับค่าคงที่

from scipy.stats import norm
1 - norm.cdf(z_score)

$SE(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}}) \approx \sqrt{\dfrac{s_{\text{child}}^2}{n_{\text{child}}} + \dfrac{s_{\text{adult}}^2}{n_{\text{adult}}}}$

  • z-statistic: ใช้เมื่อนำสถิติตัวอย่างหนึ่งตัวมาประมาณค่าพารามิเตอร์ประชากร

  • t-statistic: ใช้เมื่อนำสถิติตัวอย่างหลายตัวมาประมาณค่าพารามิเตอร์ประชากร

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

การคำนวณ p-value: ค่าเฉลี่ยสองกลุ่มที่แตกต่างกัน

numerator = xbar_child - xbar_adult
denominator = np.sqrt(s_child ** 2 / n_child + s_adult ** 2 / n_adult)
t_stat = numerator / denominator
1.8699313316221844
degrees_of_freedom = n_child + n_adult - 2
2259
การทดสอบสมมติฐานด้วย Python

การคำนวณ p-value: ค่าเฉลี่ยสองกลุ่มที่แตกต่างกัน

  • ใช้ t-distribution CDF แทน normal CDF
from scipy.stats import t
1 - t.cdf(t_stat, df=degrees_of_freedom)
0.030811302165157595
  • มีหลักฐานว่านักวิทยาศาสตร์ข้อมูลของ Stack Overflow ที่เริ่มเขียนโค้ดตั้งแต่เด็กมีรายได้สูงกว่า
การทดสอบสมมติฐานด้วย Python

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

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

Preparing Video For Download...