İçeriğe geç

Baştan Sona A/B Testi

Selamlar,

Bugün istatistiğin en sevdiğim konularından biri olan, Hipotez Testleri konusundan bahsedeceğim. Python’dan bir örnek ile testlerimizi gerçekleştirip sonuçlarımızı yorumlayacağız.

A/B Testi Nedir?

A/B testlerinin yapılmasının en temel amacı iki farklı grup arasında istatistiksel olarak bir fark olup olmadığını şans faktörüne yer bırakmadan belirli bir olasılıkla ortaya koymaktır. Yani bir karar destek sistemidir.

Çok basit bir örnekle şöyle anlatalım: E-ticaret siteniz bulunmakta. Satın al Butonu hangi renk olursa müşterilerimin tıklama olasılığı artar sorusuna cevap arıyorsunuz. Elinizde iki seçenek var, yeşil ve sarı. Müşterilerin bir kısmına yeşil butonu, diğer kısmına sarı butonu gösterecek şekilde sisteminizi ayarlıyorsunuz ve gözlem yapmaya başlıyorsunuz. Yeterli sayıda gözlem sayısına ulaştığınızda A/B testi uyguluyorsunuz ve test size şu ihtimalleri söyleyebiliyor:

1- Sarı butona tıklanması ile yeşil butona tıklanması arasında istatistiksel olarak anlamlı bir fark yok. Her iki renkte kullanılabilir.

2- Sarı butona tıklanması ile yeşil butona tıklanması arasında istatistiksel olarak anlamlı bir fark var. Ortalaması yüksek olan renk gerçekten, şansa yer bırakmadan daha yüksek tıklama sunuyor.

Muazzam değil mi 🙂 İstatistiğin nimetleri işte.

Gelin olayın sistematiğine bakalım.

Aslında Hipotez Testi

A/B testinin istatistiksel ismi Hipotez testidir. Hipotez testleri aslında günümüz bilim anlayışının temellerinden biridir. Testi gerçekleştirmek için iki hipotez kurulur. H0 ve H1 hipotezleri.

Kafamda deli sorular.

Aynı zamanda hipotezlerimizin hangi güven düzeyinde test edileceğini de belirlemek için bir alfa değeri belirleriz. Biz burada alfa değerini = 0.05 olarak alacağız. Bu değer yaptığımız testlerin %95 güvenilirlikte olduğunu belirtir. Başka bir deyişle testlerimizin doğruluk payı %95 olacaktır. Farklı alfa değerleri de mevcuttur. %90 ve %99 gibi.

Neden %95 güven aralığında çalışacağız diye sorarsanız, kullanılan en yaygın değer olduğu için. Çoğu testin varsayılan argümanıdır.

H0 hipotezine Null Hypotesis de denir. Bu hipotezde iki grubun arasında herhangi bir fark olmadığı savunulur.

H1 hipotezi ise karşıt hipotezdir. Alternatif hipotez veya araştırma hipotezi de denebilir. Burada savunulan iki grubun arasında fark olduğudur.

H0: İki örneklem arasında istatistiksel olarak bir fark yoktur. (A=B)

H1: İki örneklem arasında istatistiksel olarak bir fark vardır. (A<>B)

Pvalue değeri kırmızı boyalı kısımların ALANLARI. Alan büyüdükçe fail to reject kısmına doğru yaklaşırız. Yani p>Critical Value ise H0 red edilemez.

Farklı durumlara göre uygulanabilecek, hipotez testlerimizi için bize sonuç verecek birçok istatistiksel test bulunmaktadır. Şu anki yazının kapsamı iki örneklem ortalaması arasındaki fark üzerine olduğu için inceleyeceğimiz iki test bulunmakta: Bağımsız İki Örneklem T Testi ve Non-Parametrik Mann Whitney-U testi. Bu testleri gerçekleştirdiğimizde elimizde iki sonuç olur. Birincisi Test İstatistiği, ikinci Pvalue. Bizde Pvalue değerimize bakarak H0 hipotezimizi Redderiz veya Reddedemeyiz. Yorumlamalarımızı H0 hipotezi üzerinden gerçekleştiririz.

Pvalue değerimiz 0.05’ten küçükse H0’ı reddederiz.

Yani, İki örneklem arasında istatistiksel olarak bir fark yoktur. ifadesini reddederiz. Bunun sonucunda İki örneklem arasında istatiksel olarak anlamlı bir fark vardır sonucuna ulaşırız (A<>B).

Pvalue değerimiz 0.05’ten büyükse H0’ı reddedemeyiz.

Yani, İki örneklem arasında istatistiksel olarak bir fark yoktur. ifadesini reddedemeyiz. Bunun sonucunda İki örneklem arasında istatistiksel olarak anlamlı bir fark yoktur sonucuna ulaşırız (A=B).

