Excel関数によるFisherの正確確率検定
2025/02/06
カテゴリ:Tips
統計解析では、カテゴリー変数間の関連を評価するために独立性の検定(カイ二乗検定)がよく用いられます。しかし、データの内容によっては独立性の検定結果が適切でない場合があります。そのような場合、フィッシャーの正確確率検定を用いることで、より適切に検定できます。本記事では、フィッシャーの正確確率検定が必要となるケースを整理し、Excel関数を用いたFisherの正確確率検定の計算方法について詳しく解説します。
独立性の検定が適切でない場合
クロス集計表が次の2つのケースのいずれかを満たす場合、独立性の検定結果は信頼性に欠けます。
- 期待度数が1未満のセルがある
- 期待度数が5未満のセルが、全体のセルの20%以上ある
なお、期待度数の計算方法については、統計学の時間、Step1. 基礎編での25-5. 独立性の検定を参考にしてください。
Fisherの正確確率検定とは
フィッシャーの正確確率検定は、2つのカテゴリ変数間に有意な関連があるかどうかを判断するために使用されます。
特徴として、カイ二乗検定などの近似的な手法とは異なり、Fisherの正確確率検定では、超幾何分布を用いて、起こりうるすべての組み合わせの中で、観測されたデータよりも極端な結果が得られる確率を直接計算します。これにより、サンプルサイズが小さい場合や、期待度数が小さいセルがある場合でも、正確なp値を算出できます。
Fisherの正確確率検定の計算方法
ここからは具体的な2行2列のクロス集計表のデータを元にFisherの正確確率検定の計算方法について解説します。まず、実験計画の観点から有意水準を事前に設定することが重要です。今回は有意水準を5%に設定します。
国語の好き嫌いと数学の好き嫌いに関連があるかを調べたいとします。これを調べるために、キャンパス内でランダムに40人の学生にアンケートを行いました。クロス集計表は以下の通りです。
国語が好き | 国語が嫌い | 計 | |
---|---|---|---|
数学が好き | 2 | 8 | 10 |
数学が嫌い | 10 | 20 | 30 |
計 | 12 | 28 | 40 |
このデータの場合、各セルの期待度数は次のようになります。
国語が好き | 国語が嫌い | 計 | |
---|---|---|---|
数学が好き | 3 | 7 | 10 |
数学が嫌い | 9 | 21 | 30 |
計 | 12 | 28 | 40 |
ここで、「国語が好き・数学が好き」のセルの期待度数が「3」なので、全体のセルの25%を期待度数5未満のセルが占めます。したがって独立性の検定の結果が適切でないケースにあてはまるため、代替手法としてFisherの正確確率検定を実施します。
片側検定の場合
片側検定の帰無仮説は、「国語の好き嫌いと数学の好き嫌いの間に関連があるとはいえない」となります。帰無仮説が正しければクロス集計表の各セルは期待度数と一致し、「国語が好きで数学も好きな人」は 3 人、「国語が好きで数学が嫌いな人」は 9 人となるはずです。しかし、観測度数はそれぞれ 2 人と 10 人でした。
観測度数と期待度数を比較すると、「国語が好きで数学が嫌いな人」は期待度数より多く、「国語が好きで数学が好きな人」は少なくなっています。このことから、対立仮説は「国語が好きな人は数学を嫌う傾向にある」となり、片側検定のp値は、「国語と数学が好きな人数が観測度数の2以下になる確率」になります。(もしくは、「国語が好きで数学が嫌いな人が観測度数の10以上になる確率」と考えても同様です。)
手計算による片側p値の計算方法
次表は帰無仮説「国語の好き嫌いと数学の好き嫌いの間に関連があるとはいえない」の元で「国語と数学の好き嫌い」に関する4グループの人数が表中の値になる確率を算出しています。具体的には各人が「国語と数学の好き嫌い」に関するどの4グループに属するのも「同様に確からしい」として確率を計算します。数学が好きな人数を10、数学が嫌いな人数を30に固定して確率を計算します。確率は「数学が好き・嫌いな場合のそれぞれで国語が好きな人数が表中の値になる場合の数の積」を「起こり得る全ての場合の数」で割って計算されます。 例えば、「国語と数学が好き」な人が2人になる確率は、次のように求めます。
- 数学好きの10人から、「国語が好き」な2人を選ぶ場合の数。
- 数学嫌いな30人から、「国語が好き」な10人を選ぶ場合の数。
これら場合の数を掛け合わせたものを「起こり得る全ての場合の数」で割ると、求める確率が得られます。 同様の解説を「統計学の時間」の「Step2. 中級編」における5-2. フィッシャーの正確確率検定にも記載していますので、併せてご確認ください。
国語好き/数学好き | 国語好き/数学嫌い | 国語嫌い/数学好き | 国語嫌い/数学嫌い | 確率 |
---|---|---|---|---|
0 | 12 | 10 | 18 | 0.0155 |
1 | 11 | 9 | 19 | 0.0978 |
2 | 10 | 8 | 20 | 0.242 |
3 | 9 | 7 | 21 | 0.307 |
4 | 8 | 6 | 22 | 0.220 |
5 | 7 | 5 | 23 | 0.0918 |
6 | 6 | 4 | 24 | 0.0223 |
7 | 5 | 3 | 25 | 0.00306 |
8 | 4 | 2 | 26 | 2.21e-4 |
9 | 3 | 1 | 27 | 7.27e-6 |
10 | 2 | 0 | 28 | 7.79e-8 |
上表より、「国語と数学が好き」の人数が0人、1人、2人になる確率がそれぞれ0.0155、0.0978、0.242になるため、片側p値は以下のように計算できます。
片側p値 = 0.0155 + 0.0978 + 0.242 = 0.3553
Excel関数による片側p値の計算方法
Excel関数「HYPGEOM.DIST」を使用することで、次式から片側p値を計算できます。
片側p値= HYPGEOM.DIST(2, 12, 10, 40, TRUE)
Excel関数「HYPGEOM.DIST」は超幾何分布に基づく関数で、有限母集団から無作為抽出を行う際に、特定の成功数が得られる確率を計算します。
この例の場合、「HYPGEOM.DIST」の最初の引数は国語と数学が好きな人数、2番目の引数は国語が好きな人数、3番目の引数は数学が好きな人数、4番目の引数は合計人数を意味します。最後の引数がTRUEの場合は累積密度関数となり「国語と数学が好きな人数」が1番目の引数以下になる累積確率を返します。一方で最後の引数がFalseの場合は密度関数となり、「国語と数学が好きな人数」が1番目の引数となる確率を返します。
実際にExcelで関数「HYPGEOM.DIST」を用いて計算すると、片側検定のp値が0.35526になります。p値が0.05未満ではないため、帰無仮説を棄却できません。つまり、国語の好き嫌いと数学の好き嫌いの好みには有意な関連があるとは言えません。
両側検定の場合
両側検定を行う場合、帰無仮説は片側検定と同じ「国語の好き嫌いと数学の好き嫌いの間に関連があるとはいえない」ですが、対立仮説は「国語の好き嫌いと数学の好き嫌いの間に関連がある」となります。
片側検定では、「国語と数学が好き」の観測度数よりも少ない人数の場合、すなわち0人、1人、2人の場合の確率の合計でした。両側検定では反対側の確率も含める必要があります。期待度数3人に対して観測度数2人は差が1なので、期待度数よりも大きい側として「国語と算数が好き」が4人以上の場合の確率を片側p値に加えます。
従って両側p値はExcel関数「HYPGEOM.DIST」を用いて次式で書けます。今回は「国語と算数が好き」が3人となる確率を求めることで算出できるため、関数の最後の引数にFALSEを入れている点に注意してください。
両側p値
= 「国語と数学が好き」の人数が2以下または4以上になる確率
= 1 - 「国語と数学が好き」の人数が3になる確率
= 1 - HYPGEOM.DIST(3,12,10,40,FALSE)
= 1 - 0.307
= 0.693
最後に
本記事では、フィッシャーの正確確率検定をExcelで実行する方法について説明しました。独立性の検定(カイ二乗検定)が適用できないデータの場合にはフィッシャーの正確確率検定が有効な選択肢となります。本記事で紹介したExcel関数 「HYPGEOM.DIST」 を活用すれば、片側検定と両側検定のp値を簡単に計算できます。