Quando terminare il test A / B bayesiano?


10

Sto provando a fare i test A / B in modo bayesiano, come nella Programmazione probabilistica per hacker e nei test A / B bayesiani . Entrambi gli articoli presumono che il decisore decida quale delle varianti è meglio basata unicamente sulla probabilità di alcuni criteri, ad esempio , quindi è migliore. Questa probabilità non fornisce alcuna informazione sull'esistenza di una quantità sufficiente di dati per trarne delle conclusioni. Quindi, non mi è chiaro quando fermare il test.AP(pA>pB)=0.97A

Supponiamo che ci siano due camper binari, e , e voglio valutare quanto è probabile che , e sulla base delle osservazioni di e . Supponiamo inoltre che i posteriori e siano distribuiti in beta.B p A > p B p A - p BABpA>pBABpApBpApBpA>5%ABpApB

Dato che posso trovare i parametri per e , posso campionare i posteriori e stimare . Esempio in Python:p Aα,βp BpA|dataP ( p A > p B | dati )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'])

Potrei ottenere, ad esempio, . Ora vorrei avere qualcosa come .P ( p A > p B | dati ) = 0,95 ± 0,03P(pA>pB)=0.95P(pA>pB | data)=0.95±0.03

Ho studiato intervalli credibili e fattori di Bayes, ma non riesco a capire come calcolarli per questo caso se sono applicabili. Come posso calcolare queste statistiche aggiuntive in modo da avere un buon criterio di terminazione?


1
Un buon articolo su questo, controlla l'appendice per un esempio con i calcoli ... support.google.com/analytics/answer/2844870?hl=it
Fabio Beltramini,

Risposte:


10

Sono contento che tu abbia citato questo esempio, poiché un progetto a cui sto lavorando è la scrittura di un intero capitolo sui test A / B bayesiani.

Siamo interessati a due quantità: e alcune misure di "aumento". Discuterò prima la quantità .P ( p A > p BP(pA>pB|data)P(pA>pB|data)

Non ci sono limiti di errore su , è una quantità reale. Questo è simile al dire "Qual è la media del posteriore?", C'è solo una media e possiamo calcolarla prendendo la media di tutti i campioni (sto ignorando eventuali errori Monte Carlo, in quanto possono essere ridotti all'insignificanza campionando di più). Penso che tu stia mescolando quantità sconosciute, dove possiamo dire qualcosa come "+ - 3%" e quantità calcolate posteriormente.P(pA>pB|data)

Quello che sto dicendo è che è certo: dati i tuoi dati osservati e le priorità, questa è la tua conclusione.P(pA>pB|data)=0.95

Nota che conosceremo rapidamente : richiede solo moderate quantità di osservazioni per e abbastanza diversi . È molto più difficile e più interessante misurare quale aumento A ha su B (e spesso questo è l'obiettivo di un test A / B: quanto aumentiamo le conversioni). Hai detto che 5% - quanto sei sicuro di questo?p A p B p A - p BpA>pBpApBpApBpB>

Nota che mentre è un valore booleano e quindi facile da misurare, è certamente un valore booleano. È una distribuzione di possibilità:p A - p BpA>pBpApBpB

inserisci qui la descrizione dell'immagine

Man mano che vengono acquisiti sempre più dati, questa distribuzione converge all'effettivo aumento relativo, si può dire che la distribuzione si stabilizza. Qui è dove suggerisco di pensare di terminare l'esperimento. Una volta che questa distribuzione sembra "calmarsi" e possiamo sentirci sicuri dell'aumento, quindi terminare l'esperimento.


Grazie per la risposta! Non vedo l'ora di vedere presto il nuovo capitolo. Per ora, sto prendendo in considerazione la varianza di esempio di e terminando il test quando si avvicina a zero. pApBpA
Bogdan Kulynych,

hey @ Cam.Davidson.Pilon, grazie per la tua risposta. Sono ancora confuso nel dare probabilità come: "La probabilità che A sia migliore del 10% rispetto a B è X%" Ho creato 2 distribuzioni; uno è il 10% migliore dell'altro e ha usato un enorme valore N, quindi il diff (A / B-1) ha una distribuzione di tipo normale con una media del 10%. Pertanto (diff> .10) .mean () restituisce ~ 50%, ma non dovrebbe essere al 100%?
CanCeylan,

@CanCeylan hai un codice da condividere? Non sono sicuro di come hai creato le distribuzioni ...
Cam.Davidson.Pilon

0

Ho sperimentato modi per fermare un test A / B bayesiano e hai ragione: non ci sono molti modi ovvi per cercare su Google. Il metodo che mi piace di più è un metodo basato sulla precisione, basato su questo: http://doingbayesiandataanalysis.blogspot.com/2013/11/optional-stopping-in-data-collection-p.html . Tuttavia, non ho trovato molta letteratura matematica intorno a questo, quindi in questo momento è solo una buona euristica.

Ho scoperto che mentre i miei test devono durare molto più a lungo per raggiungere la precisione desiderata, è più intuitivo e stai dando il tempo per la distribuzione di di "calmarsi" in un obiettivo modo, vale a dire piuttosto che guardarlo negli occhi.P(A>B|data)


0

Sembra che ci siano due approcci principali per il processo decisionale nei test A / B bayesiani. Il primo è basato su un articolo di John Kruschke dell'Università dell'Indiana (K. Kruschke, Bayesian Estimation sostituisce il t Test, Journal of Experimental Psychology: General, 142, 573 (2013)). La regola decisionale utilizzata in questo documento si basa sul concetto di Region Of Practical Equivalence (ROPE).

Un'altra possibilità è quella di utilizzare il concetto di perdita attesa. È stato proposto da Chris Stucchio (C. Stucchio, Bayesian A / B Testing presso VWO). È un altro approccio che prenderei in considerazione.

L'approccio suggerito da Cam.Davidson.Pilon di guardare alla distribuzione posteriore di ha molto senso e si adatterebbe bene al metodo ROPE. L'uso del metodo ROPE ha l'ulteriore vantaggio di dare anche una regola per quando l'esperimento è inconcludente (non solo quando le varianti "A" o "B" possono essere dichiarate vincenti). (pApB)/pA

Puoi trovare di più in questo post del blog: Test bayesiano A / B: una guida passo-passo . Include anche alcuni frammenti di codice Python basati principalmente su un progetto Python ospitato su Github .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.