統計 16 · ノンパラメトリック検定 — 分布を仮定しない方法

Chapter 16

ノンパラメトリック検定 — 分布を仮定しない方法

この章がなぜ必要なのか——前提が崩れたときの受け皿.

ここまでの検定は「母集団が正規分布」を前提にしてきた。 だが実データはしばしば歪んでいる、外れ値がある、サンプルが少なくて CLT が効かない、 あるいはそもそも順序尺度しかない(満足度 5 段階など)。

こうしたときの道具がノンパラメトリック法である。 発想は 2 系統ある——順位に置き換える古典的な方法と、 計算機で分布を作る現代的な方法(並べ替え検定・ブートストラップ)。

後者は特に強力で、「理論式が存在しない統計量」でも検定と区間推定ができる。

この章で使う既出の用語(定義は各リンク先). 母集団・標本・統計量(01 章 2 節)、順序尺度(01 章 4 節)、中央値・トリム平均(02 章 2 節)、外れ値(03 章 1 節)、 スピアマン \(\rho\)・ケンドール \(\tau\)(03 章 5 節)、二項分布 \(\text{Bin}(n,p)\)(07 章 3 節)、 中心極限定理 CLT と二項分布の正規近似(09 章 3 節)、ブートストラップ(09 章 7 節)、 推定値(10 章 1 節)、信頼区間(11 章)、p 値・両側/片側・効果量・検出力(12 章)、 対応なし/対応ありの t 検定(13 章 3〜4 節)、一元配置・反復測定の分散分析 ANOVA(15 章 2 節, 7 節)。 「臨界値」は、その水準で棄却の境界になる統計量の値。本章に出てくる \(n\) の目安(10, 20, 30)はいずれも経験則で、近似の精度が実用上十分になる大きさとして慣用されている値である。

1. パラメトリックとノンパラメトリック

パラメトリックノンパラメトリック
仮定分布形(正規など)を仮定分布形を仮定しない
使う情報値そのもの順位・符号・並べ替え
検出力(仮定が正しいとき)高いやや低い(3〜5% 程度)
検出力(仮定が崩れたとき)大きく落ちる・誤り率が狂う安定
外れ値弱い強い

「ノンパラメトリックの方が安全だから常にそれを使えばよい」とはならない. 正規性がほぼ成り立つ状況では、パラメトリック法の方が検出力が高い。 また、順位に変換すると効果の大きさが元の単位(cm や円)で表現できなくなるという実務上の難点がある。 その代わりに使うのが、4 節 で述べる確率優越性のような単位のない効果量である。

判断の目安:

2. 符号検定 — 最も単純

対応のあるデータ(またはある値との比較)で、差の符号だけを見る。

\[ H_0: \text{差の中央値} = 0 \quad\Longleftrightarrow\quad P(d_i>0) = P(d_i<0) = \tfrac12 \]

(差 \(d_i=0\) のペアは除外し、以下 \(n\) は残った個数。中央値が 0 とは「正の差と負の差が同じ確率で出る」ことなので、分布の形は何も仮定していない。) 差が正の個数 \(S\) は、\(H_0\) のもとで各ペアが独立に確率 \(1/2\) で正になるので \(\text{Bin}(n, 0.5)\) に従う(07 章 3 節)。

例: 10 人中 8 人で「後 > 前」だった。

\[ p = 2\times P(X\ge 8) = 2\sum_{k=8}^{10}\binom{10}{k}(0.5)^{10}=2\times\frac{45+10+1}{1024}=0.109 \]

有意でない。

符号検定は情報を捨てすぎる. 「+0.1」も「+50」も同じ 1 票として扱う。 だから頑健だが検出力は低い。大きさの情報も使うのが次のウィルコクソン検定である。

3. ウィルコクソンの符号順位検定

対応ありデータ用。t 検定(対応あり)のノンパラ版。差の大きさ(の順位)も使うので、符号検定より検出力が高い。 \(H_0\) は「差の分布が 0 について対称」(正の差と負の差が、大きさの分布まで込みで同じように出る)。

