仮説検定(Hypothesis testing)は、統計量を使って、ある仮説が正しいかどうかを検討する方法です。
仮説検定のためのいくつかのステップを示します。厳密にこのステップに従う必要はありません。
1.) データの収集
2.) 前提条件
3.) 仮説(Hypothesis)
4.) 検定のための統計量(Test Statistic)
5.) 統計量の分布
6.) 意思決定のためのルール
7.) P値(p-values)
手元にデータがないと仮説検定を始められませんので、まずはデータをそろえます。
データが従う分布など、仮説検定のための前提条件を検討します。
仮説には、2種類あります。帰無仮説(The Null Hypothesis) (Hoと書きます) と対立仮説(Alternative Hypothesis) (HA)です。
例を使って説明します。
とあるレストランのお客さんのデータが手元にあって、このお客さんの平均年齢が30歳ではないことを確かめたいとします。仮説は、以下の様に設定します。
$$ H_o : \mu = 30 $$対立仮説は、次のようになります: $$ H_A : \mu \neq 30 $$
仮説検定をして、帰無仮説(Ho)が棄却(reject)されると、代わりに対立仮説が採用されるので、平均年齢が30歳ではないという仮説が正しいと証明されたことになるわけです。
もちろん、仮説の設定の仕方は変えられます。例えば、帰無仮説を、お客さんの平均年齢が、30歳より大きいとすれば、対立仮説をお客さんの年齢が30歳より小さいとすることができます。 これは、後ほど図を使ってもう一度説明します。
適切な統計量を選びます。たとえば、正規分布を使うなら、次のようなzスコアが便利です。
$$ z = \frac{\overline{x}-\mu_o}{\sigma / \sqrt{n}}$$推定された標準偏差を使って、t分布を使うこともできます。
$$ t = \frac{\overline{x}-\mu_o}{s/ \sqrt{n}}$$統計量に応じた分布を選択します。
有意水準αを決めます。統計的な検定は、白か黒かをはっきり決められるものではありません。ある一定の有意水準を定めて、その範囲内では自信があるという話にすぎません。αは、経験的に5%や1%という数字が採用されることが多いようです。ここでは、5%を採用します。つまり、95%の自信をもって、帰無仮説を棄却するということになります。
from IPython.display import Image
url = 'http://images.flatworldknowledge.com/shafer/shafer-fig08_004.jpg'
Image(url,height=400,width=600)
分布と有意水準で、帰無仮説を棄却するかどうかを、どのように決めるのかを説明します。
図は、2つのタイプの片側検定(One-Tail Test)と両側検定(Two-Tail Test)を示しています。 αの値に注意してください。
統計的検定には、判断を間違える可能性が常にあります。それぞれに名前が付いています。
url='http://www.personal.ceu.hu/students/08/Olga_Etchevskaia/images/errors.jpg'
Image(url,height=200,width=300)
第一種の過誤(TypeI error)は、偽陽性(False positive)とも呼ばれます。仮説を誤って棄却する可能性です。
第二種の過誤(TypeII error)は、偽陰性(Flase negative)とも呼ばれます。仮説を誤って受け入れてしまう可能性です。
正規分布を使った仮説検定の例をみてみましょう。
とあるファストフードチェーンで働いているとしましょう。社長は顧客の平均年齢が30歳だと信じています。しかし、現場の感覚では、それは違うような気がしており、そのことを統計を使って示してみます。
$$ H_o: \mu = 30 $$$$ H_A: \mu \neq 30 $$と、このような仮定を置きましたが、実際の問題では、母集団の分布やパラメータが分かっていることは稀です。(いまは、例題なので、ひとまず話を進めます)
先ほど設定した仮説です。 $$ H_o: \mu = 30 $$ $$ H_A: \mu \neq 30 $$
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 $$
url='http://www.duncanwil.co.uk/norm_files/image056.jpg'
Image(url)
帰無仮説が棄却できたからといっても、平均年齢が30歳ではないということが言えるだけで、それが何歳かを言うことはできません。
import scipy.stats as ss
ss.norm.cdf(2.12,0,1)
p = 1 - ss.norm.cdf(2.12,0,1)
print(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%で帰無仮説を棄却したのと同じ計算です。
重要なところは、信頼区間の計算に分散が含まれているところです。分散が大きいと、信頼区間が大きくなります。