概要

2つの母集団の中央値が等しいかどうかを調べる検定。

  • 帰無仮説 $H_0$:2つの母集団の中央値が等しい
  • 対立仮説 $H_1$:2つの母集団の中央値は異なる

母集団の分布に何の仮定も置かないノンパラメトリック検定。
t 検定(cf. 平均値の検定)と異なり、母集団に正規分布を仮定できない場合に用いる。

  • 母集団が正規分布でない場合、t 検定よりもはるかに有意差を検出しやすい
  • 母集団が正規分布の場合、t 検定ほどには有意差の検出力が高くない

理論

【NOTE】ウィルコクソンの順位和検定の考え方

  • 2つの母集団からの標本を混ぜて、小さいものから並べてみる
  • このとき、
    • 母集団の中央値が等しい時、2集団からの標本は均等に入り混じりそう
    • 母集団の中央値が異なる時、2集団からの標本は左右どちらかに偏って並びそう

比較したい2つの母集団のうち、標本数が少ない方を $A={a_1, \cdots, a_{N_A}}$ 、多い方を $B={b_1, \cdots, b_{N_B}}$ とする($N_A \le N_B$)。

標本の順位付け

これらの標本を混ぜ合わせた $N_A+N_B$ 個の標本を昇順(降順でも可)に並べ、1位から $N_A+N_B$ 位まで順位 $r(a_1),\cdots,r(a_{N_A}),r(b_1),\cdots,r(b_{N_B})$ をつける。
※ 同順が複数あった場合、全てに順位の平均値をつける。例えば、4つの観測値が5位タイであった場合、5〜8位の平均値である6.5を順位とする。

検定統計量(順位和)の計算

標本数が少ない方の母集団 $A$ の順位を足し合わせた順位和 $R_A$ を計算する:

\[R_A = \sum_{k=1}^{N_A} r(a_k)\]

これがウィルコクソンの順位和検定の検定統計量となる。

検定統計量の棄却域の計算

$A, B$ の標本を混ぜ合わせて小さい順に並べる場合を考える。
この時、$a_1, \cdots, a_{N_A}, b_1, \cdots, b_{N_B}$ の並べ方は全部で $(N_A+N_B)!$ 通りであり、もし $A, B$ が同じ分布であれば、これらの並び方の実現確率は全て等しい。
よって、全ての並べ方について $A$ の順位和 $R_A = r(a_1) + \cdots + r(a_{N_A})$ を計算して(相対)度数分布表を描けば、$R_A$ の確率分布関数になる。

ここから、例として $N_A = 3, N_B=5$ の場合を考える。

\[\begin{eqnarray} R_A(a_1, a_2, a_3, b_1, b_2, b_3, b_4, b_5) &=& 1 + 2 + 3 &=& 6 \\ R_A(a_2, a_3, a_1, b_1, b_2, b_3, b_4, b_5) &=& 3 + 1 + 2 &=& 6 \\ R_A(a_3, a_1, a_2, b_1, b_2, b_3, b_4, b_5) &=& 2 + 3 + 1 &=& 6 \\ R_A(a_3, a_2, a_1, b_1, b_2, b_3, b_4, b_5) &=& 3 + 2 + 1 &=& 6 \\ R_A(a_2, a_1, a_3, b_1, b_2, b_3, b_4, b_5) &=& 2 + 1 + 3 &=& 6 \\ R_A(a_1, a_3, a_2, b_1, b_2, b_3, b_4, b_5) &=& 1 + 3 + 2 &=& 6 \\ R_A(a_1, a_2, b_1, a_3, b_2, b_3, b_4, b_5) &=& 1 + 2 + 4 &=& 7 \\ R_A(a_2, a_3, b_1, a_1, b_2, b_3, b_4, b_5) &=& 4 + 1 + 2 &=& 7 \\ \vdots \\ R_A(b_1, b_2, b_3, b_4, b_5, a_1, a_2, a_3) &=& 6 + 7 + 8 &=& 21 \end{eqnarray}\]

上の計算を見ても明らかな通り、$R_A$ の値を計算する上で、$a_1, a_2, a_3$ や $b_1, b_2, b_3, b_4, b_5$ を区別して並び替えても、$R_A$ の値は変化しない。
そこで、$R_A$ の計算回数を減らすため、$(a_1, a_2, a_3, b_1, b_2, b_3, b_4, b_5)$ ではなく $(a,a,a,b,b,b,b,b)$ の全てのユニークな並び順を考え、$R_A$ を計算する。

\[\begin{eqnarray} R_A(a,a,a,b,b,b,b,b) &=& 1 + 2 + 3 &=& 6 \\ R_A(a,a,b,a,b,b,b,b) &=& 1 + 2 + 4 &=& 7 \\ R_A(a,a,b,b,a,b,b,b) &=& 1 + 2 + 5 &=& 8 \\ R_A(a,a,b,b,b,a,b,b) &=& 1 + 2 + 6 &=& 9 \\ R_A(a,a,b,b,b,b,a,b) &=& 1 + 2 + 7 &=& 10 \\ R_A(a,a,b,b,b,b,b,a) &=& 1 + 2 + 8 &=& 11 \\ R_A(a,b,a,a,b,b,b,b) &=& 1 + 3 + 4 &=& 8 \\ \vdots \\ R_A(b,b,b,b,b,a,a,a) &=& 6 + 7 + 8 &=& 21 \end{eqnarray}\]

