執行 t 檢定

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 分數-(標準化的)檢定統計量
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...