🔍
Anderson-Darling(アンダーソン・ダーリング)検定|正規性検定
概要
データが正規分布に従っているかどうかを検定する方法
主な用途
パターン | 説明 | 実務ユースケース |
---|---|---|
正規性の事前確認 | t検定などパラメトリック手法の前提を確認 | 施策前後の効果検証における差分の正規性チェック |
単変量の分布検定 | 1変量の数値データの正規性を評価 | CV率、売上などの分布チェック |
データ要件
- 従属変数:数値型(例:差分、CV率、売上)
- 独立変数:存在しない ※比較対象があるわけではなく、1つのデータ分布に使用されるため
- 前提条件:
特になし(データが連続値であれば使用可)
※標本サイズの制限なし。特に裾(両端)のズレに敏感で精度が高い
理論
データが正規分布に従うかを検定
- 帰無仮説:データは正規分布に従う
- 対立仮説:正規分布に従わない(両側検定) ※片側検定は存在しない
【検定の手順】
-
データを昇順に並べる
-
データを標準化
データを標本平均 と標準偏差\bar{x} で標準化し、標準正規分布s に当てはめるN(0,1)
-
理論分布(標準正規分布)の累積分布関数(CDF)を計算
並べたデータ に対して、それぞれの 正規分布の累積確率x_{(i)} を求めるF(x_{(i)}) -
統計量
の算出A^2
-
:標本サイズn -
:理論分布(多くの場合、標準正規分布)の累積分布関数(CDF)F(x) -
:昇順に並べたデータx_{(i)}
は正規分布との整合度を示す数値で、特にデータの両端(裾)に重みを置いて評価。 A^2
0に近いほど正規分布に近いと判断される(=Shapiro-Wilk検定と逆)
-
補正を加えた統計量
の算出A^{2}
標本サイズに応じて、以下のように補正:
補正により、小さい標本サイズでも適切な検定が行いやすくなる
-
有意水準に対応した臨界値との比較(p値の代替)
臨界値(例:5%水準の値) → 正規性を棄却A^{2*} >
臨界値 → 正規性を棄却できないA^{2*} \leq
scipy.stats.anderson
ライブラリでは、p値の算出は容易されておらず、
あらかじめ用意された 有意水準ごとの臨界値 とを比較 A^2
実装コード例
Python
from scipy.stats import anderson
# 差分データ
diff = df['before'] - df['after']
# Anderson-Darling検定 ※p値は出ない
result = anderson(diff, dist='norm')
print(f"AD検定統計量 = {result.statistic:.3f}")
for cv, sig in zip(result.critical_values, result.significance_level):
print(f"有意水準 {sig}%:臨界値 = {cv:.3f}")
# 評価(5%水準)
if result.statistic < result.critical_values[2]: # 通常、5%水準はindex=2
print("→ 差分データは正規分布に従うとみなせません。")
else:
print("→ 差分データは正規分布に従うとみなせます。")
補足:
dist
パラメータの指定について
dist='norm'
:正規分布との比較(デフォルト)
dist='expon'
:指数分布との比較
dist='logistic'
:ロジスティック分布との比較
注意点・Tips
-
裾(両端)のズレに非常に敏感:Shapiroよりも厳しい判定になることも
→ 他正規性手法(Shapiro-WilkやK-S検定)との併用を推奨 - p値が出ない:統計量と臨界値を比較して判断
- サンプル数が多くても使用可能(Shapiroのようなn上限なし)
- 正規分布以外も検定可能(指数、ロジスティックなど)
- 可視化との併用が有効(Q-Qプロット、ヒストグラムなど)
ケーススタディ
関連手法
- 前提条件に関連する手法
- Q-Qプロット(視覚的な正規性チェック)
- 類似手法
- Shapiro-Wilk検定(小規模向けで強力)
- Kolmogorov-Smirnov検定(最大のズレを評価)
- 関連手法
Discussion