Rによるウィルコクソンの符号順位検定
R にてウィルコクソンの符号順位検定 (Wilcoxon signed rank test) を行う.本検定法は,ウィルコクソン順位和検定 (Wilcoxon rank sum test) とは明確に異なる検定法である.ウィルコクソンの順位和検定は2群間に対応がない場合に使うが,ウィルコクソンの符号順位検定は比較したい2群間に対応がある場合に使う法で,パラメトリック検定でいうところの対応のあるt検定に相当する.R ではパッケージ exactRankTests に搭載されている関数 wilcox.exact() にて計算する.既に開発は終了しており,読み込むとパッケージ coin の利用を促されるが,開発の余地がない枯れた手法なので使い続けて良い.また,R にデフォルトでインストールされている stats パッケージにも本検定を実行するための wilcox.test() が搭載されているが,この関数はデータにタイが存在したときに正確な値を返さないため,wilcox.exact() を使った方が良い.wilcox.exact() では,Streitberg と Roehmel のシフトアルゴリズム (Shift algorithm) により,統計量に対する正確なヌル分布が計算される.
最初に,Rを起動させ,以下のコマンドにてパッケージをインストールし,そのパッケージを読み込む.既にパッケージがインストールされている場合においては1行目は不要.
$ install.packages("exactRankTests", repos="http://cran.ism.ac.jp/") $ library(exactRankTests)
p値の計算
ウィルコクソンの符号順位検定は一対の標本における代表値の差の検定である.各群のサンプルサイズは当然一致している必要がある.以下のデータXおよびデータYが得られたとき,これら2群間の代表値に差があるかどうかを検定する.帰無仮説 (H0) は2群間の代表値に差がないこととなる.
データX | 1.83, 1.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30 |
データY | 0.88, 0.65, 0.60, 1.05, 1.06, 1.29, 1.06, 2.14, 1.29 |
以下のコマンドにて,上の各データをそれぞれ変数 vx および vy に格納する.
$ vx=c(1.83, 1.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30) $ vy=c(0.88, 0.65, 0.60, 1.05, 1.06, 1.29, 1.06, 2.14, 1.29)
ウィルコクソンの符号順位検定は以下のコマンドにて実行する.符号順位検定では paired=T を指定する.ここで,paired=F を指定するとウィルコクソンの順位和検定が実行される.
$ wilcox.exact(x=vx,y=vy,paired=T)
これを実行した結果は以下のようになる.
Exact Wilcoxon signed rank test data: vx and vy V = 45, p-value = 0.003906 alternative hypothesis: true mu is not equal to 0
以上の結果では,p値が0.003906と非常に小さく,有意水準を1%としてもデータXおよびデータYの代表値には差があることが示された.
信頼区間の算出
また,以下のオプションを用いると信頼区間を算出することができる.conf.int=T は信頼区間を計算させるオプションであり,conf.level は信頼区間の信頼水準を指定するオプションである.conf.level=0.95 なら95%信頼区間,conf.level=0.99 なら99%信頼区間が計算される.
$ wilcox.exact(x=vx,y=vy,paired=T,conf.int=T,conf.level=0.95)
これを実行した結果は以下のようになる.
Exact Wilcoxon signed rank test data: vx and vy V = 45, p-value = 0.003906 alternative hypothesis: true mu is not equal to 0 95 percent confidence interval: 0.465 1.025 sample estimates: (pseudo)median 0.77
オプション一覧
その他のオプションには以下のようなものがある.
オプション | 詳細 |
---|---|
x | 検定対象の入力データの指定 (必須). |
y | もう一方の検定対象の入力データの指定 (順位和検定の際は必須).もし指定しない場合は,x と x の要素数分の0のみからなるデータとの符号順位検定をすることと等価.また,この際は paired=T は指定できない. |
alternative | 両側検定 (alternative="t") をするか片側検定をするかの指定.片側検定の場合はさらに,右側検定 (alternative="g") をするか左側検定 (alternative="l") をするかの指定. |
paired | 順位和検定 (paired=F) をするか符号順位検定 (paired=T) をするかの指定. |
exact | p値を統計量の正規分布への近似からではなく正確に計算するかどうかの指定.デフォルトはサンプルサイズが50未満で T,それ以外で F で,これを F にするなら,R のデフォルトの wilcox.test() においても,タイがあってもp値は計算されるようになる. |
conf.int | 信頼区間を算出するかどうかの指定 (T または F). |
conf.level | 直上のオプションを指定した際の信頼水準の指定 ( (0, 1] ). |