由 t 統計量計算 p 值

Python 中的假設檢定

James Chapman

Curriculum Manager, DataCamp

t 分配

  • t 統計量服從 t 分配
  • 參數為「自由度」(degrees of freedom,或 df
  • 外觀類似常態分配,但尾部較肥

圖:標準常態分配與自由度為 1 的 t 分配之 PDF。t 分配尾巴較肥,中間峰較矮。

Python 中的假設檢定

自由度

  • 自由度越大 → t 分配越接近常態分配
  • 常態分配 → 自由度為無限大的 t 分配
  • 自由度:樣本中邏輯上彼此獨立的值之最大數目

圖:標準常態分配與多種自由度的 t 分配之 PDF。自由度增加時,尾巴變窄、峰值變高,更像常態分配。

Python 中的假設檢定

計算自由度

  • 資料集有 5 個獨立觀測值
  • 其中四個值為 2、6、8、5
  • 樣本平均為 5
  • 最後一個值必為 4
  • 這裡的自由度為 4

 

  • $df = n_{child} + n_{adult} - 2$
Python 中的假設檢定

假設

$H_{0}$:先在童年學寫程式者與先在成年學寫程式者,其平均報酬(USD)相同

$H_{A}$:先在童年學寫程式者的平均報酬(USD)更高,相較於先在成年學寫程式者。

 

使用右尾檢定

Python 中的假設檢定

顯著水準

$\alpha = 0.1$

若 $p \le \alpha$,則拒絕 $H_{0}$。

Python 中的假設檢定

計算 p 值:單一母體比例 vs. 一個值

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 統計量:用單一樣本統計量估計母體參數時使用

  • t 統計量:用多個樣本統計量估計母體參數時使用

Python 中的假設檢定

計算 p 值:兩組不同群體的平均數

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 值:兩組不同群體的平均數

  • 使用 t 分配的 CDF,而非常態分配的 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...