การทดสอบ t-test

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

James Chapman

Curriculum Manager, DataCamp

ปัญหาสองกลุ่มตัวอย่าง

  • เปรียบเทียบสถิติของกลุ่มตัวอย่างในแต่ละกลุ่มของตัวแปร
  • converted_comp คือตัวแปรเชิงตัวเลข
  • age_first_code_cut คือตัวแปรเชิงหมวดหมู่ที่มีระดับ ("child" และ "adult")
  • ผู้ใช้ที่เริ่มเขียนโค้ดตั้งแต่เด็กได้รับค่าตอบแทนสูงกว่าผู้ที่เริ่มเมื่อเป็นผู้ใหญ่หรือไม่?
การทดสอบสมมติฐานด้วย Python

สมมติฐาน

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

$H_{0}$: $\mu_{child} = \mu_{adult}$

$H_{0}$: $\mu_{child} - \mu_{adult} = 0$

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

$H_{A}$: $\mu_{child} > \mu_{adult}$

$H_{A}$: $\mu_{child} - \mu_{adult} > 0$

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

การคำนวณสถิติสรุปรายกลุ่ม

stack_overflow.groupby('age_first_code_cut')['converted_comp'].mean()
age_first_code_cut
adult    111313.311047
child    132419.570621
Name: converted_comp, dtype: float64
การทดสอบสมมติฐานด้วย Python

ค่าสถิติทดสอบ

  • ค่าเฉลี่ยของกลุ่มตัวอย่างใช้ประมาณค่าเฉลี่ยประชากร
  • $\bar{x}$ — ค่าเฉลี่ยของกลุ่มตัวอย่าง
  • $\bar{x}_{child}$ — ค่าเฉลี่ยค่าตอบแทนของผู้ที่เริ่มเขียนโค้ดตั้งแต่เด็ก
  • $\bar{x}_{adult}$ — ค่าเฉลี่ยค่าตอบแทนของผู้ที่เริ่มเขียนโค้ดเมื่อเป็นผู้ใหญ่
  • $\bar{x}_{child} - \bar{x}_{adult}$ — ค่าสถิติทดสอบ
  • z-score — ค่าสถิติทดสอบ (แบบมาตรฐาน)
การทดสอบสมมติฐานด้วย Python

การทำให้ค่าสถิติทดสอบเป็นมาตรฐาน

$z = \dfrac{\text{sample stat} - \text{population parameter}}{\text{standard error}}$

$t = \dfrac{\text{difference in sample stats} - \text{difference in population parameters}}{\text{standard error}}$

$t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}}) - (\mu_{\text{child}} - \mu_{\text{adult}})}{SE(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}$

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

ค่าความคลาดเคลื่อนมาตรฐาน

$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}}}}$

$s$ คือค่าเบี่ยงเบนมาตรฐานของตัวแปร

$n$ คือขนาดกลุ่มตัวอย่าง (จำนวนการสังเกต/แถวในกลุ่มตัวอย่าง)

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

การสมมติว่าสมมติฐานหลักเป็นจริง

$t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}}) - (\mu_{\text{child}} - \mu_{\text{adult}})}{SE(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}$

$H_{0}$: $\mu_{\text{child}} - \mu_{\text{adult}} = 0$    $\rightarrow$     $t = \dfrac{(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}}) }{SE(\bar{x}_{\text{child}} - \bar{x}_{\text{adult}})}$

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

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

การคำนวณโดยสมมติว่าสมมติฐานหลักเป็นจริง

xbar = stack_overflow.groupby('age_first_code_cut')['converted_comp'].mean()
adult    111313.311047
child    132419.570621
Name: converted_comp, dtype: float64 age_first_code_cut
s = stack_overflow.groupby('age_first_code_cut')['converted_comp'].std()
adult    271546.521729
child    255585.240115
Name: converted_comp, dtype: float64 age_first_code_cut
n = stack_overflow.groupby('age_first_code_cut')['converted_comp'].count()
adult    1376
child     885
Name: converted_comp, dtype: int64
การทดสอบสมมติฐานด้วย Python

การคำนวณค่าสถิติทดสอบ

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

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

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

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

Preparing Video For Download...