Ist der Wilcoxon-Rang-Summen-Test der richtige Test, um festzustellen, ob sich die Gesamtspenden unterscheiden?

8

Hintergrund:

Meine Software bittet Benutzer um optionale Spenden in beliebiger Höhe. Ich habe Testspendenanfragen unter den Benutzern aufgeteilt, um den besten Weg zu finden, um zu fragen: 50% erhalten Anforderungsversion 1, 50% erhalten Anforderungsversion 2, und wir sehen, welche besser ist.

Fast alle Benutzer geben 0 US-Dollar, aber einige spenden. Die Ergebnisse könnten folgendermaßen aussehen:

         Number of users  Number of donations   Dollar amounts donated
GROUP A  10,000           10                    40,20,20,20,15,10,10,5,5,5
GROUP B  10,000           15                    50,20,10,10,10,10,10,10,5,5,5,5,5,5,5

Ich möchte wissen, ob eine Gruppe ein Gewinner ist oder ob es ein Unentschieden ist oder ob wir eine größere Stichprobe benötigen, um sicherzugehen. (Dieses zur Diskussion einfach gehaltene Beispiel benötigt mit ziemlicher Sicherheit eine größere Stichprobe, um signifikante Ergebnisse zu erzielen.)

Was ich schon messe:

  1. Hatte eine Gruppe eine signifikant größere Anzahl von Spenden? Wie viel größer? Ich messe diesen p-Wert und das Konfidenzintervall mit dem ABBA Thumbtack-Tool , wobei ich nur die Anzahl der Spenden und die Anzahl der Benutzer verwende und Dollarbeträge ignoriere. Die Methodik ist in "Was sind die zugrunde liegenden Statistiken?" Beschrieben. Abschnitt dieses Links. (Es geht mir über den Kopf, aber ich glaube, es berechnet das Konfidenzintervall, indem die Differenz zwischen den Spendenraten als normale Zufallsvariablen für das Agresti-Couli-Intervall verwendet wird.)
  2. Hat eine Gruppe einen signifikant anderen Gesamtbetrag gespendet ? Ich messe diesen p-Wert, indem ich einen Permutationstest durchführe: wiederholtes Ummischen aller 2N-Probanden in 2 N-Probandengruppen, Messen der Differenz des Gesamtgeldes zwischen den Gruppen jedes Mal und Ermitteln des Anteils der Shuffles mit einer Differenz> = der beobachteten Unterschied. (Ich glaube, dies ist gültig, basierend auf diesem Video der Khan Academy , das dasselbe für Cracker anstelle von Dollars tut.)

Rs wilcox.test:

Ein paar Fragen zu wilcox.test()R:

  1. Wenn ich wilcox.test(paired=FALSE)die obige Datentabelle füttere, würde sie neue Fragen beantworten, die von meinen oben genannten Tools noch nicht beantwortet wurden, und mir mehr Einblicke geben, mit denen ich entscheiden kann, ob ich meinen Test fortsetzen / einen Gewinner erklären / ein Unentschieden erklären soll?
  2. Wenn ja, welche genaue Frage würde es beantworten?
Michael Gundlach
quelle
Könnten Sie beschreiben, was die beiden Dinge sind, die Sie gerade tun, anstatt sich auf Links zu verlassen? Insbesondere der zweite Link verweist auf ein Video, das ich und andere nicht in Anspruch nehmen werden, um herauszufinden, was Sie fragen.
Aaron verließ Stack Overflow
1
Bei dieser Frage geht es eindeutig darum zu verstehen, wie sich die verschiedenen Tests auf die Studienziele beziehen. Es hat kaum eine Verbindung zur Codierung. Es ist beim Thema hier, und wäre Wegthema auf Stack - Überlauf .
Gung - Reinstate Monica
@ Aaron: fertig. Danke für die Rückmeldung. Ich befürchtete, die Textwand würde die Leute davon abhalten, die Frage überhaupt zu lesen. Schwer zu teilen, teste meine Fragen, um die Antworten auf CrossValidated zu optimieren;)
Michael Gundlach

