No.13879 Mann-WhitneyのU検定、Wilcoxonの順位和検定の統計量(U値、W値)について  【ひで】 2010/11/29(Mon) 01:02

はじめて投稿させていただきます。Rを使って統計解析をしておりますが,初学者です。どうかご教授ください。

青木先生のbreakdown関数を使用して,test="non-parametric"として2群間でMann-WhitneyのU検定をおこなっています。
表に出力されるU値がSPSSで計算したものと異なっていたので,プログラムを見たところ,この値がwilcox.testのW値であることが分かりました。

wilcox.testの統計量はMann-WhitneyのU検定のものと同じとのことで実質上の違いはないと思いますが,U値とW値の計算式は違いますし,青木先生のU.test関数で出力されるU値はwilcox.testのW値とは異なります。

どのように解釈,論文に記載したらいいのか分からなくなり,ご質問させていただきました。
・breakdown関数のU値はW値と解釈すればよいのか
・その場合,統計量はU=ではなくW=という記載にした方がよいのか
・W値を記載する場合は,Mann-WhitneyのU検定ではなくWilcoxonの順位和検定と呼んだ方がよいのか

以上の点につきまして,ご教示いただけると助かります。
的外れな質問でしたら,申し訳ありません。
どうぞよろしくお願い致します。

No.13880 Re: Mann-WhitneyのU検定,Wilcoxonの順位和検定の統計量(U値,W値)について  【青木繁伸】 2010/11/29(Mon) 08:37

wilcox.test は ウィルコクソンの順位和検定ですが,表示されるものは,マン・ホイットニーの U です(wilcox.test では W と表示されますけど,あくまでも,マン・ホイットニーの U です)。

http://aoki2.si.gunma-u.ac.jp/R/breakdown.html
にあるデータ(test.dat)を使って,それぞれの関数を適用しましたが,全部同じ値(マン・ホイットニーの U = 97)が表示されましたけど?
> head(test.dat)
男女 血液型 測定値1 測定値2
1 1 2 101.3 135.8
2 1 2 101.8 165.7
3 1 1 122.6 178.9
4 2 4 114.4 155.8
5 1 4 89.7 143.0
6 2 2 83.4 123.7
> breakdown(3, 1, test.dat, latex=FALSE, test="non-parametric")

表 男女別の測定値1の集計
測定値1
男女 データ数 平均値 標準偏差
1 14 96.836 15.060
2 16 98.800 9.969
全体 30 97.883 12.413
U = 97.000, P 値 = 0.552 # ★★ U = 97

> wilcox.test(測定値1~男女, test.dat)
Wilcoxon rank sum test

data: 測定値1 by 男女
W = 97, p-value = 0.5521 # ★★ W = U = 97
alternative hypothesis: true location shift is not equal to 0

> U.test(test.dat[test.dat[,1]==1,3], test.dat[test.dat[,1]==2,3])
マン・ホイットニーの U 検定

データ: test.dat[test.dat[, 1] == 1, 3] と test.dat[test.dat[, 1] == 2, 3]
U = 97.0000, E(U) = 112.0000, V(U) = 578.6667, Z-value = 0.6028, P値 = 0.5467 # ★★ U = 97

No.13882 Re: Mann-WhitneyのU検定,Wilcoxonの順位和検定の統計量(U値,W値)について  【ひで】 2010/11/29(Mon) 14:15

青木先生

早速のお返事,ありがとうございました。
確かに先生のデータを使用して確認したところ,先生のおっしゃる通りの結果になりました。

しかし,私のデータですとうまくいきません。
先生のall.Rと,データファイルdata.txt(UTF-8, LF)を読込み,それぞれの関数を適用したところ,下記のようになりました。
(ファイルがアップロードできなかったので,Dropboxのリンクを貼りました)
> df <- read.table("data.txt",header=TRUE)
> df[,1] <- factor(df[,1],levels=1:2,labels=c("A群","B群"))
>
> breakdown(2,1,df,latex=FALSE,test="non-parametric")