これらユニークな並び順の度数は、それぞれについて $a_1, a_2, a_3$ の並べ替え、$b_1, b_2, b_3, b_4, b_5$ の並べ替えの自由度があるので、$N_A!N_B!=3!5!=720$通り($a_1,a_2,a_3$を区別し、$b_1,b_2,b_3,b_4,b_5$も区別する場合の数)。
しかし、ウィルコクソンの順位和検定の棄却域を考える上で重要なのは相対度数 なので、これらの並び順の度数は $N_A!N_B!$ ではなく1として考えて良い。

以上の議論により、$(a_1, a_2, a_3, b_1, b_2, b_3, b_4, b_5)$ の並び順 $(N_A+N_B)!=40320$ 通りではなく、$(a,a,a,b,b,b,b,b)$ の並び順 $(N_A+N_B)!/(N_A!N_B!) = 56$ 通りを調べて度数分布表を作れば良い。

wilcoxon

累積分布関数のグラフ(青線・オレンジ線)より、$R_A \le 6$ あるいは $21 \le R_A$ である確率は5%を下回るが、1%よりは大きい。
したがって、$R_A \le 6$ あるいは $21 \le R_A$ のとき、有意水準5%においては帰無仮説 $H_0$ は棄却され、有意水準1%においては帰無仮説 $H_0$ は棄却されない。

以上の計算を色々な $(N_A, N_B)$ の組に対して行えば、ウィルコクソンの順位和検定の棄却域の境界 $(R_{A,\mathrm{low}}, R_{A,\mathrm{up}})$ のテーブルを得る:

$R_{A,\mathrm{low}}, R_{A,\mathrm{up}}$
$(\alpha=0.05)$
$N_B=4$ $N_B=5$ $N_B=6$ $N_B=7$ $N_B=8$ $N_B=9$ $N_B=10$ $N_B=11$ $N_B=12$ $N_B=13$ $N_B=14$ $N_B=15$
$N_A=2$ - - - - 3,19 3,21 3,23 3,25 4,26 4,28 4,30 4,32
$N_A=3$ - 6,21 7,23 7,26 8,28 8,31 9,33 9,36 10,38 10,41 11,43 11,46
$N_A=4$ 10,26 11,29 12,32 13,35 14,38 14,42 15,45 16,48 17,51 18,54 19,57 20,60
$N_A=5$ - 17,38 18,42 20,45 21,49 22,53 23,57 24,61 26,64 27,68 28,72 29,76
$N_A=6$ - - 26,52 27,57 29,61 31,65 32,70 34,74 35,79 37,83 38,88 40,92
$N_A=7$ - - - 36,69 38,74 40,79 42,84 44,89 46,94 48,99 50,104 52,109
$N_A=8$ - - - - 49,87 51,93 53,99 55,105 58,110 60,116 62,122 65,127
$N_A=9$ - - - - - 62,109 65,115 68,121 71,127 73,134 76,140 79,146
$N_A=10$ - - - - - - 78,132 81,139 84,146 88,152 91,159 94,166
$R_{A,\mathrm{low}}, R_{A,\mathrm{up}}$
$(\alpha=0.01)$
$N_B=4$ $N_B=5$ $N_B=6$ $N_B=7$ $N_B=8$ $N_B=9$ $N_B=10$ $N_B=11$ $N_B=12$ $N_B=13$ $N_B=14$ $N_B=15$
$N_A=2$ - - - - - - - - - - - -
$N_A=3$ - - - - - 6,33 6,36 6,39 7,41 7,44 7,47 8,49
$N_A=4$ - - 10,34 10,38 11,41 11,45 12,48 12,52 13,55 13,59 14,62 15,65
$N_A=5$ - 15,40 16,44 16,49 17,53 18,57 19,61 20,65 21,69 22,73 22,78 23,82
$N_A=6$ - - 23,55 24,60 25,65 26,70 27,75 28,80 30,84 31,89 32,94 33,99
$N_A=7$ - - - 32,73 34,78 35,84 37,89 38,95 40,100 41,106 43,111 44,117
$N_A=8$ - - - - 43,93 45,99 47,105 49,111 51,117 53,123 54,130 56,136
$N_A=9$ - - - - - 56,115 58,122 61,128 63,135 65,142 67,149 69,156
$N_A=10$ - - - - - - 71,139 73,147 76,154 79,161 81,169 84,176

度数分布表の作成に用いたコード:

色々な $N_A, N_B$ に対する棄却域の計算に用いたコード:

python の statsmodels ライブラリを用いて検定: