🔍

Fisher(フィッシャー)の正確確率検定|独立性の検定

に公開

概要

Fisherの正確確率検定(Fisher's Exact Test)は、カイ二乗検定による独立性の検定と同様に
2つのカテゴリ変数の間に関連(独立性)があるかどうかを検定するための検定手法

主な用途

パターン 説明 実務ユースケース
カテゴリ変数同士の関連性確認 2つのカテゴリ変数が統計的に関連しているかどうかを確認 性別と購買有無の関係、地域別の満足度分布の違いなど
2グループの傾向差比較 2グループ間での傾向に違いがあるかを確認 A社・B社でアンケート回答分布に違いがあるか、年代別に好みが異なるかなど
マーケティング施策の効果検証 属性別の反応率の違いなどから施策の効果が属性に依存しているかを確認 メール配信あり・なしと購入率の関係、キャンペーン別に反応が異なるかの確認

データ要件

  • 変数の型:カテゴリ変数 × カテゴリ変(例:性別×購買有無、年代×イベント参加の有無 など)

  • データ形式:度数データのクロス集計表(2×2)
    例:

    購入有無 合計
    男性 2 1 3
    女性 1 2 3
    合計 3 3 6

    セルの値はカウント

  • 前提条件:

    • 期待度数が5未満でも適用可能(カイ二乗検定では不適な場合に有効)
    • 2×2のクロス集計表が前提
    • データはカテゴリ変数で、数値の大小や連続性は不要
    • 観測データは独立している(同じ人が複数回含まれない)

理論

各カテゴリが独立であるという仮定のもとに期待される頻度と観測された頻度の差を評価
 - 帰無仮説:2つのカテゴリ変数は独立である(=関係がない)
 - 対立仮説:2つのカテゴリ変数は独立でない(=関係がある) ※片側検定は存在しない

【検定の手順】

  1. 2×2のクロス集計表を作成(行・列にカテゴリ)
    例:
    購入有無 合計
    男性 2 1 3
    女性 1 2 3
    合計 3 3 6
  2. 各セルの観測度数をもとに、超幾何分布で期待される確率を計算
    超幾何分布の確率を求める式:
P(X = k) = \frac{\binom{K}{k} \cdot \binom{N - K}{n - k}}{\binom{N}{n}}
  • N:全体の対象数(例:全6人)
  • K:「成功」と定義するカテゴリ(例:購入あり)の人数
  • n:抽出したグループの人数(例:男性の人数)
  • k:その中で「成功」となる人数(例:男性のうち購入あり)

例で示すと、「男性で購入あり」が「2人」の確率は0.45となる

  1. 検証したいカテゴリ×カテゴリで起こりうるすべてのパターンの確率を算出

例で示すと、購入者3人のうち「男性で購入あり」で購入するパターンは男性0~3人
男性0の確率は0.05、男性1の確率は0.45、男性2の確率は0.45、男性3の確率は0.05

  1. 3.の確率のうち、2.の確率以下になるものの合計をp値として算出
    → p値が有意水準(例:0.05)未満なら、2変数は独立でないと判断(帰無仮説を棄却)

2.の確率は0.45なので、これ以下になる3.の確率を合計すると
p値 = 0.05 + 0.45 + 0.45 + 0.05 = 1.0となる
※ 実際の計算は scipy.stats.fisher_exact() で内部的に算出される(2×2の表に限定)

実装コード例

Python

import pandas as pd
from scipy.stats import fisher_exact

# クロス集計表(例)を作成
data = pd.DataFrame({
    '性別': ['男性', '女性', '男性', '女性', '男性', '女性'],
    '購入有無': ['有', '無', '有', '無', '無', '有']
})

# クロス集計
cross_table = pd.crosstab(data['性別'], data['購入有無'])

# Fisherの正確確率検定(両側検定)
odds_ratio, p_value = fisher_exact(table, alternative='two-sided')
print(f"オッズ比={odds_ratio:.3f}, p値={p_value:.5f}")
if p_value < 0.05:
    print("→ 有意な関係があります(独立ではありません)")
else:
    print("→ 有意な関係は確認できません(独立とみなせます)")

注意点・Tips

  • 度数(カウント)データが前提
    割合や連続値では❌ 割合は元となった人数が必要!
  • 2×2の表に限定される:それ以上のカテゴリ(3×2など)には適用不可
    → 場合によってはカテゴリ統合を検討
  • サンプル数が少ない場合に特に有効
    期待度数が5未満のセルが含まれていても使用可能(カイ二乗検定の代替手法として使用可能)
  • 有意差の方向性や効果の大きさを見るには、オッズ比と信頼区間の併用が有効

ケーススタディ

🔗 クレーム分析

関連手法

  • 類似手法
    • カイ二乗検定(サンプルサイズが十分ある場合のカテゴリ間の独立性検定)
  • 関連手法
    • 適合度の検定(1つのカテゴリ変数の理論分布との一致度の差検定)
    • McNemar検定(対応のある2群間の変化を検定)

参考リンク・文献

脚注
  1. クロス集計表の各セルにおいて、「帰無仮説(2つのカテゴリ変数は独立である)」が正しいと仮定した場合に期待される度数(人数や件数など) ↩︎

Discussion