No.05637 U-test  【てつや】 2008/01/31(Thu) 23:42

はじめて投稿させていただきます。
どうかご教授ください。

2群の平均値の差の検定を行う際,Kormogorv-Smirnov検定により正規性の検定を行い,正規分布を仮定できなかったため,Mann-WhytneyのU検定を行ったところp値が0.999以上となり有意差が認められないという結果になりました。
しかし,念のためt-testを行ったところp値は0.001以下となりました。

ノンパラメトリック検定に検出力の問題があるといえども,このp値の差は納得いきません。

ちなみにデータは,ある動物1個体に,体温を毎秒ごとに測定・記録する装置を取り付けて得たデータを,昼夜で比較したものです(N=108458,80786)。

この動物の体温は昼夜で差がないと解釈してよいのでしょうか?

もし何か大きな間違いをおかしているようでしたらご指摘をお願いします。

No.05639 Re: U-test  【青木繁伸】 2008/01/31(Thu) 23:51

> Mann-WhytneyのU検定を行ったところp値が0.999以上となり有意差が認められないという結果になりました。しかし,念のためt-testを行ったところp値は0.001以下となりました。

データ数が膨大ですし,研究の秘密保持ということもありますので原データの呈示は必要ありませんが,検定をした状況(検定実行の指示と結果の表示)を見せていただくことはできますか?
経験したこともないし,ちょっと,想像できない状況なのですけどね。
指示の間違いとか結果の読み間違いというのがなければよいのですけど。

まあ,「N=108458,80786」というのは,尋常な数ではないとは思いますが。
実験計画にも若干の疑義があるかも。

No.05642 Re: U-test  【てつや】 2008/02/01(Fri) 00:47

検定はすべて統計解析ソフトStatViewを用いて行いました。
解析ソフトに依存してしまっていることに問題を感じていますが・・・

体温のデータではないのですが,似たような結果がでたので,その出力結果を示します。
U値 -4879252772.000
U値 棄却率 3078387236.000
Z値 .
p値 >.9999
同順位補正後のz値 .
同順位補正後のp値 >.9999
同順位数 1204

例数  順位合計 平均順位
Day 107088 13739622532.000 128302.168
Night 103504 8434977996.000 81494.222
Z値が出力されないのが気になります・・

残念ながらこのデータでt-testを行うとStatviewはフーリーズしてしまうことが多く今すぐには結果を提示できません。

実験のデザインですが,確かにこのデータ数のものを比べて差があるからといって昼夜で体温が異なるというつもりはありません。
(経験上この種のデータで2群を比較すると殆どの場合で差が出ます)

No.05643 Re: U-test  【青木繁伸】 2008/02/01(Fri) 01:11

U の値がマイナスになっていますね?
U値 -4879252772.000

定義上,U は非負の値(0以上)であるはず

Statview が,あまりにも巨大なデータサイズにびっくりして,ばぐっちゃったんじゃないでしょうか?
(プログラミングを少しはやった経験から言うと,整数演算でやっていると扱える整数値の範囲をはみ出して,オーバーフローするならまだしも,負の値として解釈されて変なことになるのはよくあること。全部倍精度実数演算やっていれば問題ないのですけどねえ)
いずれにせよ,Statview はもうサポートされていないソフトウェアではなかったですか?他の人が追試することも難しくなりますので,もう少し一般的なソフトに移行した方がよろしいかも知れませんね。

R とか,他のソフトウェアで確認するとよいかと思います。単にUの符号が間違えているだけと仮定すると,以下のようになりますね
> U <- 4879252772.000
> n1 <- 107088
> n2 <- 103504
> E.U <- n1*n2/2
> V.U <- n1*n2* ( n + 1) / 12
> ( z <- abs(U-E.U)/sqrt(V.U) )
[1] 4758.738
> pnorm(z, lower.tail=FALSE)*2
[1] 0
となり,P値は実質的に0ということになりましたが。

これくらいのサンプルサイズになると,U統計量の平均値自体が計算機が扱える整数値の範囲を超えます。そのため,その点を考慮しない(整数範囲で計算しようとしている)プログラムは破綻します。

No.05644 Re: U-test  【てつや】 2008/02/01(Fri) 01:26

早速の対応ありがとうございます。

U値は間違いなく負の値を示しています。
StatViewは確かにもうサポートされていません。

昨年までStatViewを使った論文が発表され,同様に大規模データの検定が行われていましたので,安心しきっていました。

プログラミングの経験が殆どないのでRへの移行にはちょっと抵抗がありますが,
結果が出ましたらご報告します。

迅速かつ親切な対応をありがとうございました。

No.05646 Re: U-test  【青木繁伸】 2008/02/01(Fri) 11:02

No. 5642 の記事中の
例数  順位合計 平均順位
Day 107088 13739622532.000 128302.168
Night 103504 8434977996.000 81494.222
という情報を見逃していました。これが正しいとすると,
> n1 <- 107088
> r1 <- 13739622532
> n2 <- 103504
> r2 <- 8434977996
> ( u1 <- n1*n2+n1*(n1+1)/2-r1 )
[1] 3078387236
> ( u2 <- n1*n2+n2*(n2+1)/2-r2 )
[1] 8005649116
> ( u <- min(u1, u2) )
[1] 3078387236
となり,U統計量は 3078387236 になるはずですね。

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