仮説検定

仮説検定(Hypothesis testing)は、統計量を使って、ある仮説が正しいかどうかを検討する方法です。

仮説検定のためのいくつかのステップを示します。厳密にこのステップに従う必要はありません。

1.) データの収集
2.) 前提条件
3.) 仮説(Hypothesis)
4.) 検定のための統計量(Test Statistic)
5.) 統計量の分布
6.) 意思決定のためのルール
7.) P値(p-values)

Step 1: データの収集

手元にデータがないと仮説検定を始められませんので、まずはデータをそろえます。

Step 2: 前提条件

データが従う分布など、仮説検定のための前提条件を検討します。

Step 3: 仮説

仮説には、2種類あります。帰無仮説(The Null Hypothesis) (Hoと書きます) と対立仮説(Alternative Hypothesis) (HA)です。

例を使って説明します。

とあるレストランのお客さんのデータが手元にあって、このお客さんの平均年齢が30歳ではないことを確かめたいとします。仮説は、以下の様に設定します。

$$ H_o : \mu = 30 $$

対立仮説は、次のようになります: $$ H_A : \mu \neq 30 $$

仮説検定をして、帰無仮説(Ho)が棄却(reject)されると、代わりに対立仮説が採用されるので、平均年齢が30歳ではないという仮説が正しいと証明されたことになるわけです。

もちろん、仮説の設定の仕方は変えられます。例えば、帰無仮説を、お客さんの平均年齢が、30歳より大きいとすれば、対立仮説をお客さんの年齢が30歳より小さいとすることができます。 これは、後ほど図を使ってもう一度説明します。

Step 4: 検定統計量

適切な統計量を選びます。たとえば、正規分布を使うなら、次のようなzスコアが便利です。

$$ z = \frac{\overline{x}-\mu_o}{\sigma / \sqrt{n}}$$

推定された標準偏差を使って、t分布を使うこともできます。

$$ t = \frac{\overline{x}-\mu_o}{s/ \sqrt{n}}$$
Step 5: 統計量の分布

統計量に応じた分布を選択します。

Step 6: 決定のためのルール

有意水準αを決めます。統計的な検定は、白か黒かをはっきり決められるものではありません。ある一定の有意水準を定めて、その範囲内では自信があるという話にすぎません。αは、経験的に5%や1%という数字が採用されることが多いようです。ここでは、5%を採用します。つまり、95%の自信をもって、帰無仮説を棄却するということになります。

In [1]:
from IPython.display import Image
url = 'http://images.flatworldknowledge.com/shafer/shafer-fig08_004.jpg'
Image(url,height=400,width=600)
Out[1]:

分布と有意水準で、帰無仮説を棄却するかどうかを、どのように決めるのかを説明します。

図は、2つのタイプの片側検定(One-Tail Test)と両側検定(Two-Tail Test)を示しています。 αの値に注意してください。

統計的検定には、判断を間違える可能性が常にあります。それぞれに名前が付いています。

In [2]:
url='http://www.personal.ceu.hu/students/08/Olga_Etchevskaia/images/errors.jpg'
Image(url,height=200,width=300)
Out[2]:

第一種の過誤(TypeI error)は、偽陽性(False positive)とも呼ばれます。仮説を誤って棄却する可能性です。
第二種の過誤(TypeII error)は、偽陰性(Flase negative)とも呼ばれます。仮説を誤って受け入れてしまう可能性です。

Step 7: P値の計算

分布を使えば、統計量から、P値(P value)を計算できます。P値が有意水準を下回れば、仮説を棄却できますし、この値が小さければ小さいほど、そこに自信が持てます。

例題

正規分布を使った仮説検定の例をみてみましょう。

とあるファストフードチェーンで働いているとしましょう。社長は顧客の平均年齢が30歳だと信じています。しかし、現場の感覚では、それは違うような気がしており、そのことを統計を使って示してみます。

$$ H_o: \mu = 30 $$$$ H_A: \mu \neq 30 $$

帰無仮説と対立仮説で、すべての事象をカバーしている必要があります。

Step 1: データを集める

調べたところ、お客さん10人の平均年齢が、27歳だということがわかりました。

Step 2: 前提条件

お店に来るお客さんの年齢の分布が、正規分布になるとしましょう。また、分散が20であるという知識も得たとします。標準偏差は、この平方根です。

$$ \sigma = \sqrt{20}$$

と、このような仮定を置きましたが、実際の問題では、母集団の分布やパラメータが分かっていることは稀です。(いまは、例題なので、ひとまず話を進めます)

Step 3: 仮説

先ほど設定した仮説です。 $$ H_o: \mu = 30 $$ $$ H_A: \mu \neq 30 $$

Step 4: 検定統計量

Zスコアを計算します。 $$ z = \frac{\overline{x}-\mu_o}{\sigma / \sqrt{n}}$$ $$ z= \frac{\overline{x}-\mu_o}{\sigma / \sqrt{n}} = \frac{27 - 30}{\sqrt{20} / \sqrt{10}} = -2.12 $$

Step 5: 分布

正規分布が使えます。

Step 6: ルール

有意水準は5%にします。つまり、95%の自信をもって、帰無仮説を棄却するということです。

結論

分布をみてみましょう。仮説を棄却できることがわかります。

In [14]:
url='http://www.duncanwil.co.uk/norm_files/image056.jpg'
Image(url)
Out[14]:

帰無仮説が棄却できたからといっても、平均年齢が30歳ではないということが言えるだけで、それが何歳かを言うことはできません。

In [6]:
import scipy.stats as ss
ss.norm.cdf(2.12,0,1)
Out[6]:
0.98299697735236724
In [7]:
p = 1 - ss.norm.cdf(2.12,0,1)
print(p)
0.0170030226476

P値

となるので、P値は0.017(1.7%)になります。 やはり、現場の感覚が正しいようです。

信頼区間

次の式で、信頼区間(confidence interval)を計算できます。 $$ \bar{x} \pm z \sigma _\bar{x} $$

95%信頼区間を計算すると、 $$ 27 \pm 1.96 *(\frac{\sqrt{20}}{\sqrt{10}}) $$

つまり、 $$ 27 \pm 2.77 $$

具体的には、24.23〜29.77となりますが、ここに30が含まれません。これは有意水準5%で帰無仮説を棄却したのと同じ計算です。

重要なところは、信頼区間の計算に分散が含まれているところです。分散が大きいと、信頼区間が大きくなります。