🔍

Levene(ルビーン)検定・Brown-Forsythe(ブラウン・フォーザイス)検定|等分散性の検定

に公開

概要

同じ対象ではなく、複数の独立したグループ間で分散の等質性等分散性)を検定する方法。
Levene検定平均値Brown-Forsythe検定中央値を基準に検定。

主な用途

パターン 説明 実務ユースケース
等分散性の確認 グループ間の分散が等しいかを検定 施策別グループでの売上やCV率比較におけるグループ間の等分散性確認 (前提条件確認)
グループ間のばらつき比較 グループ間で数値のばらつきに差があるかどうかを検定 都道府県別の支出の安定度を比較し、変動の大きい地域を特定

データ要件

  • 従属変数:数値型/連続変数(例:売上、CV率、支出)
  • 独立変数:独立した2群以上のグループ(例:施策AvsB、都道府県、メール配信ありvsなし など)
  • 前提条件:特になし ※正規分布でなくてもOK

理論

Levene検定・Brown-Forsythe検定は、ともにグループ間の分散の差(等分散性)を検定
 - 帰無仮説:すべてのグループで分散は等しい(=等分散)
 - 対立仮説:いずれかのグループで分散が異なる(両側検定) ※片側検定は存在しない

Levene検定・Brown-Forsythe検定はそれぞれ基準とする統計量が異なり、以下のような違いがある:
 Levene検定     :各観測値とグループ平均との差の絶対値を用いて分散を比較
 Brown-Forsythe検定:各観測値とグループ中央値との差の絶対値を用いるため、
             外れ値に強くロバスト性が高い
いずれも、グループ間の"ズレ"が大きければ等分散ではないと判断される

【検定の手順】

  1. グループごとに平均(または中央値)との絶対差を計算

  2. 計算した絶対差に対して一元配置分散分析(ANOVA)を行いF値を計算

各グループの「ズレの平均(=絶対差)」に差があるかを検定するためにANOVAを使う

F値が大きいほど、グループ間の「ズレ(絶対差の平均/中央値)」に差があることを示す

  1. 得られたF値とp値に基づいて判断
    → p値が有意水準(例:0.05)未満なら、等分散ではないと判断(帰無仮説を棄却)

p値の計算は実際にはscipy.stats.levene()などのライブラリで内部的に計算される

実装コード例

Python

from scipy.stats import levene

# 2群のデータ 
group_a = df[df['group'] == 'A']['value']
group_b = df[df['group'] == 'B']['value']

# Levene検定(Brown-Forsythe検定(中央値ベース)にしたい場合は center='median' を指定)
stat, p_val = levene(group_a, group_b, group_c, center='mean')

print(f"Levene検定統計量={stat:.3f}, p値={p_val:.5f}")

if p_val < 0.05:
    print("→ 分散に有意な差があります(等分散ではありません)")
else:
    print("→ 分散に有意な差はありません(等分散とみなせます)")

注意点・Tips

  • 主にt検定・ANOVAの前提条件として活用:前提条件が満たされているかの確認
  • Brown-Forsythe検定は外れ値に強い:データに歪みや外れ値がある場合はこちらが推奨される
  • 等分散が成り立たない場合
    t検定であればWelchのt検定、ANOVAであればWelchのANOVAなど代替手法を使用
  • グループ数が3つ以上でも使用可能:2群だけでなく、3群以上の比較にも対応
  • スコアに対しても検定可能だが、以下の場合は使えなかったり注意が必要
    • スコアが非常に粗い(例:1〜3点しかない)
    • 数値的間隔に意味がないスコア(例:好き=3、普通=2、嫌い=1)
    • スコアがカテゴリ扱い(例:S/A/B/C/D)

ケーススタディ

🔗キャンペーン施策の効果測定

関連手法

  • 類似手法
    • F検定(等分散性を2群間で直接比較、ただし正規性が前提)
  • 分散が異なる場合の代替手法

参考リンク・文献

Discussion