はじめに
統計解析において「平均値の差を比較する」場面は非常に多くあります。通常は t検定 が用いられますが、t検定には「データが正規分布に従う」という前提があります。現実のデータは外れ値を含んだり、分布が歪んでいたりすることが多く、この前提が満たされない場合、t検定の結果は信頼できなくなります。そこで登場するのが ノンパラメトリック検定 です。分布の形に強い仮定を置かず、順位情報(ランク)を用いて差を検出する手法であり、その代表格が ウィルコクソン検定(Wilcoxon test) です。
今回はノンパラメトリック検定のウィルコクソン検定について数理的な導出とR言語での具体的な実装例を解説していきます。
t検定についての数理的導入は下記でまとめておりますので、是非ご一読ください。

ウィルコクソン検定とは
ウィルコクソン検定には大きく2種類あります。
- ウィルコクソンの符号付順位検定(Wilcoxon signed-rank test)
→ 対応のある2群(例:同一被験者の投与前後)を比較する。 - ウィルコクソンの順位和検定(Wilcoxon rank-sum test, Mann–Whitney U testと同等)
→ 独立した2群(例:新薬群とプラセボ群)を比較する。
いずれも「平均値」ではなく「中央値の差」を検定するイメージであり、外れ値や非正規性に強いのが特徴です。
ウィルコクソン検定の数理的導入
以下のような場合を考えていきます。
\(X_1, … X_m ;\) すべて独立 累積分布関数\(~F(x)\)
\(Y_1, … Y_n ;\) すべて独立 累積分布関数\(~G(y)\)
定義(累積分布関数;分布関数)
Xを実数値確率変数とする。このとき,F(x)=P(X≤x)=P(X∈(−∞,x])F(x)=P(X≤x)=P(X∈(−∞,x])
を累積分布関数 (cumulative distribution function; CDF) または単に分布関数 (distribution function) という。

このときX、Yの確率密度関数の分布はわからないものとします。
以下のような仮説を立てていきます。
\[H_{0}: \Delta = 0 \leftrightarrow H_{0}: F(x) = G(x)\]
\[H_{1}: \Delta \neq 0\]
考え方として、2群のデータをまとめて並べ、全体で順位をつけていくことをしていきます。

