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.000Z値が出力されないのが気になります・・
U値 棄却率 3078387236.000
Z値 .
p値 >.9999
同順位補正後のz値 .
同順位補正後のp値 >.9999
同順位数 1204
例数 順位合計 平均順位
Day 107088 13739622532.000 128302.168
Night 103504 8434977996.000 81494.222
残念ながらこのデータで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となり,P値は実質的に0ということになりましたが。
> 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
これくらいのサンプルサイズになると,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となり,U統計量は 3078387236 になるはずですね。
> 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
● 「統計学関連なんでもあり」の過去ログ--- 041 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る