p値

Pythonで学ぶ仮説検定

James Chapman

Curriculum Manager, DataCamp

刑事裁判

  • 考えられる真の状態は2つ:
    1. 被告が犯罪を犯した
    2. 被告が犯罪を犯していない
  • 考えられる評決は2つ:
    1. 有罪
    2. 無罪
  • 最初は被告が無罪と仮定される
  • 有罪評決には「合理的な疑いを超えた」証拠の提示が必要
Pythonで学ぶ仮説検定

プログラミング初体験の年齢

  • age_first_code_cut はStack Overflowユーザーがプログラミングを始めた時期を分類します
    • "adult" は14歳以上で開始したことを意味します
    • "child" は14歳未満で開始したことを意味します
  • 先行研究:ソフトウェア開発者の35%が子供の頃にプログラミングを始めた
  • データサイエンティストでその割合が高いという証拠はあるか?
Pythonで学ぶ仮説検定

定義

仮説とは、未知の母集団パラメータに関する主張です

仮説検定とは、2つの競合する仮説を検定することです

  • 帰無仮説($H_{0}$) は既存の考え方

  • 対立仮説($H_{A}$) は研究者が提唱する新しい考え方

今回の問題では:

  • $H_{0}$: データサイエンティストが子供の頃にプログラミングを始めた割合は35%
  • $H_{A}$: データサイエンティストが子供の頃にプログラミングを始めた割合は35%超
1 「H₀」は国際的な慣例として「エイチ・ノート」と発音されます。
Pythonで学ぶ仮説検定

刑事裁判と仮説検定の対比

  • $H_{A}$ と $H_{0}$ のどちらか一方のみが真
  • 最初は $H_{0}$ が真と仮定される
  • 検定の結果は「$H_{0}$ を棄却」または「$H_{0}$ を棄却しない」のいずれか
  • 標本の証拠が $H_{A}$ を「有意」に支持する場合は $H_{0}$ を棄却、そうでなければ $H_{0}$ を採択

有意水準は、仮説検定における「合理的な疑いを超えた」基準に相当します

Pythonで学ぶ仮説検定

片側検定と両側検定

標準正規分布の確率密度関数の密度プロット。左右の裾が赤でハイライトされている。

仮説検定は、標本統計量が帰無分布の裾に位置するかどうかを確認します

検定
対立仮説が帰無仮説と 異なる 両側
対立仮説が帰無仮説より 大きい 右側
対立仮説が帰無仮説より 小さい 左側

 

$H_{A}$: データサイエンティストが子供の頃にプログラミングを始めた割合は35%超

これは右側検定です

Pythonで学ぶ仮説検定

p値

p値:帰無仮説が真であると仮定した場合に、その結果が得られる確率

  • p値が大きい → $H_{0}$ への支持が強い
    • 統計量は帰無分布の裾にない可能性が高い
  • p値が小さい → $H_{0}$ に反する強い証拠
    • 統計量は帰無分布の裾にある可能性が高い
  • p値の「p」→ 確率(probability)
  • 「小さい」とは「ゼロに近い」という意味
Pythonで学ぶ仮説検定

zスコアの計算

prop_child_samp = (stack_overflow['age_first_code_cut'] == "child").mean()
0.39141972578505085
prop_child_hyp = 0.35
std_error = np.std(first_code_boot_distn, ddof=1)
0.010351057228878566
z_score = (prop_child_samp - prop_child_hyp) / std_error
4.001497129152506
Pythonで学ぶ仮説検定

p値の計算

  • norm.cdf()scipy.stats の正規CDF関数です。
  • 左側検定 → norm.cdf() を使用。
  • 右側検定 → 1 - norm.cdf() を使用。

 

from scipy.stats import norm
1 - norm.cdf(z_score, loc=0, scale=1)
3.1471479512323874e-05
Pythonで学ぶ仮説検定

lass uns üben!

Pythonで学ぶ仮説検定

Preparing Video For Download...