Pythonistに贈る統計学入門 ⑦検定

f:id:monozukuri-bu:20191016182446j:plain

商店街の魚屋でたむろしている猫に近づいたら、全力で逃げられました。
kanaiです。

今回は統計学における検定についてお話していきたいと思います。

検定とは

統計学における検定とは、確率をもとに仮説の成否を判定する手法のことです。

まずは例を考えてみましょう。

あるところに占い師がいた。
声をかけられたので占ってもらったら「あなたは5回連続失恋するでしょう」と予想された。
そしてその予想は見事的中した。

さて、悲しい例でしたが、この占い師は果たして本当に信用できるのでしょうか。
「5回連続で当てたのだから、信用できる」という意見もあれば、「5回連続で当てたくらいではまだ信用できない」という意見もあるかと思います。
このような場合に統計学を用いて仮説を判断する手法を検定と言います。

有意水準と棄却

では、どのように検定を行うのでしょうか。
上記の例で考えてみましょう。 (なお、失恋する確率は 0.5 とします。)

まず仮説H0を立てます。

H0:この占い師は予知能力がない。

この仮説が間違っていれば、以下の結論が導けますね。

H1:この占い師は予知能力がある。

そもそもH0が起こる確率は


0.5^5 = 0.03125

なので3.125%ですね。

ここで私が「3.125%というのは低い確率だからH0は間違っている(つまりこの占い師は予知能力がある)。」と判断したとします。
しかしこれはあくまで私の主観であり、3.125%は低い確率ではないという意見もあるかと思います。
統計学ではこの判断基準を有意水準と言い、あらかじめ計算をする前に決めておきます。

一般的に、5%や1%が使われます。

有意水準を5%としていたら、H0は間違っていると判断でき、結果的にH1の結論が導けます。
しかし、有意水準を1%としていたら、H0は間違っているとは言えません。

統計学では、上記で立てたような仮説H0帰無仮説と言い、H1対立仮説と言います。
また、仮説H0が間違っていると判断することを棄却と言います。
さらに、帰無仮説が正しかった場合に占いの結果が得られる確率3.125%をp値と言います。

ちなみに、p値が5%や1%を下回ったとしてもその確率は0ではないので、H0を棄却したが、実はH0が正しかったということも可能性としてはありますよね?
これを第一種の過誤と言います。
そして、実はH1が正しかったが、H0を棄却しないことを第二種の過誤と言います。

練習問題

それではせっかくなので、2018年11月の統計検定2級に出題された問題にチャレンジしてみましょう。
今回は、問16を解いてみます。

[1]

まずこの問題を解くためにはχ二乗検定について知っている必要があります。
χ二乗検定は独立性の検証をするために使われます。

今回のように、発生率は曜日に依存するか否かといった場合に使います。
niを観測データ、Eを期待値とすると、 χ二乗統計量は下記の計算式で求めることができます。


χ^2 = \sum_{k=1}^{n}\frac{(n_{i}-E)^2}{E}

ちなみに数式から読み取れる部分もあるかと思いますが、χ二乗統計量は観測データと期待分布との相違(ずれ)の測度です。

では、まず期待値度を求めるとこのようになりますね。


E = \frac{102}{6}=17

なので、χ二乗統計量は以下のようになります。


χ^2 = \frac{(14-17)^2+(19-17)^2+(15-17)^2+(22-17)^2+2\times(16-17)^2}{17}
(=2.588...)

よって答えは 1 です。

[2]

適合度検定では、χ二乗統計量が「自由度」=「カテゴリーの数」-1 に従うことを使います。

今回カテゴリーの数は 6 なので、自由度 5( = 6 - 1) のχ二乗分布を使って検定を行います。

統計検定の問題の付録3にカイ二乗分布のパーセント点が載っていますので、υ(自由度)5とα(有意水準)0.05が直行するところを見てください。

11.07と書いてありますよね。

χ二乗検定では、カイ二乗分布のパーセント点とχ二乗統計量を比較して帰無仮説を棄却するかしないかを決定します。

今回はカイ二乗分布のパーセント点がχ二乗統計量=2.588...よりも小さいので、帰無仮説は棄却できないという結論が導けます。

よって答えは 3 です。

Pythonを使うと

実際に統計検定を受けるときにはPCを持ち込めないので、このような感じで解くことになるでしょう。

それでは今度は、
もしPCが持ち込めたら...、そしてPythonが使えたら...
という妄想の下解いてみましょう。

下環境でJupyrer notebookを使うとします。

Python 3.7
Jupyter 4.4.0
matplotlib 3.0.2
Pandas 0.23.4
seaborn 0.9.0
scipy  1.2.1

scipyのchisquareを使用することでχ二乗統計量とp値を計算することができます。

import scipy.stats

obs = [14, 19, 15, 22, 16, 16] #観測データを配列に格納
statistic, pvalue = scipy.stats.chisquare(obs) #χ二乗統計量とp値を計算
print(statistic, pvalue)
if statistic >= 11.07:
    print("帰無仮説は棄却できます")
else:
    print("帰無仮説は棄却できません")

これを実行するとχ二乗統計量がp値を下回り、以下の結果が出力されます。

帰無仮説は棄却できません

このように、pythonを使用すれば、途中計算を省くことができ簡単に計算ができますね!

まとめ

今回は統計学における検定についてご紹介させていただきました。
統計学的にこの仮説は正しいです。」なんて言えたらかっこいいですよね!!
機会があれば活用してみてください。