とあるお兄さんの雑記

基本的に技術系の内容を書きますが、何を書くかは私の気分です。

統計学基礎vol.49〜母比率の差の検定〜

今のプロジェクトが煌々と燃えていまして。
炎上なんてものじゃないです。個人的には山火事レベル...。

そんなわけでだいぶ仕事したくない欲が非常に強いのです。何かの拍子に会社潰れないかなと思うぐらい。

さてさて、今回は母比率の差の検定です。

母比率の差の検定

2つの標本から得た標本比率を使って母比率が等しいかを検定すること。

例題

あるドラマの視聴率を調査すると、関東地区では5000世帯中、1000世帯が視聴していたことがわかった。一方、関西地区では3000世帯中540世帯が視聴していた。この結果から、2地区の視聴率に差があるといえるか。

関東地区 関西地区
調査世帯数  5000  3000
視聴世帯数  1000  540

母比率の差の検定の手順

母比率の差の検定ですが、(仮説)検定を行う以上、今まで見てきた下記手順と同じように行います。

  1. 仮説を立てる
  2. 有意水準を設定
  3. 適切な検定統計量を決める
  4. 棄却ルールを決める
  5. 検定統計量をもとに結論を出す

1 仮説を立てる

 H_0:関東地区と関西地区の視聴率は等しい
 H_1:関東地区と関西地区の視聴率は等しくない(差がある)

2 有意水準を設定

 \alpha = 0.05

3 適切な検定統計量を決める

母比率の差の検定では、サンプルサイズ nが十分に大きい時には、統計量 z N(0,1)に従う。
1群目の標本比率を \hat{p}_1
1群目のサンプルサイズを n_1

2群目の標本比率 \hat{p}_2
サンプルサイズを n_2
とする。

また、2つの標本比率を1つにまとめた標本比率(プールした標本比率) \hat{p}を使う。

 \displaystyle z = \frac{ \hat{p_1}  - \hat{p_2} - (\mu_1 - \mu_2)}{\sqrt{\hat{p}(1-\hat{p})(\frac{1}{n_1} + \frac{1}{n_2})}}

 \displaystyle = \frac{ \hat{p_1}  - \hat{p_2}}{\sqrt{\hat{p}(1-\hat{p})(\frac{1}{n_1} + \frac{1}{n_2})}}

帰無仮説は「視聴率は等しい」なので、 \mu_1 - \mu_2 = 0となるため、上記のようになります。

また、

 \displaystyle \hat{p} = \frac{n_1 \times \hat{p_1} + n_2 \times \hat{p_2}}{n_1 + n_2}

です。

4 棄却ルールを決める

標準正規分布を利用する。また、関東地区と関西地区とで視聴率の差があるかどうかを確認するため、両側検定を行う。

 \displaystyle z_{0.025} = 1.96

5 検定統計量をもとに結論を出す

さて、結論を出しましょう。

 \displaystyle \hat{p_1} = \frac{1000}{5000} = 0.2

 \displaystyle \hat{p_2} = \frac{540}{3000} = 0.18

 \displaystyle \hat{p} = \frac{5000 \times 0.2 + 3000 \times 0.18}{5000 + 3000}

 \displaystyle = \frac{1000 +  540 }{8000}

 \displaystyle = 0.1925

よって、

 \displaystyle z = \frac{ \hat{p_1}  - \hat{p_2}}{\sqrt{\hat{p}(1-\hat{p})(\frac{1}{n_1} + \frac{1}{n_2})}}

 \displaystyle  = \frac{ 0.2  - 0.18}{\sqrt{0.1925(1-0.1925)(\frac{1}{5000} + \frac{1}{3000})}}

 \displaystyle = 2.197

よって、有意水準 5\%において帰無仮説 H_0を棄却し、対立仮説 H_1を採択する。

つまり、関東地区と関西地区とで視聴率に差がある。

(ここではあくまで、視聴率に差があるということがわかっただけで、どれぐらいの差があるのかまではわかっていません。どれくらいの差があるかを求めるならさらに深く追求する必要があります。)

