🔍
Levene(ルビーン)検定・Brown-Forsythe(ブラウン・フォーザイス)検定|等分散性の検定
概要
同じ対象ではなく、複数の独立したグループ間で分散の等質性(等分散性)を検定する方法。
Levene検定は平均値、Brown-Forsythe検定は中央値を基準に検定。
主な用途
パターン | 説明 | 実務ユースケース |
---|---|---|
等分散性の確認 | グループ間の分散が等しいかを検定 | 施策別グループでの売上やCV率比較におけるグループ間の等分散性確認 (前提条件確認) |
グループ間のばらつき比較 | グループ間で数値のばらつきに差があるかどうかを検定 | 都道府県別の支出の安定度を比較し、変動の大きい地域を特定 |
データ要件
- 従属変数:数値型/連続変数(例:売上、CV率、支出)
- 独立変数:独立した2群以上のグループ(例:施策AvsB、都道府県、メール配信ありvsなし など)
- 前提条件:特になし ※正規分布でなくてもOK
理論
Levene検定・Brown-Forsythe検定は、ともにグループ間の分散の差(等分散性)を検定
- 帰無仮説:すべてのグループで分散は等しい(=等分散)
- 対立仮説:いずれかのグループで分散が異なる(両側検定) ※片側検定は存在しない
Levene検定・Brown-Forsythe検定はそれぞれ基準とする統計量が異なり、以下のような違いがある:
Levene検定 :各観測値とグループ平均との差の絶対値を用いて分散を比較
Brown-Forsythe検定:各観測値とグループ中央値との差の絶対値を用いるため、
外れ値に強くロバスト性が高い
いずれも、グループ間の"ズレ"が大きければ等分散ではないと判断される
【検定の手順】
-
グループごとに平均(または中央値)との絶対差を計算
-
計算した絶対差に対して一元配置分散分析(ANOVA)を行いF値を計算
各グループの「ズレの平均(=絶対差)」に差があるかを検定するためにANOVAを使う
F値が大きいほど、グループ間の「ズレ(絶対差の平均/中央値)」に差があることを示す
-
得られた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)
Discussion