表 対象群別のDATAの集計
DATA
対象群 データ数 平均値 標準偏差
A群 48 0.939 0.908
B群 41 0.416 0.467
全体 89 0.698 0.780
U = 1375.500, P 値 = 0.001
警告メッセージ:
In wilcox.test.default(x = c(0, 0.04, 0.05, 0.08, 0.095238095, 0.1, :
cannot compute exact p-value with ties
>
> df2<-split(df,df$対象群)
>
> wilcox.test(df2$A群$DATA,df2$B群$DATA)
ウィルコクソンの順位和検定(連続性の補正)

データ: df2$A群$DATA と df2$B群$DATA
W = 1375.5, P値 = 0.001253
対立仮説: location shiftは,0ではない

警告メッセージ:
In wilcox.test.default(df2$A群$DATA, df2$B群$DATA) :
タイがあるため,正確な p 値を計算することができません
> U.test(df2$A群$DATA,df2$B群$DATA)
マン・ホイットニーの U 検定

データ: df2$A群$DATA と df2$B群$DATA
U = 592.5000, E(U) = 984.0000, V(U) = 14684.3657, Z-value = 3.2266, P値 = 0.001253
どうしてなのでしょう。私のやり方に何か問題があるのでしょうか。
ご教示いただければ幸いです。
どうぞよろしくお願いいたします。

No.13883 Re: Mann-WhitneyのU検定,Wilcoxonの順位和検定の統計量(U値,W値)について  【青木繁伸】 2010/11/29(Mon) 14:25

wilcox.test と U.test で,統計量の値は異なるが,P 値が同じであることに注意。
W = 1375.5 と U = 592.5 は確かに違うけど,W も U も平均値を中心として左右対称なんですよ。U の平均値は 984 (E(U) = 984.0000)なので,U = 592.5 と対称な位置にあるのは,984+(984-592.5) = 1375.5 = 「wilcox.test の W」となるわけです。昔は,数値表を作る関係上,2つの U(つまり W)のうち,小さい方を記述するというやり方だったけど,コンピュータで計算するならどうでも良いということで,計算された方の U をそのまま書いているだけです。ちなみに,この場合は正規近似が使われております。wilcox.test の結果には明示されておりませんが,U と,U の平均値と分散から標準正規変量 z が計算されて使われます。2つの統計量 592.5 と 1375.5 のど真ん中に平均値 984 があり,分散が 14684.3657 なので,z は,-3.2266 と 3.2266 ですが,求めるべき P 値は Pr{Z < -3.2266} × 2 または,Pr{Z > 3.2266} × 2 と計算されるので,どちらから求めても同じになるのです。

No.13884 Re: Mann-WhitneyのU検定,Wilcoxonの順位和検定の統計量(U値,W値)について  【ひで】 2010/11/29(Mon) 17:05

青木先生

ご説明ありがとうございました。納得いたしました。
P値がどちらも同じなので,やっている中身は同じだと思っていましたが,どうして場合によってU値が表示されたりW値が表示されるのかわからず,悩んでいました。

この場合,論文に統計量を記載する際には,U値でもW値でも構わず”U=○○"と記載してよいのでしょうか。
それとも,W値を用いる場合には”W=○○"と記載した方がよいのでしょうか。

また,W値を用いる場合でも,Mann-WhitneyのU検定と呼んでいいのでしょうか。

タイが多いので,wilcox.exactを検定に使用することを考えております。

重ねて申し訳ありませんが,どうぞよろしくお願いいたします。

No.13885 Re: Mann-WhitneyのU検定,Wilcoxonの順位和検定の統計量(U値,W値)について  【青木繁伸】 2010/11/29(Mon) 17:35

Z と U くらいは慣例的に用いられているようですが,W というのはあまり一般的ではないのではないでしょうか?

> 場合によってU値が表示されたりW値が表示されるのかわからず

wilcox.test 生のままの出力では,マン・ホイットニーの U を "W" という記号で出しているだけです。

前のコメントでも書いたように,
>> wilcox.test は ウィルコクソンの順位和検定ですが,表示されるものは,マン・ホイットニーの U です(wilcox.test では W と表示されますけど,あくまでも,マン・ホイットニーの U です)。

本当の wilcoxon rank sum test の検定統計量の数値は U とは別です(しかし,単に平行移動しただけですけど)http://aoki2.si.gunma-u.ac.jp/lecture/Average/U-test.html の中で説明している R (順位和そのもの)です。

> 論文に統計量を記載する際には,U値でもW値でも構わず”U=○○"と記載してよいのでしょうか。

wilcox.test が出す検定統計量なら U と書いて良いでしょう。

> W値を用いる場合には”W=○○"と記載した方がよいのでしょうか。

前述の通り,W という記号はあまり使われないと思います。ので,U ですね。

本来の wilcoxon rank sum test の場合には R。

> W値を用いる場合でも,Mann-WhitneyのU検定と呼んでいいのでしょうか。

ですから,wilcoxon.test は マン・ホイットニーの U を計算して,W という記号で出力しているだけです。実際には,マン・ホイットニーの U 検定です。

> タイが多いので,wilcox.exactを検定に使用することを考えております。

それでよいと思いますよ。

No.13891 Re: Mann-WhitneyのU検定,Wilcoxonの順位和検定の統計量(U値,W値)について  【ひで】 2010/11/29(Mon) 21:09

青木先生

ご説明ありがとうございました。
理解が不十分な点がありましたが,青木先生の解説のおかげでスッキリしました。
統計量については,自分でも改めて勉強してみます。

1点だけ確認させてください。

同じデータをwilcox.exactで計算してみました。

> wilcox.exact(df2$A群$DATA,df2$B群$DATA)
Exact Wilcoxon rank sum test

データ: df2$A群$DATA と df2$B群$DATA
W = 1375.5, P値 = 0.001070
対立仮説: 母平均は,0ではない

wilcox.exactのヘルプには,
Wilcoxon rank sum test (equivalent to the Mann-Whitney test)とあり,
P値は変わりましたが,Wはそのままでしたので,これもマンホイットニーのUということでよろしいのですね。

よろしくお願いいたします。

No.13892 Re: Mann-WhitneyのU検定,Wilcoxonの順位和検定の統計量(U値,W値)について  【青木繁伸】 2010/11/29(Mon) 21:19

> Wはそのままでしたので,これもマンホイットニーのUということでよろしいのですね。

何 度も言っているように,wilcox.test が W として提示する統計量は,wilcoxon rank sum test の検定統計量(本来は R とでも表すべきもの)ではなく,mann-whitney test の検定統計量(U)なんです。正確な検定という場合には,検定統計量が正確なのではなく(検定によっては検定統計量自体も正確なものであることもあります が),その統計量に基づく P 値を正確に計算するということなんです。

No.13893 Re: Mann-WhitneyのU検定,Wilcoxonの順位和検定の統計量(U値,W値)について  【ひで】 2010/11/29(Mon) 21:25

青木先生

ありがとうございました。理解できました。
お手数をおかけいたしました。

今後もどうぞよろしくお願いいたします。

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