Antworten:

7

Wenn Sie wilcox.test()das Argument verwenden paired(beachten Sie, dass dies Kleinbuchstaben sind und die RGroß- und Kleinschreibung beachtet wird ) FALSE, führen Sie einen Mann-Whitney- Test ausU . Dies ist ein Test der stochastischen Dominanz . Wenn die Verteilungen gleich wären und Sie eine Beobachtung aus jeder Version zufällig ausgewählt hätten, hätte die Beobachtung aus Version 2 eine 50% -50% ige Chance, höher zu sein als die Beobachtung aus Version 1. Andererseits wird der Wert aus gezogen Version 2 hat möglicherweise eine Wahrscheinlichkeit von mehr als 50%, größer als (kleiner als) der Wert aus Version 1 zu sein. Dies ist eine stochastische Dominanz. Es wird nichts darüber gesagt, wie viel größer oder kleiner ist, nur dass es größer oder kleiner ist.

Das passt mir nicht gut zu Ihren Zielen. Sie möchten das meiste Geld, das als die größte mittlere Spende multipliziert mit der Anzahl der Benutzer verstanden werden kann. Aufgrund von Versatz ist es möglich, dass eine Version den größten Mittelwert / die größte Summe haben kann, die andere Version jedoch stochastisch größer ist. (Wenn dies der Fall wäre, würden Sie die frühere Version wollen.) Da dies letztendlich das ist, was Sie wollen, ist ein Test, der für diesen Aspekt der Distributionen spezifisch ist, für Sie am besten geeignet.

Ich erkenne, dass Ihre Daten nicht im entferntesten normal sind, und daher wäre der Test (an den die meisten Leute beim Vergleich zweier Gruppen zuerst denken würden) unangemessen. Bei zwei kontinuierlichen, aber nicht normalen Gruppen könnten die meisten Menschen ebenfalls automatisch mit dem Mann-Whitney gehen. In Ihrem Fall würde ich aus dem oben genannten Grund einen Permutationstest durchführen. (Ich nehme an, dass Sie dies getan haben, wenn ich es richtig verstanden habe.) Ein Permutationstest ist hier gültig, da Sie den beiden Gruppen zufällig Benutzer zugewiesen haben. daher sind sie austauschbar. t

Um einen Permutationstest durchzuführen, mischen Sie einfach den Gruppierungsindikator und berechnen die Mittelwerte und eine Differenz zwischen den Mittelwerten. Wenn Sie dies viele Male tun, können Sie eine Stichprobenverteilung der Differenz zwischen den Mitteln erstellen. Sie können Ihren beobachteten Unterschied mit der Stichprobenverteilung vergleichen. Nehmen Sie für einen zweiseitigen Test den kleineren Anteil über Ihre Differenz hinaus und multiplizieren Sie ihn mit zwei. Das Produkt ist direkt als Wert interpretierbar . Hier ist ein Beispiel mit Ihren Daten: p

A            = c(rep(0, 9990), 40,20,20,20,15,10,10,5,5,5)
B            = c(rep(0, 9985), 50,20,10,10,10,10,10,10,5,5,5,5,5,5,5)
realized.dif = mean(B)-mean(A);  realized.dif  # [1] 0.0015

set.seed(6497)
donations = stack(list(A=A, B=B))
values    = donations$values
ind       = donations$ind
difs      = vector(length=1000)
for(i in 1:1000){
  ind     = sample(ind)
  difs[i] = mean(values[ind=="B"])-mean(values[ind=="A"])
}
difs = sort(difs)
mean(difs>=realized.dif)    # [1] 0.459  # a 1-tailed test, if Ha: B>A a-priori
mean(difs>=realized.dif)*2  # [1] 0.918  # a 2-tailed test

In Bezug auf die erste Studienfrage, dh "welche Version hat eine größere Anzahl von Spenden erbracht", während ich zugebe, dass jeder ABBA liebt , können Sie dies auch tun R. Ich würde einen Test der Differenz zweier Proportionen verwenden. In , das ist . Hier ist ein Beispiel mit Ihren Daten: zRprop.test()

prop.test(rbind(c(10, 9990),
                c(15, 9985) ))
#  2-sample test for equality of proportions with continuity correction
# 
# data:  rbind(c(10, 9990), c(15, 9985))
# X-squared = 0.6408, df = 1, p-value = 0.4234
# alternative hypothesis: two.sided
# 95 percent confidence interval:
#   -0.0015793448  0.0005793448
# sample estimates:
# prop 1 prop 2 
# 0.0010 0.0015 
gung - Monica wieder einsetzen
quelle
Schöne Antwort und +2 wenn ich für den ABBA Link könnte. :)
Aaron verließ Stack Overflow
+1 Gute Diskussion, insbesondere über Mittelvergleiche. Beachten Sie, dass das Beispiel in der Frage eine nahezu normale Stichprobenverteilung aufweist, da es keine großen Spenden gibt. Die Anzahl der Spenden mit einem bestimmten Wert in Gruppe A ist Binomial, und mit hoher Genauigkeit sind alle diese Zählungen ungefähr unabhängig. Der T-Test sollte gut funktionieren. Hier ist ein Diagramm der Nullverteilung : b <- function(n) dbinom(0:n, n, 1/2); p <- apply(expand.grid(b(1), b(1), b(4), b(6), b(10)), 1, prod); n <- as.matrix(expand.grid(0:1, 0:1, 0:4, 0:6, 0:10)) %*% c(50,40,20,10,5); plot(dist <- aggregate(p, list(n), sum)).
whuber
1
Ich bin nicht kritisch, aber hier gehe ich hin: Wenn Sie die wenigen Spenden untersuchen, können Sie schnell entscheiden, ob Sie einen T-Test verwenden oder nicht. Wenn Sie dies nicht können, hängt der Mittelwertunterschied stark von diesen wenigen Ausreißern ab und ist daher wahrscheinlich nicht signifikant. Diese Beobachtungen vereinfachen die Analyse und legen nahe, dass man sich auf normaltheoretische Stichprobengrößenberechnungen stützen könnte, um abzuschätzen, wie groß eine Stichprobe sein würde. Noch besser wäre es jedoch, ein sequentielles Abtastdesign zu verwenden.
whuber
1
@Torvon für Permutationstests? Es gibt viele, aber ich bezweifle, dass Sie eine brauchen - dies ist eine ziemlich gut etablierte und übliche Technik.
Gung - Reinstate Monica
1
@Torvon, anstatt einfach die mittlere Differenz zu berechnen und zu speichern, führen Sie ein MW U aus und speichern Sie es.
Gung - Reinstate Monica
1

@ gungs Antwort ist richtig. Ich möchte jedoch hinzufügen, dass der Mittelwert möglicherweise nicht robust ist und daher möglicherweise nicht der "richtige" Index für die Darstellung der Zentralität Ihrer Verteilung ist, da Ihre Daten möglicherweise verzerrt sind und einen großen rechten Schwanz aufweisen. Daher würde ich es auch mit robusteren Lösungen wie Medianen oder abgeschnittenen Mitteln versuchen.

utobi
quelle
4
Einer der wichtigsten Punkte von @ gung ist, dass der Median und die abgeschnittenen Mittelwerte wahrscheinlich irrelevant sind. (Siehe den Abschnitt "Passend zu Ihren Zielen".) Die mittlere Spende ist uns am wichtigsten. Obwohl Ihre robusten Lösungen möglicherweise prozedural einfach zu verwenden sind, kann es wenig hilfreich sein, die richtige Antwort auf die falsche Frage zu erhalten - oder noch schlimmer.
whuber