R - power.prop.test, prop.test und ungleiche Stichprobengrößen in A / B-Tests

8

Angenommen, ich möchte wissen, welche Stichprobengröße ich für ein Experiment benötige, bei dem ich feststellen möchte, ob der Unterschied zwischen zwei Erfolgsanteilen statistisch signifikant ist oder nicht. Hier ist mein aktueller Prozess:

  1. Sehen Sie sich historische Daten an, um Basisvorhersagen zu erstellen. Angenommen, in der Vergangenheit führt das Ergreifen einer Aktion zu einer Erfolgsquote von 10%, während das Nicht-Ergreifen einer Aktion zu einer Erfolgsquote von 9% führt. Angenommen, diese Schlussfolgerungen wurden nicht statistisch validiert, sondern basieren auf relativ großen Datenmengen (über 10.000 Beobachtungen).
  2. Fügen Sie diese Annahmen in power.prop.test ein, um Folgendes zu erhalten:

     power.prop.test(p1=.1,p2=.11,power=.9)
    
     Two-sample comparison of proportions power calculation 
    
              n = 19746.62
             p1 = 0.1
             p2 = 0.11
      sig.level = 0.05
          power = 0.9
    alternative = two.sided
    
  3. Dies sagt mir also, dass ich in jeder Gruppe eines A / B-Tests eine Stichprobengröße von ~ 20000 benötigen würde, um einen signifikanten Unterschied zwischen den Anteilen festzustellen.

  4. Der nächste Schritt besteht darin, das Experiment mit 20.000 Beobachtungen in jeder Gruppe durchzuführen. Gruppe B (keine Maßnahmen ergriffen) hat 2300 Erfolge von 20.000 Beobachtungen, während Gruppe A (ergriffene Maßnahmen) 2200 Erfolge von 20.000 Beobachtungen hat.

  5. Mach einen Prop.Test

    prop.test(c(2300,2100),c(20000,20000))
    
    2-sample test for equality of proportions with continuity correction
    
    data:  c(2300, 2100) out of c(20000, 20000)
    X-squared = 10.1126, df = 1, p-value = 0.001473
    alternative hypothesis: two.sided
    95 percent confidence interval:
    0.003818257 0.016181743
    sample estimates:
    prop 1 prop 2 
    0.115  0.105
    
  6. Wir sagen also, dass wir die Nullhypothese ablehnen können, dass die Proportionen gleich sind.

Fragen

  • Ist diese Methode solide oder zumindest auf dem richtigen Weg?
  • Könnte ich alt="greater"auf prop.test angeben und dem p-Wert vertrauen, obwohl power.prop.test für einen zweiseitigen Test war?
  • Was ist, wenn der p-Wert bei prop.test größer als 0,05 war? Sollte ich davon ausgehen, dass ich eine statistisch signifikante Stichprobe habe, aber es keinen statistisch signifikanten Unterschied zwischen den beiden Anteilen gibt? Ist dem p-Wert in prop.test eine statistische Signifikanz inhärent - dh ist power.prop.test überhaupt notwendig?
  • Was ist, wenn ich keinen 50/50-Split durchführen kann und beispielsweise einen 95/5-Split durchführen muss? Gibt es eine Methode zur Berechnung der Stichprobengröße für diesen Fall?
  • Was ist, wenn ich keine Ahnung habe, wie meine Basisprognose für Proportionen aussehen soll? Wenn ich vermute und die tatsächlichen Proportionen weit davon entfernt sind, wird dies meine Analyse ungültig machen?

Alle anderen Lücken, die Sie füllen könnten, wären sehr dankbar - ich entschuldige mich für die Verschachtelung dieses Beitrags. Vielen Dank!

userNaN
quelle

Antworten:

3

Ist diese Methode solide oder zumindest auf dem richtigen Weg?

Ja, ich denke es ist ein ziemlich guter Ansatz.

Könnte ich bei prop.test alt = "größer" angeben und dem p-Wert vertrauen, obwohl power.prop.test für einen zweiseitigen Test war?

Ich bin nicht sicher, aber ich denke , Sie verwenden müssen alternative="two.sided"für prop.test.