\(X_1, … X_m\)の順位を\(R_1, … ,R_m\),\(Y_1, … ,Y_n\)の順位を\(S_1, … S_n\)とする。この時、\(X_1, … X_m\)の順位和は下記のようになり、これをウィルコクソンの統計量といいます。
\[W = R_1 + \cdots + R_m\]
ここから\(H_{0}\)の下でのWの期待値と分散を求めていく。
\(R_{i}\)を\(X_{i} (i=1,…,m)\)の順位, \(N = m+n\)とすると、
$$
\begin{eqnarray}
E(W) &=& E(R_1) + \cdots + E(E_m)\\
E(R_{i})&=& 1 \times P(R_i = 1) + 2 \times P(R_i = 2) + \cdots + N \times P(R_i = N)\\
\end{eqnarray}
$$
ここで、\(H_{0}\)の下では\(P(R_i = M) = 1/N (M = 1,…,N)\)となります。これは、帰無仮説の下では分布が一緒であることを仮定しているため、どの順位になる確率も等しくなるためです。
したがって、
$$
\begin{eqnarray}
E(R_{i}) &=& (1 + 2 + \cdots + N) \frac{1}{N}\\
&=& \frac{N(N+1)}{2}\frac{1}{N}\\
&=& \frac{N+1}{2}\\
\end{eqnarray}
$$
よって、\(H_{0}\)の下では
$$
\begin{eqnarray}
E(W) &=& \frac{N+1}{2} + \cdots + \frac{N+1}{2}\\
&=& \frac{m(N+1)}{2}\\
\end{eqnarray}
$$
次に分散を求めていく。
$$
\begin{eqnarray}
V(W) &=& E[(W – E(W))^{2}]\\
&=& E(W^{2}) – (E(W))^{2}\\
&=& E(W^{2}) – (\frac{m(N + 1)}{2})^{2}
\end{eqnarray}
$$
ここで右辺第一項の\(E(W^{2})\)について、
$$
\begin{eqnarray}
E(W^{2}) &=& E[(R_1 + R_2 + \cdots + R_{m})^{2}]\\
&=& E[\sum_{i=1}^{m}R_{i}^{2} + \sum_{i=1}^{n}\sum_{\substack{j=1\\i \neq j}}^{n}R_i R_j]\\
&=& \sum_{i=1}^{m}E(R_{i}^{2}) + \sum\sum_{i \neq j}E(R_i R_j)\\
\end{eqnarray}
$$
上記で出てきた右辺の第一項と第二項を求めていく。
$$
\begin{eqnarray}
E(R_{i}^{2}) &=& 1^{2}P(R_i = 1) + 2^{2}P(R_i = 2) + \cdots + N^{2}P(R_i = N)\\
&=& \frac{1}{N}(1^2 + 2^2 + \cdots + N^2)\\
&=& \frac{1}{N}\frac{N(N+1)(2N+1)}{6}\\
&=& \frac{(N+1)(2N+1)}{6}
\end{eqnarray}
$$
また、
$$
\begin{eqnarray}
E(R_{i}R_{j}) &=& \sum_{k=1}^{N}\sum_{\substack{l=1\\k \neq l}}^{N}kl \times P(R_{i} = k, R_{j} = l)
\end{eqnarray}
$$
\(H_0\)の下では\(P(R_{i} = k, R_{j} = l\) = \frac{1}{N}\frac{1}{N-1}となるから、
$$
\begin{eqnarray}
E(R_{i}R_{j}) &=& \frac{1}{N}\frac{1}{N-1}\sum_{k=1}^{N}\sum_{\substack{l=1\\k \neq l}}^{N}kl\\
&=& \frac{1}{N(N-1)}\sum_{k=1}^{N}[(1 + 2 + \cdots + N)^2 – (1^2 + 2^2 + \cdots + N^2)]\\
&=& \frac{1}{N(N-1)}\sum_{k=1}^{N}[(\frac{N(N + 1)}{2})^2 – (\frac{N(N +1)(2N +1)}{6})]
&=& \frac{(N + 1)(3N +2)}{12}
\end{eqnarray}
$$
したがって、
$$
\begin{eqnarray}
V(W) &=& \frac{m(N+1)(2N+1)}{6} + \frac{m(m-1)(N + 1)(3N +2)}{12} + (\frac{m(N + 1)}{2})^{2}\\
&=& \frac{m(N + 1)(N – m)}{12}\\
&=& \frac{mn(N + 1)}{12}
\end{eqnarray}
$$
Wの期待値、分散を求めることができたので、中心極限定理より、m,nが十分大きいときに、\(H_0\)の下でWは近似的に正規分布 \(N (\frac{m(N+1)}{2} ,\frac{mn(N + 1)}{12})\)に従う。
中心極限定理とは
ある集団からn個の標本をとったとき、nを大きくすれば、標本の平均値は平均 \(\mu\)(元の集団の平均値)、分散\(\frac{\sigma^2}{n}\)(元の集団の分散\(\sigma^2\)を標本の数nで割った値)の正規分布に従う
これよりウィルコクソンの検定統計量は下記のようになる。
\[Z = \frac{W-E(W)}{\sqrt{V(W)}}\]
R言語での実装例
drug <- c(8, 9, 6, 7, 10, 9, 8)
placebo <- c(5, 4, 6, 5, 7, 6, 5)
wilcox.test(drug, placebo, paired = FALSE)
Wilcoxon rank sum test with continuity correction
W = 41, p-value = 0.015
解釈として、新薬群の効果はプラセボ群より有意に大きい。
実務での注意点
- 中央値の差を検定する:平均値ではなく中央値に基づくため、解釈を誤らないこと。
- 分布の形が異なる場合:単なる中央値の差ではなく、分布全体の違いを検出している可能性がある。
- サンプルサイズ:小標本では正確確率を用い、大標本では正規近似を用いる必要がある。Rは自動で切り替える。
- 外れ値に強い:順位を使うため、極端な値の影響を受けにくい。
まとめ
今回はウィルコクソン検定について数理的導入とR言語での実装を交えて解説していきました。ウィルコクソン検定は、正規性を仮定できない場合の強力な代替手法です。Rでは wilcox.test()
関数で簡単に実行可能であり、実務では「中央値の差を検定している」ことを意識し、結果を正しく解釈することが重要となります。ポイントとしてt検定が「平均値の差」を評価するのに対し、ウィルコクソン検定は「順位の偏り」を評価します。これにより、外れ値や非正規分布に強く、現実のデータ解析において非常に有用です。