Bu iki testte iki örneklem arasındaki farkın anlamlılığını ortaya koyan testlerdir. Fakat bazı durumlarda T testi kullanılır, bazı durumlarda Non-Parametrik Mann Whitney-U testi kullanılır. Hangi durumda hangi test kullanılacağını daha iyi kavrayabilmek adına aşağıya oluşturduğum akış şemamı ekliyorum:

A/B Testi için iş akış şeması.

Grupları Oluşturalım

Daha açıklayıcı olabilmek için başta verdiğim örnek senaryo üzerinden gidelim. Pythonda iki farklı liste oluşturalım. Bu listeler sarı ve yeşil butonların günlük tıklanma sayılarını içersin. Ve toplam 30 günlük veri toplamış olalım. Tıklanma sayıları rastgele şekilde random modülünden 50-100 arasında oluşturulmuştur.

import random
random.seed(10)
sari_buton_tiklanma =[random.randint(50,100) for i in range(30)]
yesil_buton_tiklanma =[random.randint(50,100) for i in range(30)]

Bu arada seed ayarını 10 verdim. Sizde benim gibi 10 verirseniz aynı rastgele değerleri alırsınız ve yapacağımız testler ve sonuçları birebir aynı olur.

Hangi Test, Ne Zaman Kullanılır?

Hangi testi kullanacağımıza karar verebilmemiz için örneklemlerimizi varsayım testlerimizden geçirmemiz gerekmektedir. İki adet varsayımımız bulunmaktadır.

1- Normallik Varsayımı

2- Varyans Homojenliği Varsayımı

Normallik Varsayımı

Bu aşamada kullanacağımız test belli olmaktadır.

Eğer iki grubumuzun da dağılımı normal dağılım ile örtüşüyorsa Bağımsız iki örneklem T testi,

İki grubumuzun en az bir tanesi normal dağılmıyorsa Non-Parametrik Mann Whitney-U testi uygulanmalıdır.

Bu varsayımı sonuçlandırmak her grup için ayrı ayrı hipotez kurulur ve shapiro testi ile yorumlamalar yapılır.

A Grubu için normallik varsayımı hipotezlerimiz:

H0: A grubu dağılımı ile normal dağılım arasında istatistiki olarak bir fark yoktur.

H1: A grubu dağılımı ile normal dağılım arasında istatistiki olarak bir fark vardır.

B Grubu için normallik varsayımı hipotezlerimiz:

H0: B grubu dağılımı ile normal dağılım arasında istatistiki olarak bir fark yoktur.

H1: B grubu dağılımı ile normal dağılım arasında istatistiki olarak bir fark vardır.

Hipotezlerimizi kurduğumuza göre test işlemine geçebiliriz.

from scipy.stats import shapiro

# Sarı Buton için
from scipy.stats import shapiro
test_istatistigi, pvalue = shapiro(sari_buton_tiklanma)
print("Sarı buton Pvalue:",pvalue)

test_istatistigi, pvalue = shapiro(yesil_buton_tiklanma)
print("Yeşil buton Pvalue:",pvalue)
Shapiro testi için Pvalue değerlerimiz.

Pvalue <0.05 ise H0 RED

Hatırlarıcımız 🙂

Pvalue değerlerimiz sarı buton için : 0.46, yeşil buton için 0.76. Her iki Pvalue değerimizde 0.05 değerinden büyük olduğu için H0 hipotezlerini reddedemiyoruz. Yani:

H0: A grubu dağılımı ile normal dağılım arasında istatistiki olarak bir fark yoktur.

H0: B grubu dağılımı ile normal dağılım arasında istatistiki olarak bir fark yoktur.

Her iki grubunda normal dağılım ile arasında istatistiki bir fark yoktur. Her iki grupta normal dağılmaktadır.

Bu sonuçlar doğrultusunda Normallik testini geçmiş bulunmaktayız. Kullanacağımız test Bağımsız iki örneklem T testi olacaktır. Bundan sonraki aşamamız Varyans homojenliği testi olacaktır.

Eğerki gruplardan en az bir tanesi normal dağılmasaydı varyans homojenliği testini yapmamıza gerek olmadan direkt olarak ManWhitneyU testine geçebilirdik.

Varyans Homojenliği Varsayımı

Bu testte iki grubun varyanslarının aralarında homojen olup olmadığı belirlenir. Levene testi kullanılır.

H0: İki grubun varyansları arasında istatistiksel olarak bir fark yoktur.

H1: İki grubun varyansları arasında istatistiksel olarak bir fark vardır.

from scipy import stats
stats.levene(sari_buton_tiklanma,yesil_buton_tiklanma)

Pvalue <0.05 ise H0 RED

Hatırlatıcımız 🙂

