ウィルコクソンの符号付順位和検定 Last modified: Oct 08, 2004
目的
ウィルコクソンの符号付順位和検定を行う。
R に用意されている wilcox.test(x, y, paired=TRUE, ...) では,測定値が小数付きの場合に不正な結果を返すことがある。
独自に関数を定義しても良いが,測定値を整数化することにより R が用意している機能を最大限利用する。
使用法
wilcox.paired.test(x, y, ...)
引数
x, y 対応する測定値ベクトル
... R の wilcox.test の引数(paired=TRUE を除く)
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/wilcox_paired_test.R", encoding="euc-jp")
# ウィルコクソンの符号付順位和検定
wilcox.paired.test <- function( x, # 対応する測定値ベクトル
y, # 対応する測定値ベクトル
...) # wilcox.test へ引き渡すその他の引数
{
ok <- complete.cases(x, y) # 欠損値を持つケースを除く
x <- x[ok]
y <- y[ok]
ok = FALSE # データが全部整数値になったかどうか
for (i in 1:10) { # もとのデータを 10 倍ずつ大きくしていって,全部が整数になったら検定を行う
if (all(c(x, y)*10^i == floor(c(x, y)*10^i))) {
ok = TRUE
break
}
}
if (ok == FALSE) {
stop("Give up!")
}
x <- x*10^i # 整数化
y <- y*10^i
wilcox.test(x, y, paired=TRUE, ...) # R が用意している関数を利用する
}
使用例
x <- c(0.8, 0.7, 0.8, 1.1, 0.8, 1.0, 0.4, 0.6, 1.0, 0.9, 0.7, 0.7, 0.7, 0.6, 0.9, 1.0, 0.9, 0.4, 1.1, 1.0)
y <- c(0.8, 0.6, 0.9, 1.0, 1.0, 1.1, 0.5, 0.5, 0.9, 1.0, 0.5, 0.6, 0.8, 0.6, 0.8, 0.9, 0.8, 0.7, 1.1, 1.1)
wilcox.paired.test(x, y)
出力結果例
> x <- c(0.8, 0.7, 0.8, 1.1, 0.8, 1.0, 0.4, 0.6, 1.0, 0.9, 0.7, 0.7, 0.7, 0.6, 0.9, 1.0, 0.9, 0.4, 1.1, 1.0)
> y <- c(0.8, 0.6, 0.9, 1.0, 1.0, 1.1, 0.5, 0.5, 0.9, 1.0, 0.5, 0.6, 0.8, 0.6, 0.8, 0.9, 0.8, 0.7, 1.1, 1.1)
> wilcox.paired.test(x, y)
Wilcoxon signed rank test with continuity correction
data: x and y
V = 75.5, p-value = 0.9798
alternative hypothesis: true mu is not equal to 0
もとのままのデータを使った以下の結果は,誤りである。
> x <- c(0.8, 0.7, 0.8, 1.1, 0.8, 1.0, 0.4, 0.6, 1.0, 0.9, 0.7, 0.7, 0.7, 0.6, 0.9, 1.0, 0.9, 0.4, 1.1, 1.0)
> y <- c(0.8, 0.6, 0.9, 1.0, 1.0, 1.1, 0.5, 0.5, 0.9, 1.0, 0.5, 0.6, 0.8, 0.6, 0.8, 0.9, 0.8, 0.7, 1.1, 1.1)
> wilcox.test(x, y, paired=TRUE)
Wilcoxon signed rank test with continuity correction
data: x and y
V = 66.5, p-value = 0.6446
alternative hypothesis: true mu is not equal to 0
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI ( @si.gunma-u.ac.jp )