No.12460 Wilcoxon rank sum tests 引き分けがいっぱい  【長谷川】 2010/04/15(Thu) 08:55

たとえば
x <- c(rep(1,3),rep(2,7))
y <- c(rep(2,7),rep(3,3))
というデータがあるとします.

wilcox.test(x,y)
で p値は 0.019

require(exactRankTests)
wilcox.exact(x,y)
で p値は 0.037
となります.

10個のデータのうち7個が引き分けで有意差があるというのがしっくりしません.
wilcoxon rank sum test は連続確率変数に用いるものなので,このような場合は使えないのだと思います.

とすると,こういう(例えば)1,2,3しかとらない確率変数の場合,どういった手法を用いればよいのでしょうか?

100通りの1対1の比較で,xの方が大きいのが51通りなので,
binom.test(51,100)
で p値 = 0.92
とするのを考えましたが,独立したデータでないなぁ,とつまづきました.

何かよい方法がありますか?
よろしくお願いします.

No.12461 Re: Wilcoxon rank sum tests 引き分けがいっぱい  【青木繁伸】 2010/04/15(Thu) 10:54

> wilcoxon rank sum test は連続確率変数に用いるものなので

そういうことはないと思います。カテゴリーデータ(順序尺度の変数)にも使える検定手法でしょう。

いくらノンパラメトリック検定とはいえ,位置の母数を検定する場合に,分布の形が大幅にことなるもの同士を比べるのは不適切ということでしょう。

ま た,1,2,3 という測定値の精度にも関係するでしょう。x,y それぞれの測定値に平均0,標準偏差 sd の誤差を付与して wilcox.test を行うと,sd が 小さい場合,有意になる場合と有意にならない場合はほぼ半々になります。誤差を含むデータが測定により四捨五入されて整数値(1,2,3)になると仮定す ることは自然で,誤差がないとしたとたんに有意になるということの方が不自然でしょう。したがって,示されたデータについては,「差があるとはいえないだ ろう」という結論が妥当のように思います。
> n <- 100000 # 10 万回のシミュレーション
> sd <- 0.001 # 誤差の標準偏差
> result <- replicate(n, wilcox.test(x+rnorm(10, 0, sd), y+rnorm(10, 0, sd))$p.value) # 10 万回の検定の P 値を求める
> sum(result < 0.05)/n # P 値が 0.05 以下になる割合
[1] 0.45117 # ほぼ半分

> sd <- 0.2 # 精度がもっと低い(スコアが逆転することはほとんどない程度)
> result <- replicate(n, wilcox.test(x+rnorm(10, 0, sd), y+rnorm(10, 0, sd))$p.value)
> sum(result < 0.05)/n
[1] 0.44883 # あまり変わらない

No.12464 Re: Wilcoxon rank sum tests 引き分けがいっぱい  【長谷川】 2010/04/16(Fri) 11:20

ありがとうございます.

● 「統計学関連なんでもあり」の過去ログ--- 043 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る