Multiple comparisons tests

Python में A/B Testing

Moe Lotfy, PhD

Principal Data Science Manager

Multiple comparisons problem का परिचय

  • Single comparison:
    • Control (A) versus Treatment (B)
    • One metric
    • No subcategories

 

दो वेरिएंट्स की औसत बिक्री का बार चार्ट.

  • Multiple comparisons:
    • Multiple variants (A/B/n tests)
    • Multiple metrics
    • Granular categories

 

कई वेरिएंट्स और मेट्रिक्स वाले दो बार चार्ट.

Python में A/B Testing

Family-wise error rate

  • P(Type I error करने की) = $\alpha$ = 0.05
  • P(Type I error न करने की) = 1 - $\alpha$
  • P(m टेस्ट में Type I error न करने की) = (1 - $\alpha$)$^m$
  • P(m टेस्ट में कम से कम एक Type I error करने की) = 1 - (1 - $\alpha$)$^m$ = FWER

Family-wise Error Rate (FWER): कई हाइपोथेसिस टेस्ट चलाते समय एक या अधिक Type I errors होने की संभावना.

  • एक टेस्ट के लिए, FWER = 1 - (1 - $\alpha$)^1 = $\alpha$ = 0.05
  • लेकिन अगर हम एक से अधिक टेस्ट चलाएँ तो?
Python में A/B Testing

Family-wise error rate

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 टेस्ट के लिए FWER = 40%

टेस्ट की संख्या के फ़ंक्शन के रूप में FWER का लाइन प्लॉट. ज्यादा टेस्ट होने पर FWER बढ़ता है.

Python में A/B Testing

Correction methods

  • सबसे सरल और लोकप्रिय तरीका है Bonferroni Correction
  • समायोजित $\alpha$* को व्यक्तिगत टेस्ट $\alpha$ को टेस्टों की संख्या m से भाग देकर सेट करें

Bonferroni correction समीकरण. Alpha को तुलनाओं 'm' की संख्या से भाग दिया गया है

  • कम कड़ा Sidak correction
  • FWER को वांछित $\alpha$ पर सेट करें, फिर $\alpha_s$ के लिए हल करें

Sidak correction समीकरण

Python में A/B Testing

Bonferroni correction उदाहरण

  • बिना correction के, तीनों टेस्ट significant माने जाएँगे
    • लेकिन Type I error की संभावना बढ़कर 14% हो जाती है
  • Bonferroni Correction के साथ, A बनाम D अब significant नहीं है, पर FWER 0.049 पर नियंत्रित है

4 वेरिएंट्स की औसत बिक्री और p-values का बार चार्ट.

Python में A/B Testing

statsmodels multipletests method

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 में A/B Testing

अभ्यास करते हैं!

Python में A/B Testing

Preparing Video For Download...