コラム:母比率の差の検定と正規分布の再生性

 X〜B(n, p)に従うとき、 nが大きい場合、 X〜N(p, p(1-p))に従う。また、これらの和もまた正規分布に従う。

 \displaystyle \hat{p_1} - \hat{p_2} 〜N\left(p_1 - p_2、\frac{p_1(1-p_1)}{n_1} + \frac{p_2(1-p_2)}{n_2} \right)

 (\hat{p_1} - \hat{p_2})を正規化した統計量 z正規分布に従う。

 \displaystyle z = \frac{(\hat{p_1} - \hat{p_2}) - (p_1 - p_2)}{\sqrt{\frac{p_1(1-p_1)}{n_1} + \frac{p_2(1-p_2)}{n_2}}} 〜N(0、1)

この母比率の差の検定は、帰無仮説 H_0 p_1 = p_2としていることから、 p_1 = p_2 = \hat{p}としたときの p_1 p_2をプールした標本比率 \hat{p}を使って、次のように書き換えられる。

 \displaystyle z = \frac{(\hat{p_1} - \hat{p_2}) - (p_1 - p_2)}{\sqrt{\frac{\hat{p}(1-\hat{p})}{n_1} + \frac{\hat{p}(1-\hat{p})}{n_2}}}

従って、

 \displaystyle z = \frac{(\hat{p_1} - \hat{p_2})}{\sqrt{\hat{p}(1-\hat{p}) \left( \frac{1}{n_1} + \frac{1}{n_2} \right)}}

となる。

まとめ

用語 意味
母比率の差の検定 2つの標本から得た標本比率を使って母比率が等しいかを検定すること

統計学基礎vol.48〜独立性の検定〜

今回は独立性の検定です。

独立性の検定

2つ以上の分類基準を持つクロス集計表において、分類基準に関連があるかどうかを検定すること。このような場合もカイ二乗分布による検定を行います。

例題

ランダムに得られた男女各100人の血液型について次のようなデータが得られた。この結果から、性別と血液型に関連があるといえるか?

血液型 A型 B型 O型 AB型
男性  55  16  22  7  100
女性  40  24  32  4  100
合計  95  40  54  11  200

独立性の検定の手順

独立性の検定ですが、(仮説)検定を行う以上、今まで見てきた下記手順と同じように行います。

  1. 仮説を立てる
  2. 有意水準を設定
  3. 適切な検定統計量を決める
  4. 棄却ルールを決める
  5. 検定統計量をもとに結論を出す

1 仮説を立てる

 H_0:性別と血液型は独立(関連がない)
 H_1:性別と血液型は独立ではない

2 有意水準を設定

 \alpha = 0.05

3 適切な検定統計量を決める

独立性の検定ではカイ二乗分布に従うカイ二乗統計量を使います。ですが、適合度の検定でも見たように理論値が必要です。そこでここでは、理論値を算出する必要があります。

ここでは、仮説 H_0より男女の血液型は独立であることから、理論値は男女でそれぞれの血液型が 1:1となっていることです。

ここで、 i 列目の度数の合計を  f(i) j行目の度数の合計を f(j)、全ての度数の合計を nとすると、理論値は以下の式から求められます。

 \displaystyle 理論値 = \frac{f(i) \times f(j)}{n}

例えば、男性のA型の場合の理論値は

 \displaystyle 理論値 =  \frac{95 \times 100}{200} = 47.5

となります。このようにして全ての理論値を求めると、

血液型 A型 B型 O型 AB型
男性  47.5  20  27  5.5  100
女性  47.5  20  27  5.5  100
合計  95  40  54  11  200

となります。



理論値からの実測値のずれを2乗したものを、理論値の値で割り、和をとります。

 \displaystyle \chi ^2 = \sum \frac{(実測値-理論値) ^2}{理論値}

今回の例では以下のようになります。

 \displaystyle \chi ^2 = \frac{(55-47.5) ^2}{47.5} + \frac{(16-20) ^2}{20}+ \frac{(22-27) ^2}{27}+ \frac{(7-5.5) ^2}{5.5}

 \displaystyle + \frac{(40-47.5) ^2}{47.5} + \frac{(24-20) ^2}{20}+ \frac{(32-27) ^2}{27}+ \frac{(4-5.5) ^2}{5.5} = 6.639

4 棄却ルールを決める

 m \times nのクロス集計表(縦 m行、横 n列)の場合、自由度は (m-1) \times (n-1)カイ二乗分布を用いて検定を行います。