Görüldüğü gibi Pvalue değerimiz 0.98. Hatırlatıcımızı da göz önünde bulunduraraktan Pvalue > 0.05 olduğu için H0 hipotezini reddedemeyiz. Yani:

H0: İki grubun varyansları arasında istatistiksel olarak bir fark yoktur.

Bunun sonucunda T testimizi gerçekleştirirken “eqal_var = True” argümanını gireceğiz.

Eğerki H0 hipotezini reddetmiş olsaydık,

“eqal_var” argumanını False olarak girmemiz gerekecekti.

Bağımsız İki Örneklem T Testi

Bütün varsayımlarımızı gerçekleştirdiğimize göre artık hangi testi kullanacağımız ve hangi argümanları gireceğimiz belirlendi. Şimdi sırada işin en son ve en can alıcı kısmı var. Son kez hipotezlerimizi oluşturalım:

H0: Sarı Buton Örneklem Ortalaması ile Yeşil Buton Örneklem ortalaması arasında istatistiki olarak herhangi bir fark yoktur.

H1: Sarı Buton Örneklem Ortalaması ile Yeşil Buton Örneklem ortalaması arasında istatistiki olarak fark vardır.

Gruplarımın ortalamalarını kontrol ediyorum:

print("Sari:",sum(sari_buton_tiklanma)/len(sari_buton_tiklanma))
print("Yeşil:",sum(yesil_buton_tiklanma)/len(yesil_buton_tiklanma))
İki grup için ortalama değerler.

Göründüğü üzere yeşil grubun ortalaması 75, sarı grubun ortalaması 72. Peki gerçekten öyle mi? Göreceğiz 🙂

İki örneklem T testimizi gerçekleştirelim.

test, pvalue = stats.ttest_ind(sari_buton_tiklanma, yesil_buton_tiklanma, equal_var=True)
print("Pvalue:",pvalue)
Final Pvalue

Pvalue <0.05 ise H0 RED

Hatırlatıcımız 🙂

Son değerlendirmemizi yaptığımızda sonucumuz:

H0 değerimiz 0.05 ten büyük olduğu için H0 hipotezimizi reddedemiyoruz. Yani:

Sarı Buton Örneklem Ortalaması ile Yeşil Buton Örneklem ortalaması arasında istatistiki olarak herhangi bir fark yoktur.

Her iki renkte kullanılabilir. Veya, detaylı incelemelerde bulunulup test süresi arttırılabilir. Farklı alternatifler denenebilir.

Peki ya ManWhitneyU Testi?

Normallik varsayımını geçemeseydik direkt olarak bu testi kullanacaktık. Bu test nonparametrik örneklemler ile kullanılmaktadır. Bu yüzde bağımsız iki örneklem T testi gibi equel_var argümanı almasına gerek yoktur. Hipotezler aynı şekilde kurulur. Değerlendirmeler aynı konseptte yapılır. Kod kısmını aşağıya bırakıyorum.

t, pvalue = stats.mannwhitneyu(group_a,group_b)
print(pvalue)

Son kez:

Pvalue <0.05 ise H0 RED

Hatırlatıcımız 🙂

Sonuç

Bu yazımızda baştan sona A/B testini ele aldık. Ne için yapıldığını örnekler ile pekiştirmeye çalıştık. Toparlayacak olursak:

  • A/B testi iki farklı grubun ortalamasını istatistiki olarak kıyaslamak için kullanılır.
  • Hipotezler kurulur, H0:iki ortalama arasında fark yok | H1: İki ortalama arasında fark var.
  • Kıyaslama yapmak için iki farklı test bulunmakta : Bağımsız iki örneklem T testi ve Man Whitney U testi.
  • Bağımsız iki örneklemT testini gerçekleştirebilmek için iki varsyımımız bulunmakta: Normallik varsayımı ve Varyans homojenliği varsayımı.
  • Varsayımlar sağlanmıyorsa Nonparametrik Man Whitney U testi uygulanır.
  • Elde edilen p value değeri 0.05 ten küçükse H0 reddedilir ve şu sonuca ulaşılır: İki grubun ortalaması istatistiki olarak şansa yer bırakmadan birbirlerinden farklılık gösterir.
  • Elde edilen p value değeri 0.05 ten büyükse H0 reddedilemez ve şu sonuca ulaşılır: İki grubun ortalaması istatistiki olarak şansa yer bırakmadan birbirlerinden farklılık göstermez. Yani aynıdır.
  • Böylelikle iş kararı alırken destek olarak sırtımızı istatistik bilimine yaslıyoruz ve daha güvenle hareket ediyoruz.

İstatistiğin önemli konularından birini kolayca ve temiz bir şekilde hayatımıza sokmuş bulunuyoruz. Keyif almanız dileği ile.

Yararlandığım kaynaklar:

DSMLBC

Hipotez Testleri

Hypothesis Testing

Tarih:İstatistikPythonVeri Bilimi