🔍
一元配置ANOVA(分散分析)|独立3群以上の差検定
概要
3群以上のグループに対して平均値に有意な差があるかを検定する手法
主な用途
パターン | 説明 | 実務ユースケース |
---|---|---|
群間比較(3群以上) | 異なる3群以上の平均を比較 | 地域(東京・大阪・福岡)や施策別(A,B,C)で売上額に差があるかを検証 |
属性による比較 | 属性で分けた3群以上の差を比較 | 学歴別に平均収入の差を検定 |
ランダム分割テスト | 無作為に3群以上を作り効果を検証 | ボタンA/B/Cでクリック率の差を検定 |
データ要件
- 従属変数:数値型(例:CV率、収入、クリック率など)
- 独立変数:3群以上の独立したカテゴリグループ(例:都道府県、施策別、属性など)
- 前提条件:
- 比較する3群以上の各群間に独立性がある(同一人物が複数群にいない)
- 各群の従属変数が正規分布に従う
- 各群での等分散性があること
理論
各グループ内のばらつきと、グループ間のばらつきを比較し、
群間の差がランダムなばらつきに比べて大きいかどうかを検定
- 帰無仮説:すべての群の母平均は等しい(=差がない)
- 対立仮説:いずれかの群に平均の差がある(=差がある) ※ 片側検定は存在しない
【検定の手順】
-
全体、要因、残差の平方和を求める
-
全体、要因、残差の自由度
,N ,k-1 を求めるN-k -
:群数(例:A,B,Cの場合3)k -
:全データ数(例:A,B,C群それぞれ10件ずつの場合30)N
-
-
要因と残差の平均平方を求める
要因の平均平方 = \frac{要因の平方和}{自由度k-1} 残差の平均平方 = \frac{残差の平方和}{自由度N-k} -
「群間のばらつき(要因の平均平方)」と「群内のばらつき(残差の平均平方)」からF統計量を算出
-
自由度
に基づきF分布からp値を計算(k-1,N-k)
→ p値が有意水準(例:0.05)未満なら帰無仮説は棄却=平均値に有意な差があると判断
p値が有意でも「どの群が違うか」はわからないため、事後検定(TukeyのHSDなど)を行うのが一般的
実装コード例
Python
import pandas as pd
from scipy.stats import f_oneway
# 3群のデータを抽出
group1 = df[df['group'] == 'A']['value']
group2 = df[df['group'] == 'B']['value']
group3 = df[df['group'] == 'C']['value']
# 一元配置ANOVA
f_stat, p_val = f_oneway(group1, group2, group3)
print(f"F値 = {f_stat:.3f}, p値 = {p_val:.5f}")
if p_val < 0.05:
print("→ 少なくとも1つのグループに有意な平均差があります")
else:
print("→ 有意な差は確認できません(平均差なし)")
注意点・Tips
-
「正規性」と「等分散性」が前提となる
→ 正規性・等分散性を満たさない場合は非対応のANOVA(WelchのANOVA)やノンパラメトリック検定(Kruskal-Wallis)を検討 -
「どの群が違うか」はANOVA単体ではわからない:
→ 有意差が出た場合は「TukeyのHSD」など事後検定で確認する必要あり
必要に応じてBonferroni補正などを考慮
ケーススタディ
🔗ComingSoon
関連手法
- 前提条件に関連する手法
- 類似手法
- WelchのANOVA(等分散性が成り立たない場合に使用)
- Kruskal-Wallis(正規性が疑わしい場合のノンパラメトリックな代替手法)
- 関連手法
- Tukey HSD(事後の多重比較用手法)
- Bonferroni補正(多重比較時の第1種過誤の抑制)
Discussion