文系エンジニアが統計的仮説検定をゼロから勉強してみたまとめ


Disclaimer

文系学部出身、数学で統計をまったく通ってこなかった一介のウェブ系エンジニアが、初めて「統計的仮説検定」を勉強してみたので復習がてらQiitaを書いてみました。
本内容は、以下のudemyコースを大いに参考にしています。
https://www.udemy.com/course/the-data-science-course-complete-data-science-bootcamp/

初学者につき間違いが含まれているかもしれません。
その際はコメントでご指摘いただければ幸いです。

そもそも統計的仮説検定って何なの?

統計的仮説検定(Hypothesis testing)とは、ある仮説が正しいかどうかを統計的手法を用いて検証する方法のことです。

……これだけじゃ何のことかわかりませんね。もう少し具体例を出して説明してみましょう。

  • 日本におけるデータサイエンティストの平均年収は1500万円以上である。
  • ある居酒屋では、金曜日よりも土曜日にビールの売上が増える。
  • 7畳ワンルームアパートの家賃は、東京のほうが大阪より20%以上高い。

これらはすべて仮説の一例です。
ひとつめの例に関して厳密に調査しようとすると、日本中のデータサイエンティストの年収をすべて調べなければいけませんが、それは現実的ではありません。

ですが統計学を用いることで、仮説が一定の確率のもとで正しいかどうかを検証することができるのです。

統計的仮説検定の方法

仮説を用意する

検定にはふたつの仮説が必要です。

  • 帰無仮説(Null hypothesis)$H_0$: 最終的に否定したい仮説。
  • 対立仮説(Alternative hypothesis) $H_1$: 最終的に証明したい仮説。一般的に、こちらが検証者の意見になる。

データサイエンティストの年収の例を取ると、それぞれの仮説はこうなります。

$H_0$: 日本におけるデータサイエンティストの平均年収は1500万円未満である。
$H_1$: 日本におけるデータサイエンティストの平均年収は1500万円以上である。

$H_0$が間違いであるという結論が導ければ、$H_1$が正しいことが証明できます。
なんでそんな回りくどいことを……と思うかもしれませんが、そういうものです。

$H_0$が間違いであると示すことを、棄却する(Reject)といいます。

有意水準を決める

有意水準(Significance level)とは、帰無仮説を棄却する水準のことです。
一般的には5%か1%がよく用いられ、記号αで表されます。

「間違った結論が導かれる確率」と考えるとわかりやすいです。
有意水準5%のもとで検定を行うと、20回に1回は間違った結論が出る(帰無仮説のほうが正しいのに棄却してしまう)ことになります。

たとえば、データサイエンティストの年収は本当は1500万円未満なのに、たまたま集めたサンプルに高年収の人が集まってしまい「1500万円以上である」という結論が出ることも、低い確率ですが起こりえます。

なので、十分低い値の有意水準を設定しておくことが大切です。

場合1: 母集団の分散がわかっている

ここからはデータの性質によって手法が変わってきます。
母集団の分散が分かっている場合はz-Scoreを計算します。

z-Scoreは以下の式で計算できます。

z = \frac{\overline{x}-\mu_0}{\sigma\sqrt{n}}

$\overline{x}$: サンプルの平均
$\mu_0$: hypothetical mean(検証したい平均値)
$\sigma$: 母集団の標準偏差(分散の平方根)
${n}$: サンプルの数

いったい何の数字やねんこれという感じですが、これは標準化(normalization)という処理を行い、値の平均が0、分散が1になるように調整しているのです。
これでどんな値の集合であっても同様の手法で検証できるようになります。

ちなみに分母の$\sigma\sqrt{n}$の部分は標準誤差と呼ばれます。

次に、有意水準をもとに「Z数表」から対応する値を探します。
http://www.z-table.com/

Z数表とはなにかというと、値の分布をグラフに表したとき、左端からz-Scoreまでの面積が全体の何%に相当するかを表した表です。

有意水準が5%だとすると、全体の95%に相当する面積を取るz-Scoreの値はいくつか、ということを調べます。
ピッタリの値(.9500)はありませんが、概算でz-Scoreが1.65のときに全体の95.05%の面積になることがわかりました。
この、有意水準に相当するz-Scoreのことを「critical value」と呼びます。

そして最後に、z-Score と critical valueを比べます。
z-Score が critical valueよりも大きかった場合、グラフの95%からはみ出していることになり、帰無仮説は棄却されます。
もしz-Score が critical valueよりも小さければ、グラフの95%に収まっているので、帰無仮説を棄却することはできない、という結論になるわけです。

場合2: 母集団の分散が不明である

たいていの場合は母集団の分散が不明だと思います。
そんなときは、z-Scoreのかわりにt-Scoreを使って同様の検証ができます。

t = \frac{\overline{x}-\mu}{S\sqrt{n}}

$S$: サンプルの標準偏差

この場合のcritical valueは、t tableから拾ってこれます。
https://www.sjsu.edu/faculty/gerstman/StatPrimer/t-table.pdf

t tableを使うには、degree of freedom(df) = サンプルの標本数-1と、有意水準の数字との交点を参照します。

たとえばサンプルの標本数が10、有意水準が1%の場合、df=9、0.01の交点なので、3.250という数字が拾えます。
z-Scoreのときと同様に、t-Scoreがcritical valueより大きければ帰無仮説は棄却され、小さければ棄却されないことになります。

おわりに

参考にしたudemyのコース、値段の割にめちゃくちゃボリュームがあってやりごたえ抜群なのでオススメです。
確率から統計学の基本、Pythonやディープラーニングまでカバーしてます。
https://www.udemy.com/course/the-data-science-course-complete-data-science-bootcamp/