この場合、

 (2-1) \times (4-1) = 3

となります。独立性の検定は片側検定で行うため、統計数値表から \displaystyle \chi_{0.05} ^2(3) = 7.815となります。

5 検定統計量をもとに結論を出す

さて、結論を出しましょう。今回で言えば、有意水準  \chi_{0.05} ^2(3) = 7.185、P値は 6.639より、有意水準 5\%において、 H_1を棄却し、帰無仮説を採択します。
つまり、「性別と血液型は独立ではないとは言えない(関連があるとは言えない)」と言えます。

下記のグラフは、カイ二乗分布をわかりやすく大雑把に拡大した図なので、本物のカイ二乗分布のグラフとは違うことに注意してください。

まとめ

用語 意味
独立性の検定 2つ以上の分類基準を持つクロス集計表において、分類基準に関連があるかどうかを検定すること
理論値の求め方  i 列目の度数の合計を  f(i) j行目の度数の合計を f(j)、全ての度数の合計を nとすると、 \displaystyle 理論値 = \frac{f(i) \times f(j)}{n}

統計学基礎vol.47〜適合度の検定〜

はてさて、今回は適合度のお話です。

適合度の検定とは

調査によって得られたクロス集計表がある場合、実測度数がある特定の分布に適合(一致)するかどうかを検定すること。
ここでクロス集計表とは、2つのカテゴリーに属するデータをそれぞれのカテゴリーで同時に分類し、その度数を集計したものをという。

例題

日本の血液型の分布はA、B、O、AB型はそれぞれ、 40 \% 20 \% 30 \% 10 \%であると言われている。ここでランダムに選ばれた100人の血液型のデータでA型55人、B型16人、O型22人、AB型7人だった。この集計したデータは日本人の血液型の分布と同じといえるか?

適合度検定の手順

適合度検定では「理論値」からの「実測値」のずれを算出し、検定を行います。とはいえ、(仮説)検定を行う以上、今まで見てきた下記手順と同じように行います。

  1. 仮説を立てる
  2. 有意水準を設定
  3. 適切な検定統計量を決める
  4. 棄却ルールを決める
  5. 検定統計量をもとに結論を出す

1 仮説を立てる

 H_0:調査した血液型分布は日本人の血液型分布と一致する
 H_1:調査した血液型分布は日本人の血液型分布と一致しない

2 有意水準を設定

 \alpha = 0.05

3 適切な検定統計量を決める

適合度検定ではカイ二乗分布に従うカイ二乗統計量を使います。

理論値からの実測値のずれを2乗したものを、理論値の値で割り、和をとります。

 \displaystyle \chi ^2 = \sum \frac{(実測値-理論値) ^2}{理論値}

今回の例では情報をまとめると以下のようになります。

A型 B型 O型 AB型
理論値  40 \%  20 \%  30 \%  10 \%
実測値  \frac{55}{100}  \frac{16}{100}  \frac{22}{100}  \frac{7}{100}

 \displaystyle \chi ^2 = \frac{(55-40) ^2}{40} + \frac{(16-20) ^2}{20}+ \frac{(22-30) ^2}{30}+ \frac{(7-20) ^2}{20} = 9.458

4 棄却ルールを決める

この検定で使用する分布は自由度 (4-1) = 3カイ二乗分布です。また、適合度検定は片側検定で行います。
さて、統計数値表から

 \displaystyle \chi_{0.05} ^2(3) = 7.815

となります。

5 検定統計量をもとに結論を出す

さて、結論を出しましょう。今回で言えば、有意水準  \chi_{0.05} ^2(3) = 7.815、P値は 9.458より、有意水準 5\%において、 H_0を棄却し、対立仮説を採択します。
つまり、「調査した血液型分布は日本人の血液型分布と一致しない」と言えます。

下記のグラフは、カイ二乗分布をわかりやすく大雑把に拡大した図なので、本物のカイ二乗分布のグラフとは違うことに注意してください。

まとめ

用語 意味
適合度の検定 実測度数がある特定の分布に適合(一致)するかどうかを検定すること

ある病気にかかっているかを検査した時に、1回目、2回目の検査の両方で陽性だった場合

大学院生の頃、とある事情で病院に行き眼圧を測ってもらったのですが、私の場合どうやら普通の人よりも両目の眼圧が高い傾向にあるようで。

