統計学第９回
「２群の差に関するノンパラメトリックな検定」

中澤 港

http://phi.ypu.jp/stat.html

<minato@ypu.jp>

ノンパラメトリックな検定とは？

パラメータとは母集団の分布を示す値（母数）である。これまで説明した検定の多く（t検定，F検定等）は，母数に関して何らかの仮定を置いていた。

フィッシャーの正確な確率など，母数を仮定しない検定をノンパラメトリックな検定という。

２群の差に関するノンパラメトリックな検定の場合，母数を仮定しないといっても，母集団の分布が連続であるとは仮定する。理想的には分布の形が同じで位置だけがずれている「ズレのモデル」が成り立つときに，その差を検出するための方法である。

２群の差に関するノンパラメトリックな検定としては，Wilcoxonの順位和検定（またはMann-WhitneyのU検定。両者は検定に使う統計量が若干違うが本質的に同じもの）と符号付き順位和検定が代表的。前者は２群間に対応がない場合，後者は対応がある場合に用いる。

Wilcoxonの順位和検定
(Rank Sum Test)

群Xのデータ数m，群Yのデータ数n，m+n=Nとする。

２群を混ぜて小さい方から順に順位をつけ（同順位の場合は平均順位をつける），片方の群について，順位を合計する。この値をRとすると，
{|R-E(R)|-1/2}/√var(R)が標準正規分布に近似的に従うことを使って検定ができる。

正確な確率は，ありうるすべての順位の組み合わせのうち，RよりもE(R)から遠い組み合わせになる割合（両側検定なら両方の群について計算して確率を合計する）として得られる

但し，
E(R)=m(N+1)/2
var(R)=mn(N+1)/12-mn/{12N(N-1)}Σ(dt3-dt)
dtはt番目の同順位のところにいくつのデータが重なっているかを示す数。同順位がなければ
var(R)=mn(N+1)/12となるので簡単。

Rではwilcox.test(X,Y)または，wilcox.test(量的変数~群分け変数)。正確な確率を計算したいときはwilcox.test(X,Y,exact=T)またはwilcox.test(量的変数~群分け変数,exact=T)

練習問題の解答例

B群の方が数が少ないので計算が簡単。そこでB群について順位和を計算する。

R=22+25+8+6+2+12+20+32+19+1=147

E(R)=10×(34+1)/2=175

var(R)=10*24*(34+1)/12=700

z0=(|147-175|-1/2)/√700=2.75/√7=1.04

1.04<1.96なので，両側検定で5%水準で有意ではない（ちなみに2*(1-pnorm(1.04))=0.298）。

正確な確率は0.304

順位の代わりにスコアを使う場合

正規スコア検定：順位の代わりに標準正規分布の分位点関数を使って検定する。順位そのものを使う場合に比べて，もとの分布が正規分布に近い場合の検出力が良くなるが，計算は面倒になるので，あまり使われていない。

メディアン検定：順位をざくっと単純化して，メディアンより大きいか小さいかという情報だけを使う。２群のどちらにメディアンより大きい値が相対的に多いかを調べることになる。計算が簡単なので時折使われるが，検出力はよくない。

対応のある場合

データに対応がある場合は，パラメトリックな検定の「対応のあるt検定」と似た考え方で，２群の差の順位を考えると，より良い検出力をもった分析ができる。Wilcoxonの符号付き順位和検定(Signed Rank Sum Test)と呼ばれる。

変数Xと変数Yをデータ数nの対応がある変数とする。

合成変数U=X-Yを計算する。

Uの絶対値の小さい方から順位Rをつける。

Uが負なら-1，正なら1となる変数εを使って，R*=ΣεRを計算する。

E(R*)=0，var(R*)=n(n+1)(2n+1)/6となるので，nが概ね15以上なら(|R*|-1/2)/√var(R*)が標準正規分布に従うことで検定できる。

Rではwilcox.test(X,Y,paired=T)でよい。

順位以外のスコアを使う「符号検定」

対応のない場合と違って，差の順位については正規スコアを割り当てることは行われない。

メディアン検定に対応するやり方はあって，XとYの大小関係，つまり差が正か負かという符号だけを使う。これは符号だけを使うので符号検定(Sign Test)と呼ばれる。

符号付き順位和検定で差の絶対値に与える順位Rをすべて1とすると，R*はX>Yのデータ数からX<Yのデータ数を引いた値になる。総数は決まっているので，X>Yのデータ数そのものを検定統計量にしても同じである。

実際のX>Yのデータ数Kがn/2より大きい場合の有意確率は，(nCK+nCK+1+...+nCn)/2nとなる。

Fisherの「並べかえ検定」

正確な確率を求めることができる。すべてのありうる組み合わせについて順位和を計算し，それが実測値と同じかより珍しい場合の数を全組み合わせ数で割ると有意確率が得られる。

例で考えると，X={4,11,3}, Y={2,12,22,54}
であるとき，ありうる組み合わせはX={2,3,4},
Y={11,12,22,54}から，X={54,22,12},Y={11,4,3,2}までの7C3=7*6*5/(3*2)=35通りある。このうち
X={4,11,3}の順位{3,4,2}の和9と同じかより珍しい順位和をもつ組み合わせは，{1,2,3}{1,2,4}{1,3,4}
{1,2,5},{1,3,5}{1,2,6}を合わせた小さい側の７通りと{7,6,5}{7,6,4}{7,5,4}{7,6,3}{6,5,4}{7,5,3}{7,6,2}を合わせた大きい側の７通りなので，p=(7+7)/35=0.4となる。

対応のある場合も同様の考え方で計算できる。いずれにせよ，コンピュータに計算させるのが普通。Rでは，exactRankTestsライブラリを使えば，perm.test(X,Y)などで可能。

Minato Nakazawa

2002-06-09T20:09:15

Minato Nakazawa