ねこすたっと

ねこの気持ちと統計について悩む筆者の備忘録的ページ。

高校生のためのデータ分析入門 (26):カテゴリー変数を比較するとき、基本はカイ2乗検定!

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (25):P値はどうやって計算するの? - ねこすたっと

ほとんどはカイ2乗検定でOK!

前回、サイコロが公平かどうかを確かめる方法として、カイ2乗検定を紹介しました。 まずはカイ2乗分布とはどんな確率分布なのか見てみましょう。

そもそもカイ2乗分布って?

カイ2乗分布(chi-square distribution)は、標準正規分布に従う独立な変数を2乗して足してできた変数が従う確率分布です。つまり、 X_i \sim N(0,1) のとき、 \sum X_i^2 はカイ2乗分布に従う、ということです。

カイ2乗分布について、押さえておくべき特徴は次の2つ!

  • 変数が正の範囲にしか分布しない(2乗して足したものは必ず正だから)
  • 足し合わせる個数によって形が変わる(足す個数kが大きい方が広くバラつきそう)

確率密度関数はちょっと複雑なので紹介しませんが、足す個数kの値によってどのように分布の様子が変わるのか、下の図をみてください(wikipedia - カイ2乗分布)。

このkは、カイ2乗分布の形状を決めるパラメータで、自由度(degree of freedom, df)と呼ばれます。自由度kのカイ2乗分布を  \chi(k) と書くので、数式を使うと、

 
\begin{aligned}
X_i &\sim N(0,1) \\
\sum_i^k X_i^2 &\sim \chi(k)
\end{aligned}

と書くことができます。

カイ2乗検定で期待値からのズレを評価する

カイ2乗検定(chi-square test)は、理論値・期待値(E)と実際の観測値(O)から、カイ2乗統計量を計算し、これがカイ2乗分布に従うことを使ってP値を求めることを前回説明しました。例えば、カテゴリー数がm個の場合は、下の関係が成り立ちます。

 
\begin{aligned}
X^2 &= \sum_i^m \frac{(O_i - E_i)^2}{E_i} \sim \chi(m-1)
\end{aligned}

ここで、自由度がmではなくm-1になっている理由は、「m-1のカテゴリーに入る度数が決まったら、残り1つのカテゴリーに入る度数は自動的に決まるから」です。自由度の説明がもう少し読みたい人は、下の記事を参考にしてください。

best-biostatistics.com

これを使って、カテゴリー変数をどのように比較できるのか見ていきましょう。 例えば、文系クラスと理系クラスで猫好き・犬好きを調査したら、下の表になったとしましょう。

「文系と理系で猫派・犬派の割合が変わるか」ということを検証したいときは、まずこれを否定した帰無仮説を考えるんでしたね。帰無仮説は「文系と理系で猫派・犬派の割合は変わらない」です。では、帰無仮説が正しいとき、さっきの表がどうなっているはずでしょうか?

文系・理系で猫派の割合が変わらないと仮定すると、それぞれの猫派の割合は学年全体における猫派割合  \frac{190}{250} と同じになるはずです。文系は100名いるので、猫派の人数は、100×190/250 = 76名いるはずです。この76名が、帰無仮説のもとでの期待値ということになります。

「文系・猫派」の期待値は、(文系の周辺度数*1=100)×(猫派の周辺度数=190)/(全体数=250)で求められました。 「文系・犬派」、「理系・猫派」、「理系・犬派」も同じように求めることができますが、実際には「文系・猫派」が求まれば、他のマス目に入るべき人数は自動的に決まります(例:「文系・犬派」= (文系の周辺度数=100)- (「文系・猫派」の期待値=76)= 24)。

期待値を表にまとめると、

となります。観測値と期待値が分かればカイ2乗値は計算できますね。

 
\begin{aligned}
X^2 &= \sum_i^m \frac{(O_i - E_i)^2}{E_i} \sim \chi(m-1) \\
&= \frac{(90-76)^2}{76} + \frac{(100-114)^2}{114} + \frac{(10-24)^2}{24} + \frac{(50-36)^2}{36} \\
&= 17.90936
\end{aligned}

X2は自由度1のカイ2乗分布に従うので、これを使って  P=2.3×10^{-5} と計算できます(つまり、割合は有意に異なっている)。 なぜマス目は4つあるのに自由度は1なのかというと、先程説明したように1つのマス目が決まれば残りは自動的に決まるからです。

ちなみに、「文系・理系で猫派・犬派の割合が異なっているか」ということと、「猫派・犬派で文理の割合が異なっているか」ということは全く同じことです(実際にX2を計算しても同じになります)。なので、どちらの項目から捉えるかを区別せずに「2つの項目の間に関連性があるか」と読み換えると良いです。

カテゴリー数が多い場合は?

例えば、「文系・理系」ではなく「1組〜5組」、あるいは「猫派・犬派」ではなく「猫派・犬派・爬虫類派」のように、カテゴリー数が3つ以上になってもカイ2乗検定は使えます。 それぞれの項目から2つのカテゴリーを選んできて比較するという意味ではなくて、クラスによって「猫派・犬派・爬虫類派」の分布が変わるか、もう少し言えば「2つの項目(クラス・何派か)の間には関連性があるのか」を検定できる、という意味です。

関連性を確かめたい2つの変数のカテゴリー数がm, nであった場合、m×n個のマス目がある表ができます。さっきと同じように、期待値を求めて、観測値との違いをX2値として計算してやればいいです。 ただし、カイ2乗分布は、自由度(m-1)×(n-1)のものを使います

例えば、1つ目の項目が「1組〜5組」の5カテゴリー、2つ目の項目が「猫派・犬派・爬虫類派」の3カテゴリーなら15マスありますよね。この15マスについて、観測値と期待値の差をもとにX2値を計算して、自由度が(5-1)×(3-1)=8のカイ2乗分布に従うことを利用してP値を計算します。

m=n=2とすると、2×2表のときに自由度1のカイ2乗分布を用いたことと整合性があることが確認できますね。

カイ2乗検定が使えないとき

期待されるマス目の度数が小さい場合

期待される度数が小さいときは、カイ2乗検定が不正確になるので使用を避けるべきと言われています。期待度数が少ない基準としては、下のものが一般的です。

  • 期待度数が 5 以下のマスが全体の 20% 以上ある場合
  • 期待度数が 1 以下のマスが 1 つでもある場合

この条件に引っかかってしまう場合は、カイ2乗検定ではなくフィッシャー正確検定(Fisher exact test)を使うように勧められることが一般的です。これには色々と問題もありそうですが、検定の名前くらいは覚えておきましょう。

同じ人に2回調査をしている場合

例えば、学校で「世界ネコ歩き(岩合光昭さん・NHK)」の鑑賞会があったとします。見る前と見た後に、40人のクラスメートに猫派・犬派を聞いたとします。

見る前から猫派だった人は、当然見た後も猫派ですよね。それを無視して、「見る前後で関連がない」として期待値を求めることには意味がありません。文系・理系で比べたときは1人につき1回しか調査しなかったのでこのような問題は起こりませんでしたが、「今回は同じ人に2回調査をしている」という点がポイントです。同一対象者の前後を比較する場合は、データの中に対応関係(ペアとなる関係)が含まれることになります。このようなデータを「対応のあるデータ(paired data)」と呼びます。 対応のあるデータの例としては、前後比較の他に、双子をペアにして調査するケースがあります。

対応のあるデータで割合を比べるときには、マクネマー検定(McNemar test)を用います。詳細は割愛しますが、名前だけでも覚えておくといいでしょう。

おわりに

*1:そのカテゴリーに関しての合計数のこと。