その際、眼圧の検査をするだけで3つの検査機器を使って総合的に判断されていたのを覚えています。

で、ここでふと思い出したのが大学時代に受けた確率論の授業でした(なんでや?)。

内容は1回目の検査で陽性で、2回目の検査でも陽性だった場合、その病気にかかっている確率はいくらかというものです。

こちら、ベイズの定理を利用して求めることができるので実際に求めてみましょう。

言葉の説明

実際に例題を見る前に、言葉の説明をしておきます。

事前確率

データを手に入れる前に想定していた確率のこと。

事後確率

データを用いて事前確率を修正した結果の確率のこと。

ベイズ更新

データを用いて確率を変化(更新)していくこと。

ベイズの定理

 P(A)を事象 Aが起きる確率、 P(B_i)を事象 B_iが起きる確率とし、 P(A | B_i)を事象 B_iが原因で事象 Aが起きる確率とします。

この時、

 \displaystyle P(B_k | A) = \frac{P(A | B_k) \times P(B_k)}{\sum_{i=1} ^n P(A | B_i) \times P(B_i)}

と表せるものをベイズの定理と言います。

上記式の左辺は事象 Aが起きた時の原因の事象が B_kである確率を表しています。


視覚的に考えてみましょう。以下の図を参考にします。

図中の P(A|B_k)は事象 B_kが原因で事象 Aが起きる確率を表します。ここで k = 1, 2, 3とします。つまり、事象 Aが起きた時の原因の事象は3つあることになります。

一方、 P(A ^c|B_k)は事象 B_kが原因で事象 A ^cが起きる確率を表します。


ここで事象 Aが起きた時、その原因が事象 B_2である確率を考えます。
すると、事象 Aが起きた(観測された)わけですから事象 A ^cは無視して考えることができます。つまり、上記画像のピンクの部分だけを考えれば良いことになります。

ピンクの部分は、原因がどんな事象であれ事象 Aが起きる確率を表しています。というわけで、事象 Aが起きてそれの原因が事象 B_2である確率は

 \displaystyle P(B_2 | A) = \frac{P(A | B_2) \times P(B_2)}{P(A | B_1) \times P(B_1) + P(A | B_2) \times P(B_2) + P(A | B_3) \times P(B_3)}


と計算できます。

問題(1回目の検査)

ある特定のガンの罹患率 0.1\%とする。このガンに罹患しているかどうかを検査キットAで検査することにする。検査キットAは、このガンに罹患している人を 95\%の確率で陽性と判断し、健康な人(正確にはある特定のガンにかかっていない人)が陽性と誤診される確率は 2\%である。
ある日、あなたがこの検査で陽性と判断された時、あなたがこのガンに罹患している確率はいくつか?

問題(1回目の検査)の解

検査キットAに関して情報を整理してみます。

ガン 健康
検査で陽性と判断  95\%  2\%
検査で陰性と判断  5\%  98\%

図にすると以下のようになります。

ガンに罹患している人は全体で 0.1\%居て、そのうち 95\%の人は検査で陽性と判断されます。残りの 5\%の人は検査で陰性と判断されます。

一方、ガンに罹患していない健康な人は全体で 99.9\%で、そのうち 2\%の人は検査で陽性と判断されます。残りの 98\%の人は検査で陰性と判断されます。

また、この問題での事前確率は、データを手に入れる前に想定していた確率のことになるので、ガンに罹患している人の割合、つまり 0.1\%を表しています。
ここでいう「データ」は検査キットAが陽性か陰性かの結果データになります。
(こう考えると事前確率というのは、一般的に知られているような確率とも言えそうです。)



ここで問題に戻ると、「ある日、あなたがこの検査で陽性と判断された時、あなたがこのガンに罹患している確率はいくつか?」と書いてあります。

つまり、「検査で陽性と判断された」という情報が与えられたので、以下の図のピンクの部分だけを考えれば良いことになります。

求めらているのは、「あなたがこの検査で陽性と判断された時、あなたがこのガンに罹患している確率はいくつか?」なので、式は以下のようになります。

 \displaystyle P(ガンに罹患 | 検査で陽性) = \frac{P(検査で陽性 | ガンに罹患) \times P(ガンに罹患)}{P(検査で陽性 | ガンに罹患) \times P(ガンに罹患) + P(検査で陽性 | 健康) \times P(健康)}


