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.