Quando terminar o teste Bayesiano A / B?

10

Estou tentando fazer testes A / B da maneira bayesiana, como em Programação Probabilística para Hackers e testes A / B bayesianos . Ambos os artigos pressupõem que o tomador de decisão decide qual das variantes é melhor com base apenas na probabilidade de algum critério, por exemplo, ; portanto, é melhor. Essa probabilidade não fornece nenhuma informação sobre se havia quantidade suficiente de dados para tirar conclusões a partir dele. Então, não está claro para mim quando parar o teste.AP(pUMA>pB)=0,97UMA

Suponha que há dois RVs binários, e , e eu quero para estimar quão provável é que , e com base nas observações de e . Além disso, suponha que e posteriores sejam beta-distribuídos.B p A > p B p A - p BUMABpUMA>pBABpApBpUMA-pBpUMA>5%UMABpUMApB

Como posso encontrar os parâmetros para e , posso amostrar os posteriores e estimar . Exemplo em python:p Aα,βp BpUMA|dadosP ( p A > p B | dados )pB|dadosP(pUMA>pB | dados)

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'])

Eu poderia obter, por exemplo, . Agora eu gostaria de ter algo como .P(pUMA>pB)=0,95P(pUMA>pB | dados)=0,95±0,03

Eu pesquisei sobre intervalos credíveis e fatores Bayes, mas não consigo entender como calculá-los para este caso, se eles são aplicáveis. Como posso calcular essas estatísticas adicionais para ter um bom critério de finalização?

Bogdan Kulynych
fonte
11
Um bom artigo sobre isso, verifique o apêndice para um exemplo com cálculos ... support.google.com/analytics/answer/2844870?hl=en
Fabio Beltramini

Respostas:

10

Fico feliz que você tenha mencionado este exemplo, pois um projeto em que estou trabalhando está escrevendo um capítulo inteiro sobre os testes A / B Bayesianos.

Estamos interessados ​​em duas quantidades: e alguma medida de "aumento". Vou discutir o P ( p A > p BP(pUMA>pB|dumatuma) quantidade primeiro.P(pUMA>pB|dumatuma)

Não há limites de erro em P(pUMA>pB|dados)

P(pUMA>pB|dados)=0,95

pUMA>pBpUMApBpUMA-pBpB>

pUMA>pBpUMA-pBpB

insira a descrição da imagem aqui

À medida que mais e mais dados são adquiridos, essa distribuição converge para o aumento relativo real, pode-se dizer que a distribuição se estabiliza. É aqui que sugiro pensar em encerrar o experimento. Quando essa distribuição parecer "se acalmar", e pudermos nos sentir confiantes com o aumento, encerre o experimento.

Cam.Davidson.Pilon
fonte
pUMA-pBpUMA
ei @ Cam.Davidson.Pilon, obrigado pela sua resposta. Ainda estou confuso ao fornecer probabilidades como: "A probabilidade é A é 10% melhor que B é X%" Eu criei 2 distribuições; um é 10% melhor que o outro e usou um valor N enorme, portanto o diff (A / B-1) tem uma distribuição normal, com média de 10%. Portanto (diff> .10) .mean () retorna ~ 50%, mas não deveria ser 100%?
CanCeylan
@CanCeylan você tem código para compartilhar? Não tenho certeza de como você criou as distribuições ...
Cam.Davidson.Pilon
0

Eu tenho experimentado maneiras de interromper um teste Bayesiano A / B e você está certo - não existem muitas maneiras óbvias de pesquisar no Google. O método que eu mais gosto é um método baseado em precisão, com base neste: http://doingbayesiandataanalysis.blogspot.com/2013/11/optional-stopping-in-data-collection-p.html . No entanto, não encontrei muita literatura matemática sobre isso, então, neste momento, é apenas uma boa heurística.

P(UMA>B|dumatuma)

ilanman
fonte
0

Parece haver duas abordagens principais para a tomada de decisão nos testes Bayesian A / B. O primeiro é baseado em um artigo de John Kruschke, da Universidade de Indiana (K. Kruschke, Bayesian Estimation Substitui o Teste t, Journal of Experimental Psychology: General, 142, 573 (2013)). A regra de decisão usada neste artigo é baseada no conceito de Região de Equivalência Prática (ROPE).

Outra possibilidade é usar o conceito de perda esperada. Foi proposto por Chris Stucchio (C. Stucchio, Bayesian A / B Testing at VWO). É outra abordagem que eu consideraria.

(pUMA-pB)/pUMA

Você pode encontrar mais neste post do blog: Teste Bayesian A / B: um guia passo a passo . Ele também inclui alguns trechos de código Python que são baseados principalmente em um projeto Python hospedado no Github .

cbellei
fonte