
【第24回】独立性の検定-前編
今回考えるのは、アンケート調査におけるクロス集計において、一方の回答が他方の回答と関係があると言えるかの判断を行う仮説検定を行います。
具体的な問題で考えてみましょう。
今回考える問題
スマートフォンを所持している高校生100名に「性別」と「メインで使っているスマートフォンのOS」を調査し、これらの回答をクロス集計したところ、下記の表のようになったとします。

男子と女子で、利用しているスマートフォンのOSに差があると判断できるかを有意水準5%で仮説検定をするという問題を考えます。
以下、簡単のために「メインで使っているスマートフォンのOS」の単に、「スマホのOS」といい、iOS搭載のスマートフォンを「iPhone」、Android搭載のスマートフォンを「Androidスマホ」と呼ぶことにします。
独立性の検定とは
男女別にiPhone利用者の割合を見てみましょう。
男子は40名中25名で62.5%、女子は60名中45名で75%なので、こちらの集計結果では女子の方がiPhone利用者の割合が高くなっています。
この違いをもってして、「性別」と「スマホのOS」の間には関係があると判断できるのでしょうか。
これを判断するのが、今回のテーマの独立性の検定です。
詳しい説明は省略しますが、今回はその中でもカイ2乗分布という確率分布に従う確率変数を利用するカイ2乗検定を行っていきます。
ここで、カイはギリシア文字の$${ \chi }$$のことです。
カイ2乗検定
帰無仮説と対立仮説
今回の問題を整理して、仮説を立てます。
[帰無仮説] 性別とスマホのOSの間には関係がない。
[対立仮説] 性別とスマホのOSの間には関係がある。
対立仮説が判断をしたい主張であり、帰無仮説はそれに反する主張でした。
帰無仮説が棄却されることをもってして、対立仮説が正しいと判断するというのが仮説検定の基本的な考え方でしたね。
実測度数と期待度数
では、帰無仮説のもとでのクロス集計表がどうなるかを考えてみたいと思います。つまり、性別とスマホのOSの間には全く関係がないと仮定したときのクロス集計表はどうなっているのかというのを考えるというわけです。
結論から言うと、下の表2のクロス集計表のようになります。

この帰無仮説のもとでの集計結果を期待度数といい、一方、実際の集計結果のことを実測度数といいます。
それでは、期待度数はどのように求めるのでしょうか。これは、次のように考えます。
スマホのOSの結果に性別という違いが影響を与えないと仮定すると、全体のiPhoneとAndroidスマホの比が、70:30(=7 : 3)であることから、 「男子」も「女子」も、iPhoneとAndroidスマホの比は 7 : 3 になっているはずと考えます。

具体的な計算は下記の通りです。
男子の期待度数
iPhone 40 × 0.7 = 28(人) Android 40 × 0.3 = 12(人)
女子の期待度数
iPhone 60 × 0.7 = 42(人) Android 60 × 0.3 = 18(人)
表計算ソフトで期待度数を算出
今回は簡単な計算で期待度数が求められましたが、実際のデータではかなり大変な計算になることもあります。
そこで、表計算ソフトを使って期待度数を計算してみたいと思います。

例えば、セルI4は「男子のiPhone利用者」ですが、これは
$$
男子人数 \times \frac{\text{iPhone}利用者数}{総人数} = 40 \times \frac{70}{100} = 28
$$
であったことに注意をします。つまり、
= E4 * C6 / E6
が今回入力する数式です。
ただし、これをJ4・I5・J5にこれからコピーしようと思うと、このままでは相対参照により、参照セルが意図したものになってくれません。
これは、第22回記事で扱いました「複合参照」のよい練習問題になります。
答えは = $E4 * C$6 / $E$6ですね。
p値
それでは、p値を求めてみたいと思います。次の関数を用います。
=CHITEST(実測度数範囲, 期待度数範囲)

今回は、セルH4に =CHITEST(C4:D5, I4:J5) を入力します。
その結果、およそ0.1814が出力されます。これが今回のp値です。
結論
従って、これは有意水準の0.05よりも大きいですので、帰無仮説を棄却できません。
すなわち、「性別は利用しているスマートフォンのOSに関係しているとは判断できない」というのが今回の結論です。
ここまでで、情報Iの授業としては扱う内容としては十分だと思っています。
参考
ここから先は少し踏み込んだ内容で、検定統計量「$${ \chi^2 }$$(カイ2乗)値」に注目してみたいと思います。
帰無仮説を仮定したときの状況(期待度数)と現在の状況(実測度数)とが、「どれくらいずれているのか」が判断をする上での重要な指標になりそうです。
その指標として「$${ \chi^2 }$$(カイ2乗値)」という値(検定統計量)が用いられ、次の式で表すことができます。
$$
\chi^2 = \frac{ (実測度数 - 期待度数)^2 }{ 期待度数 } の合計値
$$
この問題の場合は次のようになります。

$$
\chi^2 = \frac{ (25 - 28)^2 }{ 28 } + \frac{ (15 - 12)^2 }{ 12 } + \frac{ (45 - 42)^2 }{ 42 } + \frac{ (15 - 18)^2 }{ 18 } \fallingdotseq 1.786
$$
表計算ソフトで実際に、=(C3-I3)^2 / I3 などを入力して上の式の各項の値を求めてそれを足しても、もちろんよいのですが、この値は次の関数を使って、p値とクロス集計表のサイズから簡単に求められます。
=CHIINV(p値, 自由度)
ここで、自由度とはクロス集計表の (行数-1) と (列数-1) の値を言います。
今回は2行2列ですので、自由度は$${ (2-1) \times (2-1) = 1 }$$です。
セルH1にp値が入力されていることに注意すると、セルJ1に
=CHIINV(H1, 1)
を入力することで、カイ2乗値を出力させることができます。
今回はおよそ1.786が出力されます。
自由度が1で、有意水準5%で検定を行うときは、カイ2乗値が3.841より大きいときに帰無仮説が棄却されることがカイ2乗分布の表により分かります。
今回はそれより小さかったために、帰無仮説を棄却することができませんでした。

まとめ
今回は、クロス集計において一方の回答要素が他方の回答要素と関係をしているかどうかを判断する独立性の検定についてまとめてみました。
$${ \chi^2 }$$分布はこれまでに出てきた正規分布や$${ t }$$分布とも関係が深く、統計学ではこのあたりをしっかりと学習をするのですが、まずは$${ \chi^2 }$$検定の基本的な考え方を学ぶことに重きをおいています。
探究学習の中で、アンケート調査や分析を行う機会は多くあると思われます。そのときに、回答結果をどのように読み取るのかという手法として、独立性の検定は大変有効なのではないかと思われます。
データを科学的に考察し、論拠に基づいて判断をする力を高等学校教育全体の中で培っていく中で、このような内容を情報Iの授業に取り入れてもよいのではないかと考えました。
次回の後編では以上の処理をPythonのScipy.statsライブラリのメソッドを利用して行ってみたいと思います。仮説検定編も次回で一度完結の予定です。
最後までお読みいただき、ありがとうございました。