t検定を行う

Pythonで学ぶ仮説検定

James Chapman

Curriculum Manager, DataCamp

2標本の課題

  • 変数のグループ間で標本統計量を比較
  • 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で学ぶ仮説検定

Passons à la pratique !

Pythonで学ぶ仮説検定

Preparing Video For Download...