Wie interpretiere ich das Mann-Whitney U, wenn ich die Formelschnittstelle von R verwende?

9

Angenommen, wir haben die folgenden Daten:

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

Was das folgende Boxplot ( boxplot(data$x ~ data$y)) ergibt :

Box-Plot

Angenommen, ich möchte testen, ob die beiden Stichproben dieselben Standortparameter haben (Median und / oder Mittelwert). In meinem realen Fall sind die Daten eindeutig nicht normal , daher habe ich beschlossen, den Wilcoxon-Mann-Whitney-Test wie folgt durchzuführen:

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

Ich möchte jedoch, dass die alternative Hypothese lautet, dass B, data$yder "zweite" Faktor, aus einer Verteilung mit höheren Positionsparametern stammt. Ich habe versucht, den alternativeParameter auf "größer" und "kleiner" zu setzen, aber anscheinend sind die alternativen Hypothesen nicht das, wonach ich suche. Zum Beispiel alternative = "greater"sagt mir "alternative Hypothese: wahre Ortsverschiebung ist größer als 0"; alternative = "less"sagt mir "alternative Hypothese: wahre Ortsverschiebung ist kleiner als 0".

Wie kann ich die wilcox.test()Funktion optimieren , um die gewünschte alternative Hypothese zu erhalten (B stammt aus einer Verteilung mit höheren Positionsparametern als A)? Oder sollte ich stattdessen einfach einen anderen Test verwenden?

Waldir Leoncio
quelle
3
Überlegen Sie, was "Standortverschiebung" bedeutet.
Roland
1
Inwiefern sind Ihre Daten nicht normal? Basierend auf den Boxplots (möglicherweise nicht die beste Art zu entscheiden, aber was ist da) sehen sie auf jeden Fall normal aus. Außerdem haben Sie Ihre Daten mit generiertrnorm() , sodass sie normal sein müssen . Ich frage mich, ob Sie über die Art der Annahme der Normalität verwirrt sind. es kann Ihnen helfen, dieses Thema zu lesen: Was ist, wenn Residuen normal verteilt sind , aber y nicht .
Gung - Reinstate Monica
1
Ich gehe nur auf @ Rolands Punkt ein, aber warum gibt es Ihrer Meinung nach ein Problem? Es scheint Ihnen genau das zu geben, was Sie wollen.
Gala
3
Der Wilcoxon-Mann-Whitney-Test reagiert empfindlicher auf allgemeinere Arten von Unterschieden als eine gerade Ortsverschiebung. Bei positiven Werten ist es beispielsweise gleichermaßen empfindlich gegenüber einer Skalenverschiebung (das Aufnehmen von Protokollen konvertiert die Skalenverschiebung in eine Standortverschiebung, aber die WMW-Statistik ist dieselbe). Sie können sogar eine einseitige Alternative so allgemein wie (siehe z. B. Conovers praktische nichtparametrische Statistik ). P.(X.>Y.)>12
Glen_b -State Monica
2
(ctd) ... Andererseits sagten Sie an einer Stelle: "* Ich möchte testen, ob die beiden Proben aus derselben Verteilung stammen *"; da es mehr Möglichkeiten gibt, dass dies falsch ist, als die Tendenz, dass eine Variable höher ist (z. B. eine Verschiebung der Variabilität mit ähnlichen Positionen oder eine Änderung der Schiefe oder der Spitze), wenn Sie wirklich nur die Gleichheit der Verteilungen vs. Ungleichheit von ihnen sollten Sie wahrscheinlich eine zwei Stichproben Kolmogorov-Smirnov betrachten. Wenn Sie an einer Alternative interessiert sind, die eher größer ist, sollte WMW in Ordnung sein.
Glen_b -State Monica

Antworten:

9

Technisch hängen die Referenzkategorie und die Richtung des Tests von der Art und Weise ab, wie die Faktorvariable codiert wird. Mit Ihren Spielzeugdaten:

> 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 

Beachten Sie, dass die W-Statistik in beiden Fällen dieselbe ist, der Test jedoch entgegengesetzte Schwänze seiner Stichprobenverteilung verwendet. Schauen wir uns nun die Faktorvariable an:

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

Wir können es neu codieren, um "B" zur ersten Ebene zu machen:

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

Jetzt haben wir:

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

Beachten Sie, dass wir die Daten selbst nicht geändert haben , sondern nur die Art und Weise, wie die kategoriale Variable „unter der Haube“ codiert wird:

> 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

Aber die Richtungen des Tests sind jetzt umgekehrt:

> 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 

Die W-Statistik ist unterschiedlich, aber der p- Wert ist der gleiche wie für den alternative="less"Test mit den Kategorien in der ursprünglichen Reihenfolge. Mit den Originaldaten könnte es interpretiert werden als "die Ortsverschiebung von B nach A ist kleiner als 0" und mit den rekodierten Daten wird es "die Ortsverschiebung von A nach B ist größer als 0", aber dies ist wirklich die gleiche Hypothese (aber siehe Glen_bs Kommentare zur Frage für die richtige Interpretation).

In Ihrem Fall scheint es daher der gewünschte Test zu sein alternative="less"(oder gleichwertig alternative="greater"mit den neu codierten Daten). Hilft das?

Gala
quelle
Mm, hört sich so an, als ob du auf etwas stehst, Gaël. Ich werde Ihre Antwort studieren und zurückkommen, danke für die Hilfe!
Waldir Leoncio
Ok, ich denke, "größer" bezieht sich in diesem Fall immer auf die "erste" Ebene, oder? Ok, das hilft und ich denke, es löst den Fall. Danke noch einmal!
Waldir Leoncio
Ich bin gerade auf dieses genaue Problem gestoßen. Danke für die hervorragende Erklärung!
Davy Kavanagh