一標本比率検定

Pythonで学ぶ仮説検定

James Chapman

Curriculum Manager, DataCamp

第1章の復習

  • 未知の母比率に関する主張は妥当か?

 

  1. ブートストラップ分布から標本統計量の標準誤差を求める
  2. 標準化検定統計量を計算する
  3. p値を計算する
  4. どちらの仮説が妥当かを判断する

 

  • 今回は、ブートストラップ分布を使わずに検定統計量を計算する
Pythonで学ぶ仮説検定

比率の標準化検定統計量

$p$:母比率(未知の母数パラメータ)

$\hat{p}$:標本比率(標本統計量)

$p_{0}$:仮説上の母比率

$$ z = \frac{\hat{p} - \text{mean}(\hat{p})}{\text{SE}(\hat{p})} = \frac{\hat{p} - p}{\text{SE}(\hat{p})} $$

$H_{0}$が真と仮定すると、$p = p_{0}$より

$$ z = \dfrac{\hat{p} - p_{0}}{\text{SE}(\hat{p})} $$

Pythonで学ぶ仮説検定

標準誤差の計算を簡略化する

$SE_{\hat{p}} = \sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}$ $\rightarrow$ $H_0$のもとで、$SE_{\hat{p}}$は仮説上の$p_0$と標本サイズ$n$に依存する

$H_{0}$が真と仮定すると、

$z = \dfrac{\hat{p} - p_{0}}{\sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}}$

  • 標本情報($\hat{p}$と$n$)と仮説パラメータ($p_{0}$)のみを使用
Pythonで学ぶ仮説検定

なぜtではなくzを使うのか?

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

  • $s$は$\bar{x}$から計算される
    • $\bar{x}$は母平均を推定する
    • $s$は母標準偏差を推定する
    • パラメータ推定における不確実性が増加する
  • t分布 ― 正規分布よりも裾が厚い
  • $\hat{p}$は分子にのみ現れるため、zスコアで問題ない
Pythonで学ぶ仮説検定

Stack Overflowの年齢カテゴリ

$H_{0}$:30歳未満のStack Overflowユーザーの比率 $=0.5$

$H_{A}$:30歳未満のStack Overflowユーザーの比率 $\neq0.5$

alpha = 0.01
stack_overflow['age_cat'].value_counts(normalize=True)
Under 30       0.535604
At least 30    0.464396
Name: age_cat, dtype: float64
Pythonで学ぶ仮説検定

zのための変数

p_hat = (stack_overflow['age_cat'] == 'Under 30').mean()
0.5356037151702786
p_0 = 0.50
n = len(stack_overflow)
2261
Pythonで学ぶ仮説検定

zスコアの計算

$z = \dfrac{\hat{p} - p_{0}}{\sqrt{\dfrac{p_{0}*(1-p_{0})}{n}}}$

import numpy as np
numerator = p_hat - p_0
denominator = np.sqrt(p_0 * (1 - p_0) / n)
z_score = numerator / denominator
3.385911440783663
Pythonで学ぶ仮説検定

p値の計算

正規分布のCDF。-2未満の部分は赤、2超の部分は緑で示されている。 左側検定(「より小さい」):

from scipy.stats import norm
p_value = norm.cdf(z_score)

右側検定(「より大きい」):

p_value = 1 - norm.cdf(z_score)

両側検定(「等しくない」):

p_value = norm.cdf(-z_score) + 
  1 - norm.cdf(z_score)
p_value = 2 * (1 - norm.cdf(z_score))
0.0007094227368100725
p_value <= alpha
True
Pythonで学ぶ仮説検定

練習しましょう!

Pythonで学ぶ仮説検定

Preparing Video For Download...