Was ist, wenn der p-Wert bei prop.test größer als 0,05 war? Sollte ich davon ausgehen, dass ich eine statistisch signifikante Stichprobe habe, aber es keinen statistisch signifikanten Unterschied zwischen den beiden Anteilen gibt? Ist dem p-Wert in prop.test eine statistische Signifikanz inhärent - dh ist power.prop.test überhaupt notwendig?

Ja, wenn der p-Wert größer als 0,05 ist, besteht keine Gewissheit, dass zwischen den Proben ein Unterschied erkennbar ist. Ja, dem p-Wert ist eine statistische Signifikanz inhärent, aber der power.prop.test ist noch erforderlich, bevor Sie mit dem Experiment beginnen, um Ihre Stichprobengröße zu bestimmen. power.prop.testwird verwendet, um Ihr Experiment einzurichten, prop.testwird verwendet, um die Ergebnisse Ihres Experiments auszuwerten.

Übrigens - Sie können das Konfidenzintervall für jede Gruppe berechnen und prüfen, ob sie sich auf Ihrem Konfidenzniveau überschneiden. Führen Sie dazu die folgenden Schritte aus, um viele Konfidenzintervalle bei der Verteilung zu berechnen .

Um zu visualisieren, was ich meine, schauen Sie sich diesen Rechner mit Ihren eingesteckten Beispieldaten an: http://www.evanmiller.org/ab-testing/chi-squared.html#!2300/20000;2100/20000@95

Hier ist das Ergebnis:

Konfidenzintervall für jede Gruppe

Beachten Sie die Grafik, die den Bereich des Konfidenzintervalls für jede Gruppe zeigt.

Was ist, wenn ich keinen 50/50-Split durchführen kann und beispielsweise einen 95/5-Split durchführen muss? Gibt es eine Methode zur Berechnung der Stichprobengröße für diesen Fall?

Aus diesem Grund müssen Sie verwenden, power.prop.testda die Aufteilung keine Rolle spielt. Entscheidend ist, dass Sie die Mindeststichprobengröße für jede Gruppe einhalten. Wenn Sie einen 95/5-Split durchführen, dauert es nur länger, bis die minimale Stichprobengröße für die Variation erreicht ist, die die 5% erreicht.

Was ist, wenn ich keine Ahnung habe, wie meine Basisprognose für Proportionen aussehen soll? Wenn ich vermute und die tatsächlichen Proportionen weit davon entfernt sind, wird dies meine Analyse ungültig machen?

Sie müssen eine Linie in den Sand ziehen, einen vernünftigen nachweisbaren Effekt erraten und die erforderliche Stichprobengröße berechnen. Wenn Sie nicht genügend Zeit, Ressourcen usw. haben, um die berechnete Stichprobengröße zu erreichen power.prop.test, müssen Sie den erkennbaren Effekt verringern. Normalerweise richte ich es so ein und gehe verschiedene deltaWerte durch , um zu sehen, wie groß die Stichprobe für diesen Effekt sein muss.

#Significance Level (alpha)
alpha <- .05

# Statistical Power (1-Beta)
beta <- 0.8

# Baseline conversion rate
p <- 0.2   

# Minimum Detectable Effect
delta <- .05

power.prop.test(p1=p, p2=p+delta, sig.level=alpha, power=beta, alternative="two.sided")
Javid Jamae
quelle
1
Javid, wenn Sie einen Teil der Frage in Ihrer Antwort zitieren, können Sie das Markup verwenden, das ein Blockzitat ( > am Anfang des zitierten Blocks) anzeigen soll, anstatt es nur fett zu schreiben.
Glen_b -State Monica
2
"Wenn Sie einen 95/5-Split durchführen, dauert es nur länger, bis die minimale Stichprobengröße für die Variation erreicht ist, die die 5% erreicht." - Während dies ein konservativer Ansatz ist, um zumindest die angegebene Leistung des Tests zu erfüllen, überschreiten Sie tatsächlich die in power.prop.test eingegebene angegebene Leistung, wenn Sie eine "kleine" und eine "große" Gruppe haben (z. B. n1) = 19746, n2 = 375174). Eine genauere Methode zur Erfüllung der Leistungsanforderungen für ungleiche Stichprobengrößen wäre wahrscheinlich wünschenswert.
Underminer