• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

ウィルコクソンの順位和検定

date: 2017-05-08 excerpt: ウィルコクソンの順位和検定について

tag: ウィルコクソンの順位和検定nonparametricノンパラメトリックstatistics


ウィルコクソンの順位和検定について

概要

  • ノンパラメトリック検定の一つ
  • 小さい順にランキングしていき、カテゴリごとの和を計算する
  • その和の数を取りうるパターンはいくつあるのか

詳細

データ\(X\)と\(Y\)がある時これらの要素を構成した集合\(XY\)を作成する
この\(XY\)に対してランクを取った集合\(R_{XY}\)を作成する
タイが発生したときはその中間点を取る
\(R_{XY}\)をそれぞれ\(R_{X}\)と\(R_{Y}\)に再度分ける
\(N_{X} < N_{Y}\)のとき

\[T=\sum_{i=1}^{N_{X}}R_{Xi}\]

\(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
"""

参考

  • ウィルコクソンの順位和検定


ウィルコクソンの順位和検定nonparametricノンパラメトリックstatistics Share Tweet