よって、

 \displaystyle P(ガンに罹患 | 検査で陽性) = \frac{0.95 \times 0.001}{0.95 \times 0.001 + 0.02 \times 0.999}

 \displaystyle = \frac{95 \times 1}{95 \times 1 + 2 \times 999}

 \displaystyle = 0.04538...

と計算できます。

つまり、あなたがこの検査で陽性と判断された時、あなたがこのガンに罹患している確率は 4.5\%となります。

意外と低いものですね...。

そもそもの前提としてこのガンに罹患している確率は 0.1\%だったので罹患しづらい病気であることも起因していますが。

とはいえ、あなたがこのガンに罹患している確率は、検査を受ける前の 0.1\%から 4.5\%上がっていることには注意しておきましょう。

問題(2回目の検査)

1回目の検査をもとに、同じ検査キットAを使って2回目の検査を行ったところ、2回目の検査でも陽性と判断された。この時、あなたがこのガンに罹患している確率はいくつか?

問題(2回目の検査)の解

1回目の検査を元にベイズ更新を行います。1回目の検査結果からあなたがこのガンに罹患している(事前)確率は 0.1\%から 4.5\%に上がりました。図にすると以下のようになります。

ここでも求められているのは「2回目の検査でも陽性と判断されたときに、あなたがこのガンに罹患している確率」です。

よって、問題(1回目の検査)の解で出てきた式を利用します。



 \displaystyle P(ガンに罹患 | 検査で陽性) = \frac{P(検査で陽性 | ガンに罹患) \times P(ガンに罹患)}{P(検査で陽性 | ガンに罹患) \times P(ガンに罹患) + P(検査で陽性 | 健康) \times P(健康)}


ですから

 \displaystyle P(ガンに罹患 | 検査で陽性) = \frac{0.95 \times 0.045}{0.95 \times 0.045 + 0.02 \times 0.955}

 \displaystyle = \frac{95 \times 45}{95 \times 45 + 2 \times 955}

 \displaystyle = 0.6911...


 69\%に上がりましたね。どうやら、このガンに罹患しているかどうか精密検査を行った方が良さそうです。

まとめ

今回は、ガンに罹患しているかどうかをベイズ推定を利用して求めることを見てきました。

一般的に罹患率が低いものに関して、1回目の検査で陽性だったとしてもあまり気落ちすることはないと言えるでしょう。

しかし、今後の健康のためにも精密検査は受診するようにしておきましょう。

用語 意味
事前確率 データを手に入れる前に想定していた確率
事後確率 データを用いて事前確率を修正した結果の確率
ベイズ更新 データを用いて確率を変化(更新)していくこと

ベイズの定理:

 P(A)を事象 Aが起きる確率、 P(B_i)を事象 B_iが起きる確率とし、 P(A | B_i)を事象 B_iが原因で事象 Aが起きる確率とした時、

 \displaystyle P(B_k | A) = \frac{P(A | B_k) \times P(B_k)}{\sum_{i=1} ^n P(A | B_i) \times P(B_i)}

となるもの

参考

  1. 条件付き確率とベイズの定理【中学の数学からはじめる統計検定2級講座第2回】 | とけたろうブログ
  2. ベイズ統計学基礎 | Logics of Blue

Git Hooksの活用〜git pushする前に単体テストを実行する〜

コードを書く際、自身が作成した機能は皆さん必ずテストを書いていると思います。できるだけ品質を担保するためにもテストを回して全部通ってからgit pushした方がいいわけですが。

全てのテストを回す前にgit pushしちゃった!なんてことが度々ありまして。

というわけで、テスト回すことを忘れてgit pushしたときでも、自動的にテストが回るようにするGit Hooksを使ってみました。

環境

git version 2.30.0
conda 4.11.0
MacOS Monterey 12.2.1
pytest 7.1.1
python 3.9.12

pytestというものを使っていますが、今回はGit Hooksの簡単な説明なので、pytestについての説明は省略します。

Git Hooksについて

特定のアクションが発生したときにカスタムスクリプトを叩く方法で、pushやcommit時などのアクションに対して活用することが可能です。

詳細に関しては公式をご参照ください。