手順

  1. 差 \(d_i\) を計算し、\(d_i=0\) は除外(以下 \(n\) は残った個数)
  2. \(\lvert d_i\rvert\) に順位をつける(同順位は平均順位)
  3. 正の差の順位和 \(W^+\)、負の差の順位和 \(W^-\) を求める
  4. \(W=\min(W^+,W^-)\) を統計量とする

\(H_0\) のもとでの期待値と分散:

\[ E[W^+]=\frac{n(n+1)}{4}, \qquad V[W^+]=\frac{n(n+1)(2n+1)}{24} \]
\[ z = \frac{W^+ - E[W^+]}{\sqrt{V[W^+]}} \quad (n\ge 20 \text{ で正規近似}) \]

導出: 順位 \(r\) の差が正なら 1、負なら 0 を \(I_r\) とすると \(W^+ = \sum_{r=1}^n r\,I_r\)。 \(H_0\)(対称)のもとでは各 \(I_r\) は独立に確率 \(1/2\) で 1 になる(絶対値の大きさと符号が無関係だから)ので、\(E[I_r]=1/2\)、\(V[I_r]=1/4\)。よって

\[ E[W^+] = \frac12\sum_{r=1}^n r = \frac12\cdot\frac{n(n+1)}{2} = \frac{n(n+1)}{4}, \qquad V[W^+] = \frac14\sum_{r=1}^n r^2 = \frac14\cdot\frac{n(n+1)(2n+1)}{6} = \frac{n(n+1)(2n+1)}{24} \]

∎ 正規近似は、\(W^+\) が独立な項の和なので CLT による。

例: 差の絶対値の順位が 1〜8 で、正の差が順位 2,4,5,6,7,8 に対応するなら \(W^+ = 32\)、\(W^-=1+3=4\)、\(W=4\)。

\(n\) が小さいときは正規近似でなく、\(H_0\) のもとで \(2^n\) 通りの符号の付け方がすべて等確率であることから \(W\) の分布を直接数える。 \(n=8\) では \(2^8=256\) 通り。正の順位の集合の和が 3 以下になるのは \(\emptyset,\{1\},\{2\},\{3\},\{1,2\}\) の 5 通り、負側も同じなので \(P(W\le 3) = 10/256 = 0.039 < 0.05\)。 和が 4 以下だと \(\{4\},\{1,3\}\) が加わって 7 通りずつ、\(P(W\le 4) = 14/256 = 0.055 > 0.05\)。 よって両側 5% の臨界値は 3(\(W\le 3\) なら棄却)で、上の例は \(4 > 3\) なので有意でない。

4. マン・ホイットニーの U 検定(ウィルコクソンの順位和検定)

独立 2 群用(サイズ \(n_1, n_2\))。t 検定(対応なし)のノンパラ版。

手順

  1. 2 群のデータを混ぜて小さい順に並べ、通し順位をつける
  2. 群 1 の順位和 \(R_1\) を求める
  3. \(U_1 = R_1 - \dfrac{n_1(n_1+1)}{2}\)、\(U_2 = n_1n_2-U_1\)
  4. \(U=\min(U_1,U_2)\)
\[ E[U_1]=\frac{n_1n_2}{2}, \qquad V[U_1]=\frac{n_1n_2(n_1+n_2+1)}{12} \quad (H_0 \text{ のもとで}) \]

\(U\) の直感的な意味

