Bayesian A / B testini ne zaman bitirmeli?


10

Hacker'lar için Olasılıksal Programlama ve Bayes A / B testleri gibi Bayes yolunda A / B testi yapmaya çalışıyorum . Her iki makale de karar vericinin hangi varyantlardan hangisinin daha iyi olduğuna karar verdiğini varsaymaktadır örneğin , bu nedenle daha iyidir. Bu olasılık, ondan herhangi bir sonuç çıkarmak için yeterli miktarda veri olup olmadığı hakkında herhangi bir bilgi sağlamaz. Bu yüzden, testi ne zaman durduracağım belirsiz.P(pA>pB)=0.97A

Orada iki ikili karavanlar, olduğunu varsayalım ve , ve bunu nasıl büyük bir olasılıkla tahmin etmek istiyorum ve gözlemlerine dayalı ve . Ayrıca, ve posteriorlarının beta-dağılımı olduğunu varsayalım .ABpA>pBpApBpA>5%ABpApB

ve için parametrelerini için , posteriorları örnekleyebilir ve . Python örneği:α,βpA|datapB|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'])

Örneğin, P(pA>pB)=0.95 . Şimdi P (p_A> p_B \ | \ \ text {data}) = 0.95 \ pm 0.03 gibi bir şey istiyorum P(pA>pB | data)=0.95±0.03.

Güvenilir aralıklar ve Bayes faktörleri hakkında araştırma yaptım, ancak eğer uygulanabilirlerse bu durum için nasıl hesaplanacağını anlayamıyorum. İyi bir fesih kriterine sahip olabilmek için bu ek istatistikleri nasıl hesaplayabilirim?


1
Bununla ilgili iyi bir makale, hesaplamalarla ilgili bir örnek için eke bakın
Fabio Beltramini

Yanıtlar:


10

Bu örnekten bahsettiğinize sevindim, üzerinde çalıştığım bir proje Bayesian A / B testi hakkında bütün bir bölüm yazıyor.

İki miktarla ilgileniyoruz: ve bir miktar "artış" ölçüsü. miktarını tartışacağım .P(pA>pB|data)P(pA>pB|data)

üzerinde herhangi bir hata yoktur , bu gerçek bir miktardır. Bu, "posteriorun anlamı nedir?" Demeye benzer, sadece 1 ortalama vardır ve tüm örneklerin ortalamasını alarak hesaplayabiliriz (herhangi bir Monte Carlo hatasını yok sayıyorum, azaltılabildikleri için daha fazla örnekleme yaparak önemsizliğe). "+ -% 3" gibi bir şey söyleyebileceğimiz bilinmeyen miktarları karıştırdığınızı düşünüyorum.P(pA>pB|data)

Söylediğim, kesindir: gözlemlenen verileriniz ve öncelikleriniz göz önüne alındığında, bu sizin sonucunuzdur.P(pA>pB|data)=0.95

Not biz bilecek hızla: Farklı yeterince için gözlemlerin orta miktarda gerektirir ve . A'nın B üzerinde ne kadar arttığını ölçmek çok daha zor ve daha ilginçtir (ve bu genellikle bir A / B testinin amacıdır: dönüşümleri ne kadar arttırıyoruz). Bunu sözü % 5 - Bunların nasıl eminsiniz?pA>pBpApBpApBpB>

Not ederken o dolayısıyla kolay ölçmek için bir boolean ve, kesinlikle bir boolean değil. Olasılıkların bir dağılımıdır:pA>pBpApBpB

resim açıklamasını buraya girin

Giderek daha fazla veri elde edildikçe, bu dağılım gerçek nispi artışa yakınlaşır, dağılımın stabilize olduğu söylenebilir. Denemeyi sonlandırmayı düşünmeyi burada öneririm. Bu dağılım "sakinleşiyor" gibi göründüğünde ve artıştan emin olabiliriz, sonra denemeyi sonlandırabiliriz.


Yanıtınız için teşekkürler! Yakında yeni bölümü görmek için sabırsızlanıyoruz. Şimdilik, örnek varyansını düşünüyorum ve sıfıra yaklaştığında testi sonlandırıyorum. pApBpA
Bogdan Kulynych

hey @ Cam.Davidson.Pilon, cevabınız için teşekkürler. Hala şu olasılıkları vermekle kafam karıştı: "Olasılık A, B% X'den% 10 daha iyidir" 2 dağılım oluşturdum; biri diğerinden% 10 daha iyidir ve büyük N değeri kullanır, bu nedenle fark (A / B-1), ortalama% 10'luk normal benzeri bir dağılıma sahiptir. Bu nedenle (diff> .10) .mean () ~% 50 döndürür, ancak% 100 olmamalı mı?
CanCeylan

@CanCeylan Paylaşacak kodunuz var mı? Dağıtımları nasıl oluşturduğunuzdan emin değilim ...
Cam.Davidson.Pilon

0

Bayesian A / B testini durdurmanın yollarını deniyorum ve haklısın - etrafta dolaşmanın pek çok açık yolu yok. En çok sevdiğim yöntem, aşağıdakilere dayanan hassas tabanlı bir yöntemdir: http://doingbayesiandataanalysis.blogspot.com/2013/11/optional-stopping-in-data-collection-p.html . Bununla birlikte, bu konuda çok fazla matematiksel literatür bulamadım, bu yüzden şu anda sadece iyi bir buluşsal yöntem.

Testlerimin istenen hassasiyete ulaşmak için çok daha uzun süre çalışmasına rağmen, daha sezgisel olduğunu ve 'nin bir hedefte "sakinleşmesi" için zaman ayırdığını buldum. yani göz kürlemekten ziyade.P(A>B|data)


0

Bayes A / B testinde karar vermede iki ana yaklaşım var gibi görünmektedir. Birincisi Indiana Üniversitesi'nden John Kruschke'nin bir makalesine dayanmaktadır (K. Kruschke, Bayes Tahmini, Deney Testinin yerini alır, Deneysel Psikoloji Dergisi: General, 142, 573 (2013)). Bu çalışmada kullanılan karar kuralı, Pratik Eşdeğerlik Bölgesi (ROPE) kavramına dayanmaktadır.

Diğer bir olasılık ise Beklenen Kayıp kavramını kullanmaktır. Chris Stucchio (C. Stucchio, VWO'da Bayes A / B Testi) tarafından önerilmiştir. Düşüneceğim başka bir yaklaşım.

Cam.Davidson.Pilon tarafından arka dağılımına bakma yaklaşımı çok mantıklıdır ve ROPE yöntemine iyi uymaktadır. ROPE yöntemini kullanmanın, denemenin ne zaman sonuçsuz olduğu konusunda da bir kural verme avantajı vardır (sadece "A" veya "B" varyantları kazanan olarak ilan edilebildiği zaman değil). (pApB)/pA

Bu blog gönderisinde daha fazlasını bulabilirsiniz: Bayes A / B Testi: adım adım kılavuz . Ayrıca çoğunlukla Github'da barındırılan bir Python projesine dayanan bazı Python kod snippet'lerini içerir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.