公式:8.3 Git のカスタマイズ - Git フック

設定

フックの設定ファイルは各ローカルリポジトリ.git/hooks配下に置いてあります。サンプルもあるので、それをコピーして中身と名前さえ修正すればすぐに使えるようになるでしょう。

私の場合はpre-pushというファイル名で以下のようにしてみました。ファイルの作成場所は.git/hooks/配下です。

#!/bin/bash

figlet EXECUTE TEST

pytest test
result=$?

if [ $result -eq 0 ]; then
  figlet -f rectangles TEST SUCCESS
else :
  figlet -f rectangles TEST FAILED ...
  exit $result
fi

ちなみに、ファイルを作成、編集しただけでは動いてくれません。権限が必要になります。

chmod a+x .git/hooks/pre-push

解説

figletについて

ちょっとおしゃれにしたかっただけです。必要ありませんが、もしfigletを使う場合は以下のようにインストールします。

brew install figlet

ちなみにfigletを使うと以下のようになります。

figlet Hello Figlet

 _   _      _ _         _____ _       _      _
| | | | ___| | | ___   |  ___(_) __ _| | ___| |_
| |_| |/ _ \ | |/ _ \  | |_  | |/ _` | |/ _ \ __|
|  _  |  __/ | | (_) | |  _| | | (_| | |  __/ |_
|_| |_|\___|_|_|\___/  |_|   |_|\__, |_|\___|\__|
                                |___/

...ちょっとおしゃれです。

pytest test

pytest:Python単体テストフレームワークの一つです。

pytest testでtestフォルダ配下のテストファイルを実行してくれます。

その後の処理

result=$?

if [ $result -eq 0 ]; then
  figlet TEST SUCCESS
else :
  figlet TEST FAILED ...
  exit $result
fi

pytest test以後の処理ですが、まずresult=$?で直前の処理の終了ステータスを変数resultに入れています。

テストが全て通っていれば終了ステータスは0、テストが落ちていた場合は0以外の値が返ってきます。

テストが落ちてしまった場合、終了ステータスが0以外のものが返ってくるため、gitにpushされることはありません。そのため、ちゃんと正常に動いているコードだけがgitに管理されていることになります。

設定が終わったのでgit pushしてみます。すると、以下のようになることが確認できます。

$ git push origin main

 _______  _______ ____ _   _ _____ _____   _____ _____ ____ _____
| ____\ \/ / ____/ ___| | | |_   _| ____| |_   _| ____/ ___|_   _|
|  _|  \  /|  _|| |   | | | | | | |  _|     | | |  _| \___ \ | |
| |___ /  \| |__| |___| |_| | | | | |___    | | | |___ ___) || |
|_____/_/\_\_____\____|\___/  |_| |_____|   |_| |_____|____/ |_|

==================================================================== test session starts =====================================================================
platform darwin -- Python 3.9.12, pytest-7.1.1, pluggy-1.0.0
rootdir: /Users/users/workspace/~~/~~
collected 12 items

test/ch02/test_ch02.py .....                                                                                                                           [ 41%]
test/ch03/test_ch03.py .....                                                                                                                           [ 83%]
test/ch04/test_ch04.py ..                                                                                                                              [100%]

===================================================================== 12 passed in 0.32s =====================================================================

 _____ _____ _____ _____    _____ _____ _____ _____ _____ _____ _____
|_   _|   __|   __|_   _|  |   __|  |  |     |     |   __|   __|   __|
  | | |   __|__   | | |    |__   |  |  |   --|   --|   __|__   |__   |
  |_| |_____|_____| |_|    |_____|_____|_____|_____|_____|_____|_____|

まとめ

今回はGit Hooksを使って、push前に単体テストを行う処理を追加しました。CI環境が準備できていないうちは、Git hooksを一時的に使ってみるのもいいかもしれません。

今回は単体テストをやってみましたが、他の記事を見る限りmainブランチへのpushの制御など他の使い方もできそうです。

参考

公式:8.3 Git のカスタマイズ - Git フック

Git Hooksでうっかりミスを防ぎたい

figlet:コマンドラインでアスキーアートを作りたい

Gitでpushする前にテストが通る事を確認する

統計学基礎vol.46〜ポアソン分布で考える母比率の検定〜

前回は2項分布を元に母比率の検定を見ていきました。

今回はポアソン分布で考えてみましょう。

例題

1ヶ月間に平均20件の自動車事故が起こる見通しの悪いT字路がある。このT字路にカーブミラーを設置した結果、この1年での事故数は200件だった。カーブミラーの設置により、1ヶ月間の平均事故発生頻度は低下したか?

解答

今回の問題はカーブミラー設置前は1年で  20件 \times 12ヶ月  = 240件、設置後は1年で200件になりました。

1年で40件減ったわけですが、これはカーブミラーのおかげと言えるでしょうか?

しかし、1年で200件以上の事故となると、魔のT字路ですね。カーブミラーの設置以上に信号機を設置した方がいいかもしれません...。

1 仮説を立てる

帰無仮説 H_0:T字路では1ヶ月間に20回事故が起こる

対立仮説 H_1:T字路では1ヶ月間に20回事故が起こるとは言えない

2 有意水準を設定

 \alpha = 0.05とします。

3 適切な検定統計量を決める

事故が起こるという事象は非常に稀な事象なので(この問題においてはそうなのか怪しいですが)、1ヶ月で平均 \lambda回の事故が起こる場所で x回の事故が起こる確率 f(x)ポアソン分布に従います。

確率変数 Xポアソン分布 Po(\lambda)に従う時、期待値 E [X ] = V[ X ] = \lambdaが成り立ちます。

ここで、 Xを1年間の事故数、 x_n (n = 1, ..., 12)を各月の事故数とします。

 X = x_1 + x_2 + ... + x_{12} = 200

となります。またポアソン分布の再生性により Xポアソン分布 Po(n \lambda)に従います。 nは調査を行ったポイント数です。

中心極限定理より、サンプルサイズ nが十分に大きいときには、独立な確率変数の和は正規分布に収束することから、 X正規分布 N(n\lambda, n\lambda)に従うと考えることが出来ます。よって、以下の式は標準正規分布 N(0, 1)に従います。

 \displaystyle z = \frac{X - n\lambda}{\sqrt{n\lambda}}

 Xから1ヶ月の事故数の平均を算出すると、 X / nとなり、サンプルサイズ nが十分に大きいときは X / n正規分布 N(\lambda, \lambda / n)に従うと考えることが出来ます。よって、以下の式も標準正規分布 N(0, 1)に従います。

 \displaystyle z = \frac{\frac{X}{n} - \lambda}{\sqrt{\frac{\lambda}{n}}}

4 棄却ルールを決める

中心極限定理から、この検定で使用する分布は標準正規分布です。今回、事故の発生が改善したか、すなわち、事故の発生回数が20回より少なくなったかを確認したいので、片側検定を行います(20回より多くなったか、小さくなったかを確認したい場合は両側検定になる)。

この時、統計数値表から Z_{0.05}の値は

 Z_{0.025} = 1.645

となります。

5 検定統計量をもとに結論を出す

この例題では、1ヶ月単位での平均に対して1年、すなわち12個分のデータを取得した結果のため、 n = 12となります。1年での事故発生回数は200回だったことから1ヶ月平均だと

 \displaystyle X/ n = 200 / 12 = 16.67

となります。また、 \lambda = 20です。よって、

 \displaystyle z = \frac{\frac{X}{n} - \lambda}{\sqrt{\frac{\lambda}{n}}}

 \displaystyle = \frac{16.67 - 20}{\sqrt{\frac{20}{12}}}

 \displaystyle = -2.579

 P(Z = -2.579) \lt P(1.645)より統計量は棄却域に入りました。

よって、有意水準 5\%において、帰無仮説 H_0を棄却し対立仮説 H_1を採択します。

よって、のT字路では1ヶ月に20回事故が起こるとはいえないので、カーブミラーによって自動車事故の発生数は改善されたと結論づけられます。

まとめ

...信号機設置しましょう。

統計学基礎vol.45〜2項分布で考える母比率の検定〜

知らないうちに4月になりましたね。そして4月が終わりましたね...。

この統計学基礎はいつになったら終わるのでしょうか?

今年中に終われば奇跡ってところですかね?

さてさて、今回は母比率の検定です。

母比率とは?

母集団の比率のことです。そのまんまといえばそのまんまですね。

で、ちょっと話が逸れるのですが、今までの検定の話は母集団が正規分布に従うことが必要な条件でした。

しかし、中心極限定理というものを使えば、母集団が正規分布に従わない場合でも標本が十分に大きい場合は標本平均の分布は正規分布に従うことが言えました。

よって、この中心極限定理を使うことで母集団が正規分布に従わなくても標準正規分布を用いて検定を行うことができます。

ということで、中心極限定理を利用して母集団が正規分布に従わなくても検定が行えることを実際に見ていきましょう。

例題

あるサイコロを12000回投げた時、1が2200回出た。このサイコロはどの目も等しく出る歪みのないサイコロと言えるか?

解答

仮に歪みのないサイコロであるなら、1〜6がほぼ等しく出るはずなので1の目が出る確率は

 \displaystyle P(X = 1)= \frac{1}{6}

となるはずです。今回12000回投げたのであれば1が出る回数は理論上は2000回になるはずですが...?

1 仮説を立てる

帰無仮説 H_0:このサイコロの1が出る確率 \displaystyle P(X = 1)= \frac{1}{6}である

対立仮説 H_1:このサイコロの1が出る確率 \displaystyle P(X = 1) \neq \frac{1}{6}である

2 有意水準を設定

 \alpha = 0.05とします。

3 適切な検定統計量を決める

さて、母比率の検定ではサンプルサイズ nが十分に大きい場合、中心極限定理を利用して標準化した統計量 zを以下のように表現できます。ここで p_0は母比率です。

 \displaystyle z = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0(1-p_0)}{n}}}



ここの式ですが、色々すっ飛ばしているので丁寧に見ていくことにしましょう。

まず、仮説の方を振り返って考えてみると「サイコロの1が \displaystyle P(X = 1)= \frac{1}{6}の確率で出るか出ないか」とも読み取れます。

つまり、 \displaystyle B\left(12000, \frac{1}{6} \right)の2項分布と考えることができます。

ということで、 \displaystyle B\left(12000, \frac{1}{6} \right)の期待値 \muと分散 \sigma ^2

 \displaystyle \mu = np = 12000 \times \frac{1}{6} = 2000

 \displaystyle \sigma ^2 = np(1-p) = 12000 \times \frac{1}{6}  \times (1 - \frac{1}{6}) = 1666.66...

と計算出来ます。

ここでサンプルサイズ nは十分大きいとき、中心極限定理より \displaystyle B\left(12000, \frac{1}{6} \right) N(0, 1)の標準正規分布に従います。

よって、統計量 \displaystyle zは2項分布 B(np, np(1-p))から、

 \displaystyle z = \frac{\bar{X} - \mu}{\sigma}

 \displaystyle = \frac{(サイコロの1が出る回数) - np}{\sqrt{np(1-p)}}

ここで、 \hat{p} = \frac{(1が出る回数)}{総計数} とすると、

 \displaystyle z = \frac{\bar{X} - \mu}{\sigma}

 \displaystyle = \frac{\frac{X}{n} - p_0}{\sqrt{\frac{p_0(1-p_0)}{n}}}

 \displaystyle = \frac{\hat{p}- p_0}{\sqrt{\frac{p_0(1-p_0)}{n}}}

となります。これを計算すると、

 \displaystyle z = \frac{\frac{2200}{12000} - \frac{1}{6}}{\sqrt{\frac{\frac{1}{6}(1-\frac{1}{6})}{12000}}} \simeq 4.899

となります。

以上、統計量を計算出来ました。

4 棄却ルールを決める

中心極限定理から、この検定で使用する分布は標準正規分布です。今回、サイコロの1の目の出方に歪みがないかどうかを確認したいため、両側検定を行います。

この時、統計数値表から Z_{0.025}の値は

 Z_{0.025} = 1.96

となります。

5 検定統計量をもとに結論を出す

今まで求めた情報を元にすると以下の図のようになります。

 P(Z = 1.96) \lt P(4.899)より統計量は棄却域に入りました。

よって、有意水準 5\%において、帰無仮説 H_0を棄却し対立仮説 H_1を採択します。

よって、このサイコロの1の目が出る確率は \displaystyle \frac{1}{6}ではないと結論づけられます。

まとめ

用語 意味
母比率 母集団の比率のこと