logo
生物科学研究所 井口研究室
Laboratory of Biology, Okaya, Nagano, Japan
Home

多重比較 Steel-Dwass 正規近似と正確検定: U 検定が基準

井口豊(生物科学研究所,長野県岡谷市)
最終更新:2024 年 4 月 24 日

多重比較検定の一種である Steel-Dwass 多重検定は, Tukey-Kramer検定のノンパラメトリック版である,という説明は,ウェブページでもしばしば見かける。しかし,この多重検定の基礎となるのが, Wilcoxon 順位和検定(Mann-Whitney U 検定)であることを説明したウェブサイトは意外と少ない。日本語の論文で,そのことを説明しているのは,白石高章(2011)や柳澤健太郎ほか(2007)である(文献は末尾に掲載)。

また,通常使われる Steel-Dwass 検定は,漸近 U 検定であり,それとは別に正確検定があることは,さらに知られていない。

ここでは,統計解析ソフト R を用いて, Steel-Dwass 検定と U 検定の関係を探ってみよう。R で Steel-Dwass 検定を実行する場合は,パッケージ NSM3 の中の pSDCFlig 関数を使うと良い。このパッケージをインストールした上で,2 群(2 標本,サンプル数 2)の検定を行なってみる。多群比較の検定の場合,その特徴を知るには,2 群の比較を行なうのが最適な方法である。

pSDCFlig 関数の説明を読むと, method オプションとして,次の 3 種類, Exact, Monte Carlo, Asymptotic,つまり,正確,モンテカルロ,漸近 の 3 種類が用意されていることが分かる。このうち,特に, Exact 法と Asymptotic 法を取り上げ,以下のような,共に大きさ 4 の 2 標本 ab の検定をしてみる。なお,便宜上,タイ(結び,同点)が無いデータを考える。くどいようだが,サンプル数 2 で,サンプルサイズ 4 である(サンプル数とサンプルサイズ n は意味が違う)。

話を戻して,まず, Exact 法を実行。

# Steel-Dwass 検定
# データ
a<- c(1, 3, 5, 6)
b<- c(2, 4, 7, 9)

dat<- c(a, b)
grp<- rep(1:2, c(4, 4))

# 正確検定
library(NSM3)
pSDCFlig(dat, grp, method="Exact")
# 終了

p = 0.4857 となる。これが,正確 U 検定における p 値と同値であることは,以下のようにして確認できる。

# Mann-Whitney U (Wilcoxon 順位和) 正確検定
wilcox.test(a, b, exact=T)

Steel-Dwass 正確検定は,まさに,正確 U 検定をベースにして成り立っているのである。

次に,同じデータで 漸近検定を実行。

# 漸近検定
pSDCFlig(dat, grp, method="Asymptotic")

p = 0.3865 となる。これが,漸近 U 検定における p 値と同値であることは,以下のようにして確認できる。

# Mann-Whitney U (Wilcoxon 順位和) 漸近検定,連続補正なし
wilcox.test(a, b, exact=F, correct=F)

Steel-Dwass 漸近検定は,まさに,漸近 U 検定をベースにして成り立っているのである。ここで言う漸近法とは,漸近的に正規近似させた方法である。 2 標本の大きさをそれぞれ n1n2 とすると,それらが大きくなるにつれ,検定統計量 U は,次のような平均 E,分散 V の正規分布に近づく。いわゆる中心極限定理の例とも言える。

\begin{eqnarray} E=\frac{n_1\ n_2}{2} \end{eqnarray}
\begin{eqnarray} V=\frac{n_1\ n_2(n_1+n_2+1)}{12} \end{eqnarray}

したがって,検定統計量 U は ,平均 0,分散 1 の標準正規分布に従う統計量 Z に変換できる。

\begin{eqnarray} Z=\frac{U-E}{\sqrt{V}} \end{eqnarray}

いわゆる Z 検定をすれば良い。 R で計算してみる。


# 正規近似
n1<- length(a)
n2<- length(b)

E<- n1*n2/2
V<- n1*n2*(n1+n2+1)/12 
U<- wilcox.test(a, b, exact=F, correct=F)$statistic

Z<- abs(U-E)/sqrt(V)

pnorm(Z, lower=F)*2
# 終了

結果は,p = 0.3864762 となり, Steel-Dwass 検定の漸近法は, U 検定の正規近似をベースにして成り立っていることが分かる。したがって,標本が大きければ漸近 Steel-Dwass 検定で良いが,標本が小さい場合, n1n2 が 10 以下のような場合は,正確検定を使うべきである。

問題は,自分が使うソフトやプログラムが,どちらの方法を採っているか知らずに,あるいは,区別があることすら知らずに,それらを使う場合である。例えば,ウェブ上で時々参照される青木氏によるスティール・ドゥワス(Steel-Dwass)の方法による多重比較は,漸近検定である。

その R スクリプトの下から5行目を見てほしい。

p <- ptukey(t*sqrt(2), ng, Inf, lower.tail=FALSE) # P 値を計算

ptukey 関数で,スチューデント化された範囲分布を使って p 値を求めているのだが,引数として,自由度を無限大(Inf)に設定している。これが,正規近似の設定なのである。

R ベースの有名なフリーソフト EZR のSteel-Dwass 検定も漸近法である。このような統計ソフトの仕様を知らずに使っている人も多いような気がする。

例えば,藤井貴允ほか(2013)は,その点で気になる。彼らは, 16 人, 9 人, 7 人の 3 群の代表値の比較に,前述の青木氏のプログラムを利用して,Steel-Dwass 検定を実行しているのだが,正確法で検定しても良かったケースである。

なお,ここでは, U 検定(Wilcoxon の順位和検定, Wilcoxon rank-sum test)を扱ったが,対応のあるデータに対しては, Wilcoxon の符号付順位検定(Wilcoxon signed rank test)が使われる。この場合,関数 wilcox.test の引数で, paired = TRUE と指定すれば良い。ただし利用する際は,下に書いた関連サイトの記事の注意点も参考にしてほしい。

さらに,同点(タイ, tie) がある場合は,exactRankTests パッケージの wilcox.exact 関数,または, coin パッケージの wilcox_test あるいは wilcoxsign_test 関数を使えば良い。

関連サイト

参考文献

藤井貴允ほか(2013)
立ち上がり動作の内部股関節伸展モーメント産出に影響する筋機能の加齢変化
理学療法科学 28 (4): 463-468.

白石高章(2011)
多群モデルにおけるすべての平均相違に関する閉検定手順
計量生物学 32 (1): 33-47.

柳澤健太郎ほか(2007)
RDB データベースにおける信用リスクモデルの説明力の年度間推移に関する分析
日本金融・証券計量・工学学会 2007 年夏季大会予稿集: 249-263.

Home