Rの数式インターフェイスを使用しているときにMan-Whitney Uを解釈するにはどうすればよいですか


9

次のデータがあるとします。

set.seed(123)
data <- data.frame(x = c(rnorm(50, 1, 1), rnorm(50, 5, 2)),
                   y = c(rep('A', 50),    rep('B', 50)))

次の箱ひげ図(boxplot(data$x ~ data$y))が得られます。

ボックスプロット

ここで、2つのサンプルが同じ位置パラメーター(中央値または平均値、あるいはその両方)を持っているかどうかをテストしたいとします。私の実際のケースでは、データが明らかに正常はないため、次のようにWilcoxon-Mann-Whitney検定を実行することにしました。

wilcox.test(data$x ~ data$y)

しかし、私は対立仮説として、B data$yの「第2」の因子は、より高い位置パラメーターを持つ分布に由来するということを望みます。alternativeパラメータを「大きい」と「小さい」に設定しようとしましたが、どうやら対立仮説は私が探しているものではありません。たとえば、alternative = "greater"「代替仮説:真の位置シフトは0よりも大きい; alternative = "less"「代替仮説:真の位置シフトは0未満です。」

必要な対立wilcox.test()仮説(BはAよりも高い位置パラメーターを持つ分布から得られる)を得るために、関数をどのように調整できますか?または、代わりに別のテストを使用する必要がありますか?


3
「ロケーションシフト」の意味を考えてください。
Roland

1
どのような意味であなたのデータは正常ではありません。ボックスプロット(おそらく最良の決定方法ではないが、そこに何があるか)に基づくと、それらは確かに十分に正常に見えます。さらに、データをw / で生成したrnorm()ので、それらは正常である必要があります。正常性の仮定の性質について混乱しているのではないでしょうか。このスレッドを読むのに役立つかもしれません:残差は通常分布しているがyはそうでない場合はどうでしょうか
ガン-モニカの復活

1
@Rolandの点を詳しく説明しますが、なぜ問題があると思いますか?それはあなたが望むものをあなたに正確に与えるようです。
ガラ

3
Wilcoxon-Mann-Whitney検定は、直線的な位置シフトよりも一般的な種類の違いに敏感です。たとえば、正の値の場合、スケールシフトの影響も同様に受けます(ログを取るとスケールシフトが場所のシフトに変換されますが、WMW統計は同じです)。たとえば、片側の代替を一般的なとして扱うこともできます(たとえば、Conoverの実用的なノンパラメトリック統計を参照してください)。P(X>Y)>12
Glen_b-モニカを2013

2
(ctd)...一方、ある時点で「* 2つのサンプルが同じ分布からのものかどうかをテストしたい」とおっしゃいました。1つの変数が高くなる傾向(たとえば、類似した場所での変動性の変化、歪度またはピークの変化)よりも偽になる方が多いので、分布の等価性を実際にテストしたい場合は、それらの不等式は、おそらく2つのサンプルKolmogorov-Smirnovを検討する必要があります。「より大きくなる傾向がある」代替案に関心がある場合は、WMWで問題ありません。
Glen_b-モニカを2013

回答:


9

技術的には、参照カテゴリとテストの方向は、因子変数のエンコード方法によって異なります。おもちゃのデータ:

> wilcox.test(x ~ y, data=data, alternative="greater")

    Wilcoxon rank sum test with continuity correction

data:  x by y 
W = 52, p-value = 1
alternative hypothesis: true location shift is greater than 0 

> wilcox.test(x ~ y, data=data, alternative="less")

    Wilcoxon rank sum test with continuity correction

data:  x by y 
W = 52, p-value < 2.2e-16
alternative hypothesis: true location shift is less than 0 

W統計はどちらの場合も同じですが、検定ではサンプリング分布の反対の裾を使用しています。次に、factor変数を見てみましょう。

> levels(data$y)
[1] "A" "B"

「B」を最初のレベルにするために、それを再コーディングできます。

> data$y <- factor(data$y, levels=c("B", "A"))

今私たちは持っています:

> levels(data$y)
[1] "B" "A"

データ自体は変更しなかったこと注意しください。カテゴリ変数が「内部で」エンコードされる方法だけです。

> head(data)
          x y
1 0.4395244 A
2 0.7698225 A
3 2.5587083 A
4 1.0705084 A
5 1.1292877 A
6 2.7150650 A

> aggregate(data$x, by=list(data$y), mean)
  Group.1        x
1       B 5.292817
2       A 1.034404

しかし、テストの方向が逆になりました。

> wilcox.test(x ~ y, data=data, alternative="greater")

    Wilcoxon rank sum test with continuity correction

data:  x by y 
W = 2448, p-value < 2.2e-16
alternative hypothesis: true location shift is greater than 0 

W統計は異なりますが、p値はalternative="less"、元の順序でカテゴリを使用した検定の場合と同じです。元のデータでは、「BからAへの位置シフトは0未満」と解釈され、再コード化されたデータでは「AからBへの位置シフトは0より大きい」になりますが、これは実際には同じ仮説です(ただし、正しい解釈については、質問に対するGlen_bのコメントを参照してください)。

あなたのケースでは、したがって、あなたが望むテストはalternative="less"(または、同等にalternative="greater"、再コード化されたデータで)あるようです。それは役に立ちますか?


うーん、あなたはそこに何かがあるように聞こえます、ゲール。私はあなたの答えを研究して戻ってきます、助けてくれてありがとう!
Waldir Leoncio 2013

わかりましたので、この場合の「より大きい」は常に「第1」レベルを参照していると思いますよね?わかりました。それで問題が解決すると思います。再度、感謝します!
Waldir Leoncio 2013

私はちょうどこの正確な問題に遭遇しました。素晴らしい説明ありがとうございます!
Davy Kavanagh 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.