「サンプルサイズが小さく、正規性の確認が困難である」
「外れ値の影響を排除したいが、順位変換による情報の欠落も避けたい」
医学研究や臨床統計の現場において、このようなジレンマに直面することは少なくない。標準的な「t検定」はデータが特定の分布に従うことを前提としているが、現実のデータがその理想を満たすことは稀である。
そこで有力な選択肢となるのが「並べ替え検定(Permutation Test)」だ。本手法は、数式上の仮定に依存せず、目の前のデータを再配置(シャッフル)することで計算を行う。本記事では、その論理的背景からRでの具体的な実装方法までを解説する。
並べ替え検定の原理:理屈をごく簡単に
並べ替え検定の本質は、「もし群間に差がない(帰無仮説が正しい)のであれば、グループのラベルを入れ替えても統計量は変わらないはずだ」という直感的な思考にある。
解析のプロセス
- 実測値の算出:現在のデータから、群間の平均値差などを算出する。
- ラベルの再配置:グループの枠組みを一度解体し、ランダムに割り振り直す。この操作を数万回繰り返す。
- P値の決定:数万回の試行のうち、「実測値以上の差」が生じた割合を計算する。これが5%以下であれば、偶然では説明しにくい「有意な差」と結論付ける。
教科書的な理論分布にデータを当てはめるのではなく、「手元のデータから独自の分布を生成する」。この柔軟性こそが最大の特徴である。
どんなときに採用すべきか:手法の使い分け
「t検定」や「ウィルコクソン検定」との比較において、並べ替え検定の位置付けは以下の通りである。
| 解析シーン | 推奨手法 | 採択の理由 |
| 大標本かつ正規分布が明らかな場合 | t検定 | 計算効率が高く、普遍的な解釈が可能。 |
| 外れ値が顕著で、順位情報を重視する場合 | ウィルコクソン検定 | 異常値に左右されず、頑健な比較ができる。 |
| 小標本で分布が不明だが、生の値で評価したい | 並べ替え検定 | 前提条件を必要とせず、生データの情報を最大限活用できる。 |
特に、症例数が極めて少ない研究(N < 10など)においては、漸近理論に基づくP値よりも、並べ替えによる「正確検定」の結果がより誠実な指標となる。
Rによる実行手順(coin パッケージ)
R言語の coin パッケージは、一貫した文法で多様な並べ替え検定を実行できる優れたツールである。
パッケージの準備
install.packages("coin") # インストールしたことなければインストール
library(coin) # 使用する前に一度だけ、呼び出しのlibrary関数を実行
1. 連続量の比較(平均値の差に着目)
t検定の代替として、生の値の差を評価する。
# approximateはモンテカルロ法による試行を意味する
oneway_test(値 ~ 群, data = MyData, distribution = approximate(nresample = 10000))
2. 連続量の比較(順位に基づく正確検定)
ウィルコクソン検定を「正確検定」として実行する。
# distribution = "exact" は全パターンの網羅(小標本時に使用)
wilcox_test(値 ~ 群, data = MyData, distribution = "exact")
3. カテゴリデータの比較(独立性の検定)
カイ二乗検定やフィッシャーの正確検定の拡張として機能する。
# カテゴリ変数間の関連性を評価
chisq_test(変数A ~ 変数B, data = MyData, distribution = approximate(nresample = 10000))
まとめ
並べ替え検定は、現代の計算機能力を背景とした、極めて合理的かつ堅実な統計手法である。
- データの分布(正規性)に関する制約を受けない。
- 小標本であっても、理論値ではない「生の確率(P値)」を算出できる。
- Rの
coinパッケージを利用することで、実装のハードルは極めて低い。
標準的な検定手法の前提条件に疑問を感じた際、並べ替え検定は解析の妥当性を担保する強力なエビデンスとなるだろう。




コメント