\[ U_1 = \#\{(i,j) : x_{1i} > x_{2j}\} \]

群 1 の値が群 2 の値より大きいペアの個数である。

手順の式と一致する理由: 群 1 の値 \(x_{1i}\) の通し順位は「1 + 自分より小さい群 1 の値の個数 + 自分より小さい群 2 の値の個数」。 群 1 の全員について足すと、前 2 項の合計は「群 1 だけで順位を付けたときの順位和」\(1+2+\cdots+n_1 = n_1(n_1+1)/2\) になり、最後の項の合計が「群 1 の値が群 2 の値より大きいペアの個数」になる。 よって \(R_1 = n_1(n_1+1)/2 + \#\{(i,j): x_{1i}>x_{2j}\}\)。∎

例: 群 1 = {8, 9, 12}、群 2 = {5, 7, 10}。混ぜて並べると 5, 7, 8, 9, 10, 12 で、群 1 の順位は 3, 4, 6、\(R_1 = 13\)、\(U_1 = 13 - 3\cdot 4/2 = 7\)。 ペアで数えても、9 ペアのうち群 1 が大きいのは (8,5), (8,7), (9,5), (9,7), (12,5), (12,7), (12,10) の 7 ペアで一致する。

期待値と分散の導出: ペア \((i,j)\) で群 1 が大きければ 1 の指示変数を \(I_{ij}\) とすると \(U_1 = \sum_{i,j} I_{ij}\)。 \(H_0\)(2 群が同じ分布)のもとで \(P(I_{ij}=1) = 1/2\) なので \(E[U_1] = n_1n_2/2\)。 分散は 06 章 5 節 の一般形で、\(V[I_{ij}] = 1/4\)、添字を 1 つ共有するペア(\(I_{ij}\) と \(I_{ij'}\))では「3 つの i.i.d. の値のうち特定の 1 つが最大になる確率は \(1/3\)」から \(E[I_{ij}I_{ij'}] = 1/3\)、\(\text{Cov} = 1/3-1/4 = 1/12\)、添字を共有しないペアは独立で共分散 0。 共有ペアは \(i\) 共有が \(n_1 n_2(n_2-1)\) 組、\(j\) 共有が \(n_1n_2(n_1-1)\) 組あるので

\[ V[U_1] = \frac{n_1n_2}{4} + \frac{n_1n_2(n_2-1) + n_1n_2(n_1-1)}{12} = \frac{n_1n_2(n_1+n_2+1)}{12} \]

∎ \(n_1, n_2\) が 10 程度以上なら \(z = (U_1 - E[U_1])/\sqrt{V[U_1]}\) を標準正規分布で評価する正規近似が使え、小さければ並べ替えを数え上げる。

\[ \frac{U_1}{n_1n_2} = P(X_1 > X_2) \text{ の推定値} \]

これを確率優越性 (probability of superiority) と呼ぶ。共通言語効果量 (common language effect size) は同じ量の別名で、「専門用語なしで言える効果量」という意味の呼び名である。

これは非常に解釈しやすい効果量である. 上の例なら \(7/9 \approx 0.78\)——「群 1 からランダムに 1 人、群 2 からランダムに 1 人選んだとき、 群 1 の方が大きい確率は約 0.78」——専門知識のない相手にも伝わる。 Cohen's d よりこちらの方が説明しやすい場面は多い。

何を検定しているのか(重要な注意)

マン・ホイットニー検定は「中央値の差」を検定しているとは限らない.

厳密には \(H_0: P(X_1>X_2)=1/2\)(分布が同一)を検定している。 2 群の分布の形が同じ(位置だけが違う)と仮定できるときにかぎり、 「中央値の差」の検定と解釈できる。

形が違う(片方だけ分散が大きいなど)場合、中央値が同じでも有意になりうる。 よく見る「中央値の検定」という説明は、この条件付きでのみ正しい。

5. クラスカル・ウォリス検定

\(k\) 群以上(\(k\ge 3\)、各群 \(n_i\) 個、合計 \(N=\sum n_i\))。一元配置分散分析のノンパラ版で、全データを混ぜて通し順位を付け、群ごとの順位和 \(R_i\) を比べる。

\[ H = \frac{12}{N(N+1)}\sum_{i=1}^k \frac{R_i^2}{n_i} - 3(N+1) \sim \chi^2_{k-1} \quad (H_0 \text{ のもとで、近似}) \]

式の意味: 順位に対して一元配置分散分析の群間平方和を計算し、順位全体の分散 \((N+1)(N-1)/12\)(1 から \(N\) の一様な整数の分散)で割ったものが \(H\) である。 群平均順位 \(\bar R_i = R_i/n_i\) の全体平均 \((N+1)/2\) からのずれの二乗和 \(\sum n_i(\bar R_i - \frac{N+1}{2})^2\) を展開すると上の式になる。\(k-1\) 個の独立な近似正規変数の二乗和なので χ² 近似が効く(14 章 1 節と同じ理屈)。

有意なら事後検定(ダン検定——群ごとの平均順位の差を U 検定と同様の正規近似で比べる方法——にホルム補正(17 章 2 節)を組み合わせるなど)で、どのペアが違うかを調べる。

6. 並べ替え検定 (permutation test)

考え方

\(H_0\) が「2 群に差がない」なら、どのデータがどちらの群に属するかはラベルの付け替えにすぎない。 ならば、ラベルをランダムに付け替えて統計量を計算し直せば、 \(H_0\) のもとでの分布がそのまま作れる。

手順

  1. 実際のデータで統計量 \(T_{\text{obs}}\)(例: 平均の差)を計算
  2. 全データを混ぜ、ランダムに \(n_1\) 個と \(n_2\) 個に分け直す
  3. その分け方で統計量 \(T^*\) を計算
  4. 2〜3 を \(B\) 回(1 万回など)繰り返す
  5. p 値 \(= \dfrac{\#\{\lvert T^*\rvert \ge \lvert T_{\text{obs}}\rvert\} + 1}{B+1}\)

これは「厳密検定」である. 近似ではなく、\(H_0\) のもとの分布を直接構成している。 全パターンを尽くせば(\(\binom{n_1+n_2}{n_1}\) 通り)完全に正確な p 値になる。 現実には多すぎるのでランダムサンプリングするが、\(B\) を増やせばいくらでも精度が上がる。

分子・分母に +1 するのは、観測値自身も 1 つの並べ替えとして数えるため。 これにより p 値が 0 にならず、厳密性が保たれる。

最大の利点

どんな統計量でも使える。

平均の差、中央値の差、トリム平均の差、分散比、相関係数、 さらには「上位 10% の平均の差」のような独自指標でも、 理論分布を導く必要なく検定できる。

A/B テストの実務で特に有用. 「コンバージョン率」だけでなく 「1 人あたり売上」のような裾の重い指標では t 検定の前提が怪しい。 並べ替え検定なら分布の形を気にせず正しい p 値が得られる。

7. ブートストラップ

手順(09 章 7 節の再掲と拡張)

  1. 手元の \(n\) 個から復元抽出で \(n\) 個選ぶ
  2. 統計量 \(\hat\theta^*\) を計算
  3. 1〜2 を \(B\) 回繰り返す

信頼区間の作り方

方法やり方特徴
パーセンタイル法\(\hat\theta^*\) の 2.5% 点と 97.5% 点最も簡単
基本ブートストラップ\([2\hat\theta-\theta^*_{97.5},\ 2\hat\theta-\theta^*_{2.5}]\)バイアスを反転補正
BCa 法バイアスと歪度を補正最も精度が良い。推奨
標準誤差法\(\hat\theta\pm z\widehat{SE}_{\text{boot}}\)分布が対称なとき

(\(\theta^*_{q}\) はブートストラップ分布の \(q\)% 点、\(z\) は標準正規分布の上側 2.5% 点 1.96。)

基本ブートストラップの理屈: 「推定値と真値のずれ \(\hat\theta-\theta\)」の分布を、「ブートストラップ値と推定値のずれ \(\theta^*-\hat\theta\)」の分布で近似する。 すると \(P(\theta^*_{2.5}-\hat\theta \le \hat\theta-\theta \le \theta^*_{97.5}-\hat\theta)\approx 0.95\) で、中の不等式を \(\theta\) について解くと \(2\hat\theta-\theta^*_{97.5}\le\theta\le 2\hat\theta-\theta^*_{2.5}\)。 ブートストラップ分布が \(\hat\theta\) より上に偏っていれば「推定値は真値より上に出やすい」と読んで区間を下へずらす——これが「反転」の意味である。

BCa 法 (bias-corrected and accelerated) は、パーセンタイル法で使う 2.5% と 97.5% という位置を、ブートストラップ分布の偏り \(z_0 = \Phi^{-1}(\#\{\theta^*<\hat\theta\}/B)\) と、 統計量の標準誤差が \(\theta\) とともに変わる度合い \(a\)(1 個抜きの推定値から計算する)に応じて \(\alpha_1 = \Phi\left(z_0 + \dfrac{z_0 + z_{\alpha/2}}{1-a(z_0+z_{\alpha/2})}\right)\) などにずらす方法である(\(z_0=a=0\) ならパーセンタイル法に戻る)。

例: 中央値の 95% 信頼区間。理論式は複雑だが、ブートストラップなら数行で出る。

import numpy as np
rng = np.random.default_rng(0)
def boot_ci(x, stat=np.median, B=10000, alpha=0.05):
    n = len(x)
    est = np.array([stat(rng.choice(x, n, replace=True)) for _ in range(B)])
    return np.quantile(est, [alpha/2, 1-alpha/2])

並べ替え検定との違い

並べ替え検定ブートストラップ
抽出非復元(混ぜた \(n_1+n_2\) 個から \(n_1\) 個を戻さずに選んで群 1 とする=ラベルの入れ替え)復元
主目的検定(p 値)区間推定(SE, CI)
仮定する世界\(H_0\) が真の世界標本が母集団を代表する世界

ブートストラップが失敗する場合

万能ではない. 次の場合は注意が必要である。

「計算機に任せれば何でも解決」ではなく、 標本が母集団の縮図であるという前提に依存していることを忘れないこと。

8. 順位相関の検定

03 章のスピアマン \(\rho\)、ケンドール \(\tau\) の有意性検定(\(H_0\): 相関なし)。

スピアマン \(\rho\) は順位に対するピアソン相関なので、ピアソル相関の検定と同じ形の統計量を使う。

\[ t = \rho\sqrt{\frac{n-2}{1-\rho^2}} \sim t_{n-2} \quad (n\ge 10 \text{ で近似}) \]

ケンドール \(\tau\) には別の正規近似を使う(\(H_0\) のもとで \(E[\tau]=0\)、\(V[\tau] = \dfrac{2(2n+5)}{9n(n-1)}\))。

\[ z = \frac{\tau}{\sqrt{2(2n+5)/(9n(n-1))}} \approx N(0,1) \]

\(n\) が小さいときは、順位の並べ替えによる厳密検定を使う。

9. 手法の対応表

パラメトリックノンパラメトリック(順位)計算機ベース
1 標本 t 検定符号検定、ウィルコクソン符号順位ブートストラップ CI
対応あり t 検定ウィルコクソン符号順位並べ替え(ペア内で符号を反転)
対応なし t 検定マン・ホイットニー U並べ替え(ラベル入替)
一元配置 ANOVAクラスカル・ウォリス並べ替え
反復測定 ANOVAフリードマン検定(各個体の中で条件に順位を付け、条件ごとの順位和を比べる。反復測定 ANOVA の順位版)並べ替え
ピアソン相関スピアマン、ケンドール並べ替え

10. どれを選ぶか — 実務の指針

データを見る(ヒストグラム・箱ひげ図・Q-Qプロット)
    │
    ├─ n が大きく(≥30)、極端な外れ値なし
    │      → パラメトリック(t 検定・ANOVA)でよい
    │
    ├─ n が小さい / 強い歪み / 外れ値あり
    │      ├─ 標準的な比較 → 順位検定(U 検定など)
    │      └─ 特殊な統計量 → 並べ替え検定
    │
    ├─ 順序尺度しかない
    │      → 順位検定
    │
    └─ 統計量が複雑で理論式がない
           → ブートストラップ / 並べ替え検定

最後にもう一度: 手法を選ぶ前に必ずデータを見ること. 検定手法の選択に悩むより、 「なぜ外れ値があるのか」「なぜ 2 山なのか」を調べる方が、 実務ではるかに価値のある発見につながることが多い。

11. まとめ