Exakter Binomialtest mit zwei Stichprobenanteilen in R (und einigen seltsamen p-Werten)

23

Ich versuche die folgende Frage zu lösen:

Spieler A hat 17 von 25 Spielen gewonnen, während Spieler B 8 von 20 Spielen gewonnen hat. Gibt es einen signifikanten Unterschied zwischen beiden Verhältnissen?

Das, was in R zu tun ist, ist das Folgende:

> prop.test(c(17,8),c(25,20),correct=FALSE)

    2-sample test for equality of proportions without continuity correction

data:  c(17, 8) out of c(25, 20)
X-squared = 3.528, df = 1, p-value = 0.06034
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.002016956  0.562016956
sample estimates:
prop 1 prop 2 
  0.68   0.40 

Dieser Test besagt also, dass der Unterschied bei einem Konfidenzniveau von 95% nicht signifikant ist.

Da wir wissen, dass prop.test()nur eine Näherung verwendet wird, möchte ich die Dinge mit einem exakten Binomialtest genauer machen - und das in beide Richtungen:

> binom.test(x=17,n=25,p=8/20)

    Exact binomial test

data:  17 and 25
number of successes = 17, number of trials = 25, p-value = 0.006693
alternative hypothesis: true probability of success is not equal to 0.4
95 percent confidence interval:
 0.4649993 0.8505046
sample estimates:
probability of success 
                  0.68 

> binom.test(x=8,n=20,p=17/25)

    Exact binomial test

data:  8 and 20
number of successes = 8, number of trials = 20, p-value = 0.01377
alternative hypothesis: true probability of success is not equal to 0.68
95 percent confidence interval:
 0.1911901 0.6394574
sample estimates:
probability of success 
                   0.4 

Das ist doch komisch, oder? Die p-Werte sind jedes Mal völlig unterschiedlich! In beiden Fällen sind die Ergebnisse jetzt (hoch) signifikant, aber die p-Werte scheinen eher willkürlich herumzuspringen.

Meine Fragen

  1. Warum sind die p-Werte , dass jedes Mal anders?
  2. Wie führe ich einen Binomialtest mit genau zwei Stichprobenproportionen in R korrekt durch?
vonjd
quelle
3
Obwohl die R-Funktion unterschiedlich ist ( prop.testvs chisq.test), handelt es sich bei dieser Frage um dasselbe zugrunde liegende Konzept . Sie führen in jedem Ihrer drei Beispiele drei verschiedene Tests mit unterschiedlichen "Nullhypothesen" durch.
Affine

Antworten:

26

Wenn Sie nach einem "exakten" Test für zwei Binomialverhältnisse suchen, dann suchen Sie meines Erachtens nach dem Fisher's Exact Test . In R wird es so angewendet:

> fisher.test(matrix(c(17, 25-17, 8, 20-8), ncol=2))
    Fisher's Exact Test for Count Data
data:  matrix(c(17, 25 - 17, 8, 20 - 8), ncol = 2)
p-value = 0.07671
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
  0.7990888 13.0020065
sample estimates:
odds ratio 
  3.101466 

Die fisher.testFunktion akzeptiert ein Matrixobjekt aus den 'Erfolgen' und 'Fehlern' der beiden Binomialproportionen. Wie Sie jedoch sehen können, ist die zweiseitige Hypothese leider immer noch nicht signifikant. Der Fisher's Exact-Test wird jedoch in der Regel nur angewendet, wenn die Zellenzahl niedrig ist (dies bedeutet in der Regel 5 oder weniger, aber einige sagen 10). Daher ist die erstmalige Verwendung von prop.testbesser geeignet.

In Bezug auf Ihre binom.testAnrufe verstehen Sie den Anruf falsch. Beim Laufen binom.test(x=17,n=25,p=8/20)testen Sie, ob sich der Anteil signifikant von einer Population unterscheidet, bei der die Erfolgswahrscheinlichkeit 8/20 beträgt . Ebenso beträgtbinom.test(x=8,n=20,p=17/25) die Erfolgswahrscheinlichkeit mit says 17/25 , weshalb sich diese p-Werte unterscheiden. Daher vergleichen Sie die beiden Proportionen überhaupt nicht.

