Çoklu karşılaştırma testleri

Python ile A/B Testi

Moe Lotfy, PhD

Principal Data Science Manager

Çoklu karşılaştırma sorununun tanıtımı

  • Tek karşılaştırma:
    • Kontrol (A) ve Tedavi (B)
    • Tek metrik
    • Alt kategori yok

 

İki varyant için ortalama satışların çubuk grafiği.

  • Çoklu karşılaştırmalar:
    • Birden çok varyant (A/B/n testleri)
    • Birden çok metrik
    • İnce kategoriler

 

Birden çok varyant ve metrikli iki çubuk grafik.

Python ile A/B Testi

Aile-düzeyi hata oranı

  • P(Tip I hata yapma) = $\alpha$ = 0.05
  • P(Tip I hata yapmama) = 1 - $\alpha$
  • m testte P(Tip I hata yapmama) = (1 - $\alpha$)$^m$
  • m testte en az bir Tip I hata yapma olasılığı = 1 - (1 - $\alpha$)$^m$ = FWER

Aile-düzeyi Hata Oranı (FWER): Çoklu hipotez testi yaparken bir veya daha fazla Tip I hata yapma olasılığı.

  • Tek bir test için, FWER = 1 - (1 - $\alpha$)^1 = $\alpha$ = 0.05
  • Peki birden fazla test yaparsak?
Python ile A/B Testi

Aile-düzeyi hata oranı

import matplotlib.pyplot as plt 
import numpy as np 
alpha = 0.05 
x = np.linspace(0, 20, 21) 
y = 1-(1-alpha)**x 
plt.plot(x,y, marker='o') 
plt.title('FWER vs Number of Tests') 
plt.xlabel('Number of Tests') 
plt.ylabel('FWER') 
plt.show()
  • FWER = 1 - (1 - $\alpha$)^10
  • 10 test için FWER = %40

Test sayısına göre FWER çizgi grafiği. Test sayısı arttıkça FWER yükselir.

Python ile A/B Testi

Düzeltme yöntemleri

  • En basit ve en yaygın yaklaşım Bonferroni Düzeltmesidir
  • Ayarlanmış $\alpha$* değerini, bireysel test $\alpha$’sını test sayısı m’e bölerek belirleyin

Bonferroni düzeltme denklemi. Alfa, 'm' karşılaştırma sayısına bölünür

  • Daha az katı Sidak düzeltmesi
  • FWER’i istenen $\alpha$’ya ayarlayın, sonra $\alpha_s$ için çözün

Sidak düzeltme denklemi

Python ile A/B Testi

Bonferroni düzeltmesi örneği

  • Düzeltme olmadan üç test de anlamlı görünür
    • ancak Tip I hata olasılığı %14’e şişer
  • Bonferroni Düzeltmesi ile A ve D karşılaştırması artık anlamlı değildir, fakat FWER 0.049’da kontrol edilir

4 varyant için ortalama satışlar ve p-değerleri çubuk grafiği.

Python ile A/B Testi

statsmodels multipletests yöntemi

import statsmodels.stats.multitest as smt 
pvals = [0.023,0.0005,0.00004]
corrected = smt.multipletests(pvals, alpha=0.05, method='bonferroni')
print("Significant Test:", corrected[0])
print("Corrected P-values:", corrected[1])
print("Bonferroni Corrected alpha: {:.4f}".format(corrected[3]))
Significant Test: [False  True  True]
Corrected P-values: [0.069   0.0015  0.00012]
Bonferroni Corrected alpha: 0.0167
Python ile A/B Testi

Haydi pratik yapalım!

Python ile A/B Testi

Preparing Video For Download...