Wann ist der Bayes'sche A / B-Test zu beenden?


10

Ich versuche, A / B-Tests auf Bayes'sche Weise durchzuführen , wie in Probabilistic Programming for Hackers und Bayesian A / B-Tests . Beide Artikel gehen davon aus, dass der Entscheider allein aufgrund der Wahrscheinlichkeit eines Kriteriums, z. B. , entscheidet, welche der Varianten besser ist , daher ist besser. Diese Wahrscheinlichkeit liefert keine Informationen darüber, ob genügend Daten vorhanden waren, um daraus Schlussfolgerungen zu ziehen. Daher ist mir unklar, wann der Test abgebrochen werden soll.A.P(pA>pB)=0.97A

Angenommen , es gibt zwei binäre RVs, und , und ich möchte , um abzuschätzen , wie wahrscheinlich es ist , dass und basierend auf den Beobachtungen von und . Angenommen, und Posterioren sind Beta-verteilt.B p A > p B p A - p B.ABpA>pBABpApB.pApBpA>5%ABpApB

Da ich die Parameter für und , kann ich die Posterioren und schätzen . Beispiel in Python:p A.α,βp B.pA|dataP ( p A > p B | Daten )pB|dataP(pA>pB | data)

import numpy as np

samples = {'A': np.random.beta(alpha1, beta1, 1000),
           'B': np.random.beta(alpha2, beta2, 1000)}
p = np.mean(samples['A'] > samples['B'])

Ich könnte zum Beispiel P(pA>pB)=0.95 . Jetzt möchte ich so etwas wie P(pA>pB | data)=0.95±0.03 .

Ich habe über glaubwürdige Intervalle und Bayes-Faktoren recherchiert, kann aber nicht verstehen, wie man sie für diesen Fall berechnet, wenn sie überhaupt anwendbar sind. Wie kann ich diese zusätzlichen Statistiken berechnen, damit ich ein gutes Beendigungskriterium habe?


1
Ein guter Artikel dazu, überprüfen Sie den Anhang für ein Beispiel mit Berechnungen ... support.google.com/analytics/answer/2844870?hl=de
Fabio Beltramini

Antworten:


10

Ich bin froh, dass Sie dieses Beispiel erwähnt haben, da ein Projekt, an dem ich arbeite, darin besteht, ein ganzes Kapitel über Bayes'sche A / B-Tests zu schreiben.

Wir sind an zwei Größen interessiert: und einem Maß für "Zunahme". Ich werde zuerst die diskutieren .P(pA>pB|data)P(pA>pB|data)

Es gibt keine Fehlergrenzen für , es ist eine wahre Größe. Dies ähnelt der Aussage "Was ist der Mittelwert des Seitenzahns?", Es gibt nur einen Mittelwert, und wir können ihn berechnen, indem wir den Durchschnitt aller Stichproben nehmen (ich ignoriere alle Monte-Carlo-Fehler, da sie reduziert werden können zur Bedeutungslosigkeit durch mehr Stichproben). Ich denke, Sie mischen unbekannte Größen, wobei wir so etwas wie "+ - 3%" sagen können, und posterior berechnete Größen.P(pA>pB|data)

Was ich sage ist, dass sicher ist: Ihrer beobachteten Daten und Prioritäten ist dies Ihre Schlussfolgerung.P(pA>pB|data)=0.95

Beachten Sie, dass wir schnell kennen: Es sind nur mäßige Beobachtungsmengen erforderlich, um und ausreichend zu . Es ist viel schwieriger und interessanter zu messen, welchen Anstieg A gegenüber B hat (und oft ist dies das Ziel eines A / B-Tests: Um wie viel erhöhen wir die Conversions). Sie haben erwähnt, dass 5% - wie sicher sind Sie sich dessen?pA>pBpApBpApBpB>

Beachten Sie, dass zwar ein Boolescher ist und daher leicht zu messen ist, jedoch sicherlich kein Boolescher ist. Es ist eine Verteilung der Möglichkeiten:pA>pBpApBpB

