ウィルコクソンの順位和検定
date: 2017-05-08 excerpt: ウィルコクソンの順位和検定について
ウィルコクソンの順位和検定について
概要
- ノンパラメトリック検定の一つ
- 小さい順にランキングしていき、カテゴリごとの和を計算する
- その和の数を取りうるパターンはいくつあるのか
詳細
データ\(X\)と\(Y\)がある時これらの要素を構成した集合\(XY\)を作成する
この\(XY\)に対してランクを取った集合\(R_{XY}\)を作成する
タイが発生したときはその中間点を取る
\(R_{XY}\)をそれぞれ\(R_{X}\)と\(R_{Y}\)に再度分ける
\(N_{X} < N_{Y}\)のとき
\(T\)が統計量になる
すべてのパターンを計算しても大変なので、表も存在しており、それを参照して解くこともできる
具体的な例

これをランク化して和を取る

(1,2,3)
は組み合わせ1つ, (1,2,4)
は組み合わせ1つなので、合計2
すべての通りは6C3 = 20
なので、p = 2/20 = 0.1
平均と分散
平均
\[\mu = \frac{n(n+1)}{4}\]分散
\[\sigma^2 = \frac{n(n+1)(2n+1)}{24}\]pythonでの例
import numpy as np
from scipy.stats import wilcoxon
# 例: 複数のデータセットにおける正解ラベルの順位
observed_ranks = np.array([2, 3, 1, 4, 3, 2, 2, 3, 1, 2]) # サンプルデータ
# 1 ~ 10のランクで中央値が5.5であると仮定した場合、各順位から5.5を引く
data = observed_ranks - 5.5
# ウィルコクソンの符号順位検定(中央値が0より小さいかどうかを片側検定)
statistic, p_value = wilcoxon(data, alternative='less')
print(f"統計量: {statistic}, p値: {p_value}")
"""
統計量: 0.0, p値: 0.0009765625
"""