No.22709 Re: マンホイットニーのU検定〜同順位の補正〜 【青木繁伸】 2019/04/03(Wed) 18:03
stats の wilcox.test で,同順位があるために「タイがあるため,正確な p 値を計算することができません」となる場合は,coin パッケージの wilcox_test を使ってみましょう。library(coin)以下が表示されます。
x <- c(rep(0, 15), 100)
g <- factor(c(rep("a", 15), "b"))
wilcox_test(x ~ g, distribution="exact")Exact Wilcoxon-Mann-Whitney TestZ は,同順位補正をしたときの正規近似の Z 値で,表示されている p 値の算出には使われていません。
data: x by g (a, b)
Z = -3.873, p-value = 0.0625
alternative hypothesis: true mu is not equal to 0
同時に表示されている p-value = 0.0625 は正確な p 値です。
coin パッケージの出現前には exactRankTests パッケージの wilcox.exact が使われていました。library(exactRankTests)以下が表示されます。
wilcox.exact(x ~ g)Exact Wilcoxon rank sum testW は wilcoxon 統計量です(どちらを1群にするかで,もう一方の極端な側の W = 15 が返されることもあります)。表示された p 値は,coin:::wilcox_test と同じ 0.0625 です。
data: x by g
W = 0, p-value = 0.0625
alternative hypothesis: true mu is not equal to 0
もう少し他の道具でも試してみるには,
http://aoki2.si.gunma-u.ac.jp/R/index.html
の中の,XV. exact 検定とモンテカルロ法による近似検定に記載した R プログラム exact.mw を使ってみると以下のようになります。
3. マン・ホイットニーの U 検定(exact test)exact.mw(x=rep(0, 15), y=1)示されている U = 0, Z = 3.87298 は,coin:::wilcox_test の Z と同じですね。
U = 0, Z = 3.87298, P 値 = 0.000107511
正確な P 値 = 0.0625
査察した分割表の個数は 2 個
次の行に正確な p 値が示されています。0.0625 で,coin:::wilcox_test,exactRankTests:::wilcox.exact の p 値と同じです。
exact.mw は exact.mw(matrix(c(15, 0, 0, 1), 2)) のようにも書けますが,
http://aoki2.si.gunma-u.ac.jp/exact/utest/getpar.html
にオンライン版を用意してあります。
列数を 2 として,次の画面で
15 0
0 1
の2×2分割表を入力すれば, 0.0625 が表示されます。
ということで,正確な p 値は 0.0625 でよいようです。
====================
最後に,「乱数をプラスして同順位をなくして解決する方が,同点の場合の数式を使うよりも実態に合っているように思う」ということですが,乱数を加えて検定を行うという流儀は存在します。
しかし,今回の場合はstats:::wilcox.test(1:15, 16)とすることと同じなので,わざわざ乱数を加えて同順位をなくすということがどの程度適切か疑問ですね。
Wilcoxon rank sum test
data: 1:15 and 16
W = 0, p-value = 0.125
alternative hypothesis: true location shift is not equal to 0
No.22710 Re: マンホイットニーのU検定〜同順位の補正〜 【確率は難しい】 2019/04/04(Thu) 10:16
青木先生
アドバイスありがとうございました。
結局のところ,z値を用いて正規分布を用いるのは近似に過ぎないということに尽きるということだと理解しましたが,そういう理解で合ってますでしょうか?
実際に適用して統計分析をしており,同順位が少なく,データ数が多い場合には比較的正確な値に近く,有効に適用できていると思っています。たくさんのケースをエクセルで分析して,機械的にZ値を算出し,正規分布だと仮定してp値を出しているため,
ひとつひとつ統計ソフトに入力するというのは,出来れば避けたいと考えています。
この正確なp値の計算は,エクセルの表計算で単純に行えるようなものではないのでしょうか?
No.22711 Re: マンホイットニーのU検定〜同順位の補正〜 【青木繁伸】 2019/04/04(Thu) 12:19
それぞれのデータを wilcox_test(x ~ g, distribution="exact") で分析する数行のプログラムを書けばよいだけでしょう。
エクセルの表計算のほうが手間が掛かるのでは?
No.22712 Re: マンホイットニーのU検定〜同順位の補正〜 【確率は難しい】 2019/04/04(Thu) 15:28
先生 ありがとうございます。
タイムリーな回答をいただきまして,非常に助かりました。
本当にありがとうございました。
おそらく,「同順位が多くて,近似的なP値と正確なP値が大きく乖離するケース」はそれほど多くないと思いますので,その部分だけプログラムを書くように勉強してみます。
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る