从 t 统计量计算 p 值

Python 假设检验

James Chapman

Curriculum Manager, DataCamp

t 分布

  • t 统计量服从 t 分布
  • 有一个称为自由度(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 假设检验

Vamos praticar!

Python 假设检验

Preparing Video For Download...