नॉन-पैरामीट्रिक सांख्यिकीय टेस्ट

Python में A/B Testing

Moe Lotfy, PhD

Principal Data Science Manager

पैरामीट्रिक टेस्ट की मान्यताएँ

  1. रैंडम सैंपलिंग
    • डेटा को पॉपुलेशन से रैंडम तरीके से सैंपल किया गया है।
    • डेटा कलेक्शन/सैंपलिंग प्रक्रिया की जाँच करें।
  2. स्वतंत्रता
    • हर ऑब्ज़र्वेशन/डेटा पॉइंट स्वतंत्र है।
    • निर्भरताओं को न मानने से एरर रेट बढ़ जाते हैं।
  3. नॉर्मैलिटी
    • डेटा नॉर्मल डिस्ट्रीब्यूटेड है।
    • सैंपल साइज पर्याप्त बड़ा हो।
      • टू-सैंपल t-test: प्रत्येक समूह में n >= 30.
      • टू-सैंपल प्रपोर्शन्स टेस्ट: प्रत्येक समूह में >=10 successes और >=10 failures.
Python में A/B Testing

Mann-Whitney U टेस्ट

  • सांख्यिकीय सिग्निफिकेंस के लिए नॉन-पैरामीट्रिक टेस्ट
  • जाँचता है कि दो स्वतंत्र सैंपल्स की पैरेंट डिस्ट्रीब्यूशन समान है या नहीं
  • रैंक सम टेस्ट
  • अनपेयर्ड डेटा
Python में A/B Testing

Python में Mann-Whitney U टेस्ट

# Calculate the mean and count of time on page by variant
print(checkout.groupby('checkout_page')['time_on_page'].agg({'mean', 'count'}))
                    mean  count
checkout_page                  
A              44.668527   3000
B              42.723772   3000
C              42.223772   3000
# Set random seed for repeatability 
np.random.seed(40)
# Take a random sample of size 25 from each variant
ToP_samp_A = checkout[checkout['checkout_page'] == 'A'].sample(25)['time_on_page']
ToP_samp_B = checkout[checkout['checkout_page'] == 'B'].sample(25)['time_on_page']
Python में A/B Testing

Python में Mann-Whitney U टेस्ट

# Run a Mann-Whitney U test
mwu_test = pingouin.mwu(x=ToP_samp_A,
                        y=ToP_samp_B,
                        alternative='two-sided')
# Print the test results
print(mwu_test)
     U-val alternative     p-val     RBC    CLES
MWU  441.0   two-sided  0.013007 -0.4112  0.7056
Python में A/B Testing

Chi-square टेस्ट ऑफ इंडिपेंडेंस

  • पैरामीट्रिक मान्यताओं से मुक्त
  • जाँचता है कि दो या अधिक श्रेणीबद्ध वैरिएबल्स स्वतंत्र हैं या नहीं
    • शून्य परिकल्पना: वैरिएबल्स स्वतंत्र हैं।
    • वैकल्पिक परिकल्पना: वैरिएबल्स स्वतंत्र नहीं हैं।
Python में A/B Testing

Python में Chi-square टेस्ट

Homepage signup rates A/B test

Null: लैंडिंग पेज डिज़ाइन C और D के बीच signup rates में कोई महत्वपूर्ण अंतर नहीं है

Alternative: उनके बीच कोई महत्वपूर्ण अंतर नहीं है

# Calculate the number of users in groups C and D
n_C = homepage[homepage['landing_page'] == 'C']['user_id'].nunique()
n_D = homepage[homepage['landing_page'] == 'D']['user_id'].nunique()
# Compute unique signups in each group
signup_C = homepage[homepage['landing_page'] == 'C'].groupby('user_id')['signup'].max().sum()
no_signup_C = n_C - signup_C
signup_D = homepage[homepage['landing_page'] == 'D'].groupby('user_id')['signup'].max().sum()
no_signup_D = n_D - signup_D
Python में A/B Testing

Python में Chi-square टेस्ट

# Create the signups table
table = [[signup_C, no_signup_C], [signup_D, no_signup_D]]
print('Group C signup rate:',round(signup_C/n_C,3))
print('Group D signup rate:',round(signup_D/n_D,3))

# Calculate p-value
print('p-value=',stats.chi2_contingency(table,correction=False)[1])
Group C signup rate: 0.064
Group D signup rate: 0.048
p-value= 0.009165
Python में A/B Testing

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

Python में A/B Testing

Preparing Video For Download...