Geben Sie hier die Bildbeschreibung ein

Wenn immer mehr Daten erfasst werden, konvergiert diese Verteilung gegen den tatsächlichen relativen Anstieg, man kann sagen, dass sich die Verteilung stabilisiert. Hier schlage ich vor, über die Beendigung des Experiments nachzudenken. Sobald sich diese Verteilung zu "beruhigen" scheint und wir uns über den Anstieg sicher fühlen können, beenden Sie das Experiment.


Danke für die Antwort! Ich freue mich darauf, das neue Kapitel bald zu sehen. Im ich eine Stichprobenvarianz von und den Test, wenn er sich Null nähert. pApBpA
Bogdan Kulynych

hey @ Cam.Davidson.Pilon, danke für deine Antwort. Ich bin immer noch verwirrt, wenn ich Wahrscheinlichkeiten wie: "Die Wahrscheinlichkeit ist, dass A 10% besser ist als B X%" gebe. Ich habe 2 Verteilungen erstellt. einer ist 10% besser als der andere und verwendet einen riesigen N-Wert, daher hat der Diff (A / B-1) eine normalähnliche Verteilung mit einem Mittelwert von 10%. Daher gibt (diff> .10) .mean () ~ 50% zurück, aber sollte es nicht 100% sein?
CanCeylan

@CanCeylan Haben Sie Code zum Teilen? Ich bin nicht sicher, wie Sie die Distributionen erstellt haben ...
Cam.Davidson.Pilon

0

Ich habe mit Möglichkeiten experimentiert, einen Bayes'schen A / B-Test zu stoppen, und Sie haben Recht - es gibt nicht so viele offensichtliche Möglichkeiten, um herum zu googeln. Die Methode, die mir am besten gefällt, ist eine präzisionsbasierte Methode, die darauf basiert: http://doingbayesiandataanalysis.blogspot.com/2013/11/optional-stopping-in-data-collection-p.html . Ich habe jedoch nicht viel mathematische Literatur dazu gefunden, daher ist es im Moment nur eine gute Heuristik.

Ich habe festgestellt, dass meine Tests zwar viel länger dauern müssen, um die gewünschte Genauigkeit zu erreichen, aber intuitiver sind und Sie Zeit für die Verteilung von , um sich in einem Ziel zu "beruhigen" Weg, dh anstatt es ins Auge zu fassen.P(A>B|data)


0

Es scheint zwei Hauptansätze für die Entscheidungsfindung bei Bayes'schen A / B-Tests zu geben. Die erste basiert auf einer Arbeit von John Kruschke von der Indiana University (K. Kruschke, Bayesian Estimation ersetzt den t-Test, Journal of Experimental Psychology: General, 142, 573 (2013)). Die in diesem Dokument verwendete Entscheidungsregel basiert auf dem Konzept der Region of Practical Equivalence (ROPE).

Eine andere Möglichkeit besteht darin, das Konzept eines erwarteten Verlusts zu verwenden. Es wurde von Chris Stucchio (C. Stucchio, Bayesian A / B Testing bei VWO) vorgeschlagen. Es ist ein anderer Ansatz, den ich in Betracht ziehen würde.

Der von Cam.Davidson.Pilon vorgeschlagene Ansatz, die posteriore Verteilung von ist sehr sinnvoll und würde gut in die ROPE-Methode passen. Die Verwendung der ROPE-Methode hat den zusätzlichen Vorteil, dass auch eine Regel angegeben wird, wann das Experiment nicht schlüssig ist (nicht nur, wenn die Varianten "A" oder "B" als Gewinner deklariert werden können). (pApB)/pA

Weitere Informationen finden Sie in diesem Blogbeitrag: Bayesian A / B Testing: Eine Schritt-für-Schritt-Anleitung . Es enthält auch einige Python-Codefragmente, die hauptsächlich auf einem auf Github gehosteten Python-Projekt basieren .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.