Ich bin ein Softwareentwickler, der an A / B-Testsystemen arbeitet. Ich habe keinen soliden Hintergrund für Statistiken, habe aber in den letzten Monaten Wissen gesammelt.
In einem typischen Testszenario werden zwei URLs auf einer Website verglichen. Ein Besucher besucht LANDING_URL
und wird dann nach dem Zufallsprinzip an URL_CONTROL
oder weitergeleitet URL_EXPERIMENTAL
. Ein Besucher stellt eine Stichprobe dar, und eine Siegbedingung wird erreicht, wenn der Besucher auf dieser Site eine wünschenswerte Aktion ausführt. Dies stellt eine Umwandlung dar und der Umrechnungskurs ist der Umrechnungskurs (in der Regel als Prozentsatz ausgedrückt). Eine typische Conversion-Rate für eine bestimmte URL liegt im Bereich von 0,01% bis 0,08%. Wir führen Tests durch, um festzustellen, wie neue URLs mit alten URLs verglichen werden. Wenn URL_EXPERIMENTAL
auf outperform gezeigt wird URL_CONTROL
, ersetzen wir URL_CONTROL
mit URL_EXPERIMENTAL
.
Wir haben ein System unter Verwendung einfacher Hypothesentesttechniken entwickelt. Ich habe die Antworten auf eine andere CrossValidated-Frage hier verwendet , um dieses System zu entwickeln.
Ein Test ist wie folgt aufgebaut:
- Der geschätzte Umrechnungskurs
CRE_CONTROL
vonURL_CONTROL
wird anhand historischer Daten berechnet. - Die gewünschte Ziel-Conversion-Rate
CRE_EXPERIMENTAL
vonURL_EXPERIMENTAL
wird eingestellt. - Typischerweise wird ein Signifikanzniveau von 0,95 verwendet.
- Typischerweise wird eine Potenz von 0,8 verwendet.
Zusammen werden alle diese Werte verwendet, um den gewünschten Stichprobenumfang zu berechnen. Ich benutze die R-Funktion power.prop.test
, um diese Stichprobengröße zu erhalten.
Ein Test wird ausgeführt, bis alle Proben gesammelt wurden. Zu diesem Zeitpunkt werden die Konfidenzintervalle für CR_CONTROL
und CR_EXPERIMENTAL
berechnet. Überlappen sie sich nicht, kann ein Sieger mit einem Signifikanzniveau von 0,95 und einer Potenz von 0,8 ermittelt werden.
Die Benutzer unserer Tests haben jedoch zwei Hauptbedenken:
1. Kann der Test nicht abgebrochen werden, wenn zu einem bestimmten Zeitpunkt während des Tests genügend Proben gesammelt wurden, um einen eindeutigen Gewinner zu ermitteln?
2. Wenn am Ende des Tests kein Gewinner ermittelt wird, können wir den Test länger durchführen, um zu sehen, ob wir genügend Proben sammeln können, um einen Gewinner zu finden?
Es sollte beachtet werden, dass es viele kommerzielle Tools gibt, die es ihren Benutzern ermöglichen, genau das zu tun, was unsere eigenen Benutzer wünschen. Ich habe gelesen, dass es viele Irrtümer gibt, aber ich bin auch auf die Idee einer Stoppregel gestoßen und möchte die Möglichkeit untersuchen, eine solche Regel in unseren eigenen Systemen zu verwenden.
Hier sind zwei Ansätze, die wir berücksichtigen möchten:
1. power.prop.test
Vergleichen Sie mit die aktuell gemessenen Umrechnungskurse mit der aktuellen Anzahl der Proben und prüfen Sie, ob genügend Proben gesammelt wurden, um einen Gewinner zu ermitteln.
Beispiel: Es wurde ein Test eingerichtet, um festzustellen, ob das folgende Verhalten in unserem System vorliegt:
CRE_CONTROL
: 0,1CRE_EXPERIMENTAL
: 0,1 * 1,3- Mit diesen Parametern
N
beträgt der Stichprobenumfang 1774.
Wenn der Test jedoch fortschreitet und 325 Proben erreicht, CRM_CONTROL
beträgt die gemessene Umwandlungsrate für die Kontrolle 0,08 und CRM_EXPERIMENTAL
0,15. power.prop.test
wird mit diesen Umrechnungskursen ausgeführt und N
ergibt 325. Genau die Anzahl der Proben, die erforderlich sind, CRM_EXPERIMENTAL
um den Gewinn zu erklären ! An dieser Stelle hoffen wir, dass der Test beendet werden kann. Wenn der Test 1774 Proben erreicht, aber kein Gewinner gefunden wird, erreicht er 2122 Proben, was ausreicht, um zu zeigen, dass CRM_CONTROL
0,1 und CRM_EXPERIMENTAL
0,128 ein Ergebnis sind, bei dem ein Gewinner ermittelt werden kann.
In einer ähnlichen Frage wiesen die Benutzer darauf hin, dass ein solcher Test weniger glaubwürdig ist, da er zu einem frühen Stopp mit weniger Stichproben ermutigt und außerdem anfällig für Schätzungsfehler und eine erhöhte Anzahl von Fehlern des Typs I und II ist. Gibt es eine Möglichkeit, diese Stoppregel zum Funktionieren zu bringen? Dies ist unser bevorzugter Ansatz, da er für uns weniger Programmierzeit bedeutet. Vielleicht könnte diese Abbruchregel funktionieren, indem eine Art numerische Bewertung oder Bewertungen angeboten werden, die die Glaubwürdigkeit des Tests messen, sollte er vorzeitig abgebrochen werden?
2. Verwenden von sequentieller Analyse oder SPRT .
Diese Testmethoden sind genau auf die Situation zugeschnitten, in der wir uns befinden: Wie können unsere Benutzer einen Test starten und so beenden, dass sie beim Testen keine übermäßige Zeit verlieren? Entweder läuft ein Test zu lange oder es muss ein Test mit anderen Parametern neu gestartet werden.
Von den beiden oben genannten Methoden bevorzuge ich SPRT, weil die Mathematik für mich ein bisschen leichter zu verstehen ist und weil es so aussieht, als wäre es möglicherweise einfacher zu programmieren. Ich verstehe jedoch nicht, wie die Wahrscheinlichkeitsfunktion in diesem Zusammenhang verwendet wird. Wenn jemand ein Beispiel für die Berechnung des Wahrscheinlichkeitsverhältnisses konstruieren könnte, die kumulative Summe des Wahrscheinlichkeitsverhältnisses, und ein Beispiel durcharbeiten könnte, das eine Situation veranschaulicht, in der man die Überwachung fortsetzen würde, wenn man die Nullhypothese und die Alternativhypothese akzeptieren würde, Dies würde uns helfen, festzustellen, ob SPRT der richtige Weg ist.
Antworten:
Dies ist ein interessantes Problem und die damit verbundenen Techniken haben eine Vielzahl von Anwendungen. Sie werden oft als "Interim Monitoring" -Strategien oder "Sequential Experimental Design" bezeichnet (der Wikipedia-Artikel, auf den Sie verwiesen haben, ist leider etwas spärlich), aber es gibt mehrere Möglichkeiten, dies zu tun. Ich denke, @ user27564 ist ein Irrtum, wenn man sagt, dass diese Analysen unbedingt bayesianisch sein müssen - es gibt sicherlich auch häufigere Ansätze für die Zwischenüberwachung.
Mit einer ähnlichen Logik können Sie die "Unvermeidlichkeitspunkte" für andere Tests finden, bei denen:
Dies ist wahrscheinlich einfach zu implementieren. Berechnen Sie die Stoppkriterien offline und fügen Sie sie dann einfach in den Code Ihrer Site ein. Sie können dies jedoch häufig noch verbessern, wenn Sie bereit sind, das Experiment nicht nur dann abzubrechen, wenn das Ergebnis unvermeidlich ist , aber wenn es auch sehr unwahrscheinlich ist, zu ändern.
Es gibt auch eine Reihe anderer Ansätze. Sequentielle Gruppenmethoden wurden für Situationen entwickelt, in denen Sie möglicherweise nicht in der Lage sind, eine festgelegte Anzahl von Themen zu erhalten und die Themen mit variablen Raten einströmen. Abhängig vom Traffic Ihrer Site möchten Sie dies möglicherweise nicht untersuchen.
Es gibt eine ganze Reihe von R-Paketen, die in CRAN fließen, wenn Sie dies für Ihre Analyse verwenden. Ein guter Ausgangspunkt könnte die Aufgabenansicht für klinische Studien sein , da ein Großteil dieser Arbeit aus diesem Bereich stammt.
[*] Nur ein freundlicher Rat: Seien Sie vorsichtig, wenn Sie Signifikanzwerte betrachten, die aus einer sehr großen Anzahl von Datenpunkten berechnet wurden. Wie Sie mehr und mehr Daten zu sammeln, Sie werden schließlich ein signifikantes Ergebnis finden, aber der Effekt könnte trivialen klein sein. Wenn Sie zum Beispiel den ganzen Planeten gefragt haben, ob er A oder B bevorzugt, ist es sehr unwahrscheinlich, dass Sie einen exakten 50: 50-Split sehen, aber es lohnt sich wahrscheinlich nicht, Ihr Produkt umzurüsten, wenn der Split 50.001: 49.999 beträgt. Überprüfen Sie auch weiterhin die Effektgröße (dh die Unterschiede in den Conversion-Raten)!
quelle
Sie können früh aufhören, aber wenn Sie dies tun, sind Ihre p-Werte nicht einfach zu interpretieren. Wenn Sie sich nicht für die Interpretation Ihres p-Werts interessieren, spielt es keine Rolle, wie die Antwort auf Ihre ersten beiden Fragen "Nein" lautet (zu viel). Ihr Klient scheint pragmatisch zu sein, daher ist die wahre Interpretation eines p-Wertes wahrscheinlich kein wichtiger Punkt für Sie.
Ich kann nicht mit dem zweiten Ansatz sprechen, den Sie vorschlagen.
Der erste Ansatz ist jedoch nicht auf festem Grund. Normale Approximationen von Binomialverteilungen gelten nicht für so niedrige Proportionen (die Methode, die power.prop.test verwendet, auch die Methode, die Cohen in seinem klassischen Buch über Potenz verwendet). Darüber hinaus gibt es meines Wissens keine Lösung für die geschlossene Leistungsanalyse für Proportionalitätstests mit zwei Stichproben (vgl. Wie kann man eine binomiale Leistungsanalyse mit zwei Gruppen ohne Verwendung normaler Näherungen durchführen? ). Es gibt jedoch bessere Methoden zur Approximation der Konfidenzintervalle von Proportionen (vgl. Das Paket binom). Sie können nicht überlappende Konfidenzintervalle als Teillösung verwenden. Dies ist jedoch nicht dasselbe wie die Schätzung eines p-Werts und bietet daher keinen direkten Weg zur Stromversorgung. Ich hoffe, jemand hat eine nette geschlossene Lösung, die er mit uns allen teilen wird. Wenn ich auf eine stoße, aktualisiere ich die oben genannte Frage. Viel Glück.
Bearbeiten: Während ich darüber nachdenke, lassen Sie mich hier für einen Moment völlig pragmatisch. Ihr Kunde möchte, dass dieser Test beendet wird, wenn er sicher ist, dass der Teststandort besser funktioniert als der Kontrollstandort. Nachdem Sie eine anständige Stichprobe erhalten haben, können Sie, wenn Sie nicht bereit sind, eine Entscheidung zu treffen, einfach das Verhältnis Ihrer zufälligen Zuordnung zu der Seite anpassen, die "gewinnt". Wenn es nur ein Ausrutscher wäre, würde die Regression zum Mittelwert zunehmen, Sie würden weniger sicher sein und das Verhältnis verringern. Wenn Sie einigermaßen sicher sind, beenden Sie den Vorgang und erklären Sie einen Gewinner. Der optimale Ansatz würde wahrscheinlich eine Bayes'sche Aktualisierung beinhalten, aber ich weiß nicht genug über dieses Thema, um Sie zu leiten. Ich kann Ihnen jedoch versichern, dass die Mathematik selbst nicht allzu schwierig ist, auch wenn sie manchmal nicht intuitiv erscheint.
quelle
Die Fragen, die Sie haben, sind typische Fragen, die in statistischen Tests auftauchen. Es gibt zwei Arten von Statistiken, die Frequentist- und die Bayesian-Statistik. Die häufigste Antwort auf Ihre beiden Fragen ist ganz einfach:
Sobald Sie Ihr Setup definiert haben, dürfen Sie nicht einmal die Daten betrachten (Blindanalyse). Aus der Sicht der Frequentisten führt kein Weg daran vorbei, kein Betrügen, keine Tricks! (BEARBEITEN: Natürlich gibt es Versuche, dies zu tun, und sie funktionieren auch, wenn sie richtig verwendet werden, aber die meisten von ihnen sind dafür bekannt, dass sie Verzerrungen einführen.)
Aber da ist die bayesianische Sichtweise, die ganz anders ist. Der Bayes'sche Ansatz benötigt im Gegensatz zu den Frequentisten einen zusätzlichen Input, die a priori Wahrscheinlichkeitsverteilung. Wir können es auch Vorwissen oder Vorurteile nennen. Nachdem dies geschehen ist, können wir die Daten / Messungen verwenden, um unser Wissen auf die a-posteriori-Wahrscheinlichkeit zu aktualisieren. Der Punkt ist, wir können die Daten verwenden und noch mehr können wir die Daten an jedem Zwischenpunkt der Messung verwenden. In jedem Update ist der letzte Posterior unser neuer Prior und wir können ihn mit einer neuen Messung nach unserem aktuellen Wissen aktualisieren. Kein Problem beim vorzeitigen Anhalten!
Ich fand einen Vortrag, in dem Sie ähnliche Probleme diskutierten, wie Sie sie hatten, und den ich oben beschrieben habe: http://biostat.mc.vanderbilt.edu/wiki/pub/Main/JoAnnAlvarez/BayesianAdaptivePres.pdf
Aber bist du dir wirklich sicher, dass du das überhaupt brauchst? Es sieht so aus, als ob auf einem System entschieden wird, wo eine Anfrage verknüpft werden soll. Dafür müssen Sie mit einem Hypothesentest nicht nachweisen, dass Ihre Entscheidungen statistisch korrekt sind. Haben Sie jemals eine Cola gekauft, weil Sie ausschließen könnten, dass Pepsi mit einer Wahrscheinlichkeit von 95% "im Augenblick" ist? Es reicht aus, diejenige zu nehmen, die einfach besser ist, ohne eine Hypothese auszuschließen. Das wäre ein trivialer Algorithmus: Berechne die Unsicherheit von Rate A, berechne die Unsicherheit von B. Nimm die Differenz beider Raten und teile sie b die Unsicherheit der Differenz. Das Ergebnis ist in etwa die Bedeutung des Unterschieds im Sigma. Dann nehmen Sie einfach alle Links, bei denen es mehr als zwei oder drei Sigma-Unterschiede gibt. Nachteil,
quelle
vielleicht könnten da ja einige methoden zum einsatz kommen wie
Dadurch wird der P-Cutoff basierend auf den Ergebnissen angepasst, und Sie können die Datenerfassung unterbrechen und Ressourcen und Zeit sparen.
Vielleicht könnten hier andere Werke hinzugefügt werden.
quelle