cdeterman
quelle
2
Vielen Dank, ich habe Ihre Antwort akzeptiert. Wenn Sie sagen, Prop.Test ist "angemessener", was meinen Sie dann genau? Das genauere Ergebnis liefert (wörtlich) Fisher's Exact Test, nicht wahr?
vonjd
4
Dies ist eigentlich etwas, das unter Statistikern diskutiert wird, und ich habe keine absolute Antwort. Historisch gesehen haben Sie Fisher's vermieden, weil es sehr rechenintensiv wird, aber Computer umgehen dies. Im Allgemeinen ist der Fisher's Exact Test jedoch konservativ und wenn Ihre Zahlen groß genug sind, wird die Chi-Quadrat-Statistik (die prop.testberechnet wird) mit größerer Wahrscheinlichkeit keinen Typ-II-Fehler begehen.
Determan
Der entscheidende Punkt für mich ist die unterschiedliche Semantik von prop.testund fisher.test: Ersteres heißt wie prop.test(matrix(c(17, 8, 25, 20), ncol=2))(Angabe der Anzahl der Erfolge in der ersten Spalte und der Anzahl der Versuche in der zweiten Spalte), während letzteres wie fisher.test(matrix(c(17, 25-17, 8, 20-8), ncol=2))(Angabe der Anzahl der Erfolge) heißt und Ausfälle ); denn fisher.testauch die Umsetzung scheint das Ergebnis nicht zu ändern.
krlmlr
Eine leistungsstärkere Alternative ist auch für 2x2-Tests verfügbar - en.wikipedia.org/wiki/Barnard%27s_test
Hamy
4

Es gibt einen Unterschied zwischen zwei Proben und einer Probe im Vergleich zu einer bekannten Hypothese. Also, wenn jemand eine Münze 100 Mal wirft und 55 Mal Köpfe bekommt und die Hypothese eine faire Münze ist, im Gegensatz zu zwei Personen, die eine Münze unbekannter Fairness werfen und eine 55 Mal Köpfe bekommt und die andere 45 Mal. Im ersten Fall versuchen Sie einfach zu identifizieren, ob der Flipper eine faire Münze zu werfen scheint. In letzterem wollen Sie sehen, ob sie Münzen mit der gleichen Fairness werfen. Sie können sehen, ob Sie jeden Spieler mit einer bekannten Wahrscheinlichkeit (45 vs. 50 und 55 vs. 50) ansehen, die anders ist als wenn Sie sie miteinander vergleichen (45 vs. 55).

Ken
quelle
2

Die Syntax der binom.testist Ihre Erfolge in einer Reihe von Studien im Vergleich zu einer Bevölkerung Punktschätzung . Obwohl Sie es als p = 8/20 eingegeben haben, ist die Berechnung so, als ob es sich um eine von Gott gegebene absolute Wahrheit von 0,4 ohne Abweichung handelt. Oder Sie vergleichen die 17 Siege von Spieler A aus 25 mit den hypothetischen 8 Milliarden Siegen von Spieler B aus 20 Milliarden Spielen. Allerdings prop.testvergleicht den Anteil von 17/25 mit allen ihr Potenzial Varianz auf den Anteil von 8/20 mit all seinen eigenen Varianz. Mit anderen Worten : die Abweichung etwa 0,7 (Schätzung von 17/25) und der Varianz etwa 0,4 kann deckend ineinander mit einem resultierenden p = 0,06.

Farrel
quelle
Das würde also bedeuten, dass der richtige Weg zur Lösung der ursprünglichen Frage ist prop.test(c(17,8),c(25,20),correct=FALSE), oder?
Vonjd
1
Ja, das ist richtig. Wenn Sie sich beraten lassen möchten, ob Sie correct = FALSEvs haben sollten, correct = TRUEempfehlen wir Ihnen, die folgenden Statistiken zu
Farrel,
2

Zunächst würde ich vorschlagen, dass Sie eine Kontinuitätskorrektur durchführen möchten, da Sie eine diskrete Verteilung mit einer kontinuierlichen (Chi-Quadrat-) Verteilung schätzen.

Zweitens ist es wichtig, klar zu machen, wie das "Experiment" durchgeführt wurde, wenn Sie so wollen. Wurde die Anzahl der Spiele, die jede Person gespielt hat, im Voraus festgelegt (oder in der vom Design vorgegebenen Umgangssprache der Branche)? Wenn dies der Fall ist und vorausgesetzt, dass die Ergebnisse der einzelnen Spieler unabhängig voneinander sind, handelt es sich um das Produkt von 2 Binomialverteilungen. Wenn stattdessen die Anzahl der Spiele frei variieren konnte (zum Beispiel war die Anzahl der Spiele, die jede Person spielte, variabel, basierend auf der Anzahl der Spiele, die jede Person in einem festen Zeitrahmen absolvieren konnte), dann handelt es sich um ein Multinomial oder Poisson-Verteilung.

Im zweiten Fall ist der Chi-Quadrat-Test (oder was das Gleiche ist, ein Z-Test mit unterschiedlichen Anteilen) angemessen, im ersten Fall jedoch nicht. Im ersten Fall müssen Sie wirklich das genaue Produkt jedes möglichen Binomialergebnisses für jeden Spieler berechnen und diese Wahrscheinlichkeiten für alle Vorkommen summieren, die der gemeinsamen Binomialwahrscheinlichkeit der beobachteten Ergebnisse entsprechen oder darunter liegen (es ist einfach) das Produkt der 2 Binomialzahlen, da die Ergebnisse jedes Spielers unabhängig von den Ergebnissen des anderen Spielers sind).

Erkennen Sie zunächst, dass der zentrale Zweck eines Hypothesentests darin besteht, zu berechnen, wie "selten" oder ungewöhnlich das von Ihnen beobachtete spezifische Ergebnis im Vergleich zu allen anderen möglichen Ergebnissen ist. Dies wird berechnet, indem die Wahrscheinlichkeit des beobachteten Ergebnisses - unter der Annahme, dass die Nullhypothese wahr ist - zusammen mit allen anderen möglichen Ergebnissen gleicher oder geringerer Wahrscheinlichkeit berechnet wird.

Jetzt ist es unumgänglich zu wiederholen, was wir unter "wie selten" verstehen: "Wie gering ist die Wahrscheinlichkeit, das erzielte Ergebnis zu beobachten, im Vergleich zu allen anderen möglichen Ergebnissen?" Nun, die Wahrscheinlichkeit des spezifischen Ergebnisses, das wir beobachtet haben, beträgt 0,0679 * 0,0793 = 0,005115. Betrachten Sie nun ein bestimmtes alternatives Ergebnis: Es ist durchaus möglich, dass Spieler A 7 seiner 20 Spiele und Spieler B 13 seiner 25 Spiele gewonnen haben könnte. Die Wahrscheinlichkeit dieses Ergebnisses ist 0.004959. Beachten Sie, dass dies NIEDRIGER ist als die Wahrscheinlichkeit unseres beobachteten Ergebnisses, daher sollte es im p-Wert enthalten sein. Aber schauen Sie noch einmal: Wenn Sie entscheiden, welche Ergebnisse in Ihre Summe aufgenommen werden sollen, basierend darauf, ob der Unterschied in den Anteilen den Unterschied in den Anteilen in unserem beobachteten Ergebnis übersteigt, wird diese Wahrscheinlichkeit ausgeschlossen! Warum? Weil der Unterschied in den Anteilen für dieses spezifische Ergebnis geringer ist als der Unterschied in den Anteilen für unser beobachtetes Ergebnis. Dies ist jedoch nicht der richtige Fokus - wir müssen uns mit der Wahrscheinlichkeit dieses bestimmten Ergebnisses befassen und darüber, ob es der Wahrscheinlichkeit des beobachteten Ergebnisses entspricht oder darunter liegt!

Eine gute formale Erklärung dafür finden Sie hier:

http://data.princeton.edu/wws509/notes/c5.pdf

Beachten Sie insbesondere die Aussage auf Seite 9, dass "Wenn der Zeilenrand fest ist und das Stichprobenschema binomisch ist, müssen wir das Produktbinomialmodell verwenden, da wir die gemeinsame Verteilung für die beiden Variablen nicht ohne weitere Informationen schätzen können."

user221943
quelle
Informationen zum R-Code, der die Summe der gemeinsamen Binomialwahrscheinlichkeiten berechnet, deren Eintrittswahrscheinlichkeit im Vergleich zur Wahrscheinlichkeit des beobachteten Ergebnisses gleich oder geringer ist, finden Sie in der Antwort auf den folgenden verwandten Beitrag: stats.stackexchange.com/questions/213295/…
user221943