No.21074 Re: Rでのt検定とU検定で例数8の時だけ現れる謎の現象,あるいは私のミス 【青木繁伸】 2014/05/31(Sat) 05:01
原因は,ウィルコクソンの符号順位和検定の検定統計量が不連続なためです。wil <- function(n) {というようなプログラムを書いて,n=7, 8, 9 の場合の結果を見ると,
q <- qwilcox(0.025, n, n)
W <- 0:q
d <- dwilcox(W, n, n)
p <- cumsum(d)
return(round(cbind(W, d, p), 5))
}> wil(7) # n = 7まあ,たまたまといえばたまたま,n = 8 のときは,以下のように,実際の p/2 値と有意水準(α/2 = 0.025)の差が他に比べると小さいということ。
W d p
[1,] 0 0.00029 0.00029
[2,] 1 0.00029 0.00058
[3,] 2 0.00058 0.00117
[4,] 3 0.00087 0.00204
[5,] 4 0.00146 0.00350
[6,] 5 0.00204 0.00554
[7,] 6 0.00321 0.00874
[8,] 7 0.00437 0.01311
[9,] 8 0.00583 0.01894 ここまでが棄却域
[10,] 9 0.00758 0.02652
> wil(8) # n = 8
W d p
[1,] 0 0.00008 0.00008
[2,] 1 0.00008 0.00016
[3,] 2 0.00016 0.00031
[4,] 3 0.00023 0.00054
[5,] 4 0.00039 0.00093
[6,] 5 0.00054 0.00148
[7,] 6 0.00085 0.00233
[8,] 7 0.00117 0.00350
[9,] 8 0.00171 0.00521
[10,] 9 0.00218 0.00738
[11,] 10 0.00295 0.01033
[12,] 11 0.00373 0.01406
[13,] 12 0.00490 0.01896
[14,] 13 0.00598 0.02494 ここまでが棄却域
[15,] 14 0.00754 0.03248
> wil(9) # n = 9
W d p
[1,] 0 0.00002 0.00002
[2,] 1 0.00002 0.00004
[3,] 2 0.00004 0.00008
[4,] 3 0.00006 0.00014
[5,] 4 0.00010 0.00025
[6,] 5 0.00014 0.00039
[7,] 6 0.00023 0.00062
[8,] 7 0.00031 0.00093
[9,] 8 0.00045 0.00138
[10,] 9 0.00062 0.00200
[11,] 10 0.00082 0.00282
[12,] 11 0.00107 0.00389
[13,] 12 0.00142 0.00531
[14,] 13 0.00179 0.00710
[15,] 14 0.00228 0.00938
[16,] 15 0.00284 0.01222
[17,] 16 0.00352 0.01573
[18,] 17 0.00426 0.01999 ここまでが棄却域
[19,] 18 0.00516 0.02515> diff <- numeric(20)
> for (n in 3:20) {
+ diff[n] <- round(pwilcox(qwilcox(0.025, n, n)-1, n, n)-0.025, 5)
+ }
> data.frame(n=3:20, diff=diff[3:20])
n diff
1 3 -0.02500
2 4 -0.01071
3 5 -0.00913
4 6 -0.00444
5 7 -0.00606
6 8 -0.00006 この差が小さい
7 9 -0.00501
8 10 -0.00337
9 11 -0.00135
10 12 -0.00255
11 13 -0.00294
12 14 -0.00013 他にも差の小さい場合がある
13 15 -0.00233
14 16 -0.00159
15 17 -0.00066
16 18 -0.00146
17 19 -0.00017 他にも差の小さい場合がある
18 20 -0.00045
No.21075 Re: Rでのt検定とU検定で例数8の時だけ現れる謎の現象,あるいは私のミス 【shimp】 2014/05/31(Sat) 21:32
有難う御座いました。
なるほど,ところどころに絶妙の値が巡ってくるのですね。
> wil(8) # n = 8
[14,] 13 0.00598 0.02494
> wil(14) # n = 14
[56,] 55 0.00268 0.02487
> wil(19) # n = 19
[114,] 113 0.00171 0.02483
実のところ,最初に回答を拝見した時はどこを見れば良いのやら途方に暮れたのですが,
判ってしまえば当たり前のことにすら思えてきました。
ちょっと感動です。
重ねてお礼申し上げます。
有難う御座いました。
No.21076 Re: Rでのt検定とU検定で例数8の時だけ現れる謎の現象,あるいは私のミス 【shimp】 2014/05/31(Sat) 21:45
あと,プログラムの書き方が参考になりました。
こういう基本的なところはもちろん,
> diff <- numeric(20)
こういう使い方が大変参考になりました。
W <- 0:q
d <- dwilcox(W, n, n)
せっかくRを使っているのだから,すこし自分のコードを見直してみます。
併せてお礼申し上げます。
● 「統計学関連なんでもあり」の過去ログ--- 046 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る