A / B test sistemleri üzerinde çalışan bir yazılım geliştiricisiyim. Sağlam bir istatistik geçmişim yok, ancak son birkaç aydır bilgi topluyorum.
Tipik bir test senaryosu, bir web sitesindeki iki URL'nin karşılaştırılmasını içerir. Bir ziyaretçi ziyaret eder LANDING_URL
ve daha sonra rasgele URL_CONTROL
veya ' ya yönlendirilir URL_EXPERIMENTAL
. Bir ziyaretçi bir örnek oluşturur ve ziyaretçi bu sitede arzu edilen bir eylem gerçekleştirdiğinde bir zafer koşulu elde edilir. Bu bir dönüşüm oluşturur ve dönüşüm oranlarının oranı dönüşüm oranıdır (genellikle yüzde olarak ifade edilir). Belirli bir URL için tipik bir dönüşüm oranı,% 0,01 ila% 0,08 aralığında bir şeydir. Yeni URL'lerin eski URL'lerle nasıl karşılaştırıldığını belirlemek için testler yapıyoruz. Daha URL_EXPERIMENTAL
iyi performans göstermesi durumunda URL_CONTROL
, URL_CONTROL
ile değiştiririz URL_EXPERIMENTAL
.
Basit hipotez test tekniklerini kullanarak bir sistem geliştirdik. Bu sistemi geliştirmek için burada başka bir CrossValidated sorunun yanıtlarını kullandım .
Bir test aşağıdaki gibi yapılır:
- Dönüşüm oranı tahmini
CRE_CONTROL
aitURL_CONTROL
tarihsel verileri kullanılarak hesaplanır. - İstenen hedef dönüşüm oranı
CRE_EXPERIMENTAL
arasındaURL_EXPERIMENTAL
kümesidir. - Tipik olarak 0.95'lik bir anlam seviyesi kullanılır.
- Tipik olarak 0.8'lik bir güç kullanılır.
Birlikte, bu değerlerin tümü istenen numune boyutunu hesaplamak için kullanılır. power.prop.test
Bu örnek boyutu elde etmek için R işlevini kullanıyorum .
Tüm numuneler toplanana kadar bir test yapılacaktır. Bu noktada, güven aralıkları CR_CONTROL
ve CR_EXPERIMENTAL
hesaplanır. Eğer örtüşmezlerse, kazanan 0.95 önem seviyesi ve 0.8 gücü ile ilan edilebilir.
Testlerimizin kullanıcıları iki önemli kaygıya sahiptir:
1. Test sırasında bir noktada, açık bir kazananı gösterecek kadar numune toplanırsa test durdurulamaz mı?
2. Testin sonunda kazanan ilan edilmezse, kazanan bulmak için yeterli numune toplayıp toplayamayacağımızı görmek için testi daha uzun süre yapabilir miyiz?
Unutulmamalıdır ki, kullanıcılarına tam olarak kendi kullanıcılarının istediklerini yapmalarını sağlayan birçok ticari araç bulunmaktadır. Yukarıdakilerle ilgili birçok yanlışlık olduğunu okudum, ancak aynı zamanda bir durdurma kuralı fikrine rastladım ve böyle bir kuralı kendi sistemlerimizde kullanma olasılığını araştırmak istiyorum.
İşte dikkate almak istediğimiz iki yaklaşım:
1. Kullanarak power.prop.test
, ölçülen geçerli dönüşüm oranlarını mevcut örnek sayısıyla karşılaştırın ve kazanan ilan etmek için yeterli örnek toplanıp toplanmadığını görün.
Örnek: Sistemimizde aşağıdaki davranışın var olup olmadığını görmek için bir test ayarlandı:
CRE_CONTROL
: 0.1CRE_EXPERIMENTAL
: 0,1 * 1,3- Bu parametrelerle örnek büyüklüğü
N
1774'tür.
Bununla birlikte, test ilerledikçe ve 325 örneğe ulaştığında CRM_CONTROL
(kontrol için ölçülen dönüşüm oranı) 0.08 ve CRM_EXPERIMENTAL
0.15'tir. power.prop.test
bu dönüşüm oranları üzerinden çalıştırılır ve N
325 olarak bulunur. Tam CRM_EXPERIMENTAL
olarak kazanan olduğunu beyan etmek için gereken örnek sayısı ! Bu noktada testin sona erdirilmesi umudumuz. Benzer şekilde, test 1774 örneğe ulaşır, ancak kazanan bulunmaz, ancak daha sonra 2122 örneğe ulaşır, bu CRM_CONTROL
da 0.1 ve CRM_EXPERIMENTAL
0.128'in bir kazananın beyan edilebileceği bir sonuç olduğunu göstermek için yeterlidir .
Bir de ilgili soruya kullanıcıların bu tür bir test sonucu tehlikesine maruz kalmalarına da erken teşvik durdurur az örnekleri olan ve daha az inandırıcı tavsiye tahmin önyargı ve Tip I ve Tip II hataları sayısında artış. Bu durdurma kuralını çalıştırmanın bir yolu var mı? Bu bizim tercih ettiğimiz yaklaşımdır çünkü bizim için daha az programlama zamanı demektir. Belki de bu durdurma kuralı, testin güvenilirliğini ölçen bir tür sayısal puan veya puanlar sunarak erken durdurulmalı mı?
2. Sıralı analiz veya SPRT kullanma .
Bu test yöntemleri tam olarak kendimizde bulduğumuz durum için tasarlanmıştır: Kullanıcılarımız bir testi nasıl başlatabilir ve testte fazla zaman kaybetmeyecek şekilde nasıl bitirebilirler? Bir testi çok uzun süre çalıştırmak veya farklı parametrelerle testi başlatmak zorunda kalmak.
Yukarıdaki iki yöntemden, SPRT'yi tercih ediyorum çünkü matematiği kavramak benim için biraz daha kolay ve programlamak daha kolay olabilir. Ancak, olasılık bağlamının bu bağlamda nasıl kullanılacağını anlamıyorum . Birisi olabilirlik oranının, olabilirlik oranının kümülatif toplamının nasıl hesaplanacağına dair bir örnek oluşturabilir ve kişinin sıfır hipotezi ve alternatif hipotezi ne zaman kabul edeceğini izlemeye devam edeceği bir durumu gösteren bir örnekle devam edebilirse, SPRT'nin doğru yol olup olmadığını belirlememize yardımcı olur.