Wat is A/B-testen?

A/B-testen in Python

Moe Lotfy, PhD

Principal Data Science Manager

Introductie tot A/B-testen

  • Een A/B-test is...

     
    • een experiment om te bepalen welke versie beter is
    • gebaseerd op metriek(en): aanmeldingsratio, gemiddelde omzet per gebruiker, enz.
    • met willekeurige toewijzing en analyse van resultaten
A/B-testen in Python

Wel of niet A/B-testen?

Goed gebruik van A/B-testen:

  • Conversieratio optimaliseren
  • Nieuwe app-functies uitrollen
  • Incrementele effecten van advertenties meten
  • Impact van geneesmiddelproeven beoordelen

Test niet met A/B als:

  • Onvoldoende verkeer/kleine steekproefgrootte
  • Geen duidelijke, logische hypothese
  • Ethische bezwaren
  • Hoge opportuniteitskosten
A/B-testen in Python

Fundamentele stappen van A/B-testen

  1. Bepaal doel en designs/ervaringen
  2. Trek willekeurig gebruikers voor deelname
  3. Wijs gebruikers willekeurig toe aan:
    • controlevariant: huidige staat
    • behandel/testvariant(en): nieuw design
  4. Log acties en bereken metriek(en)
  5. Test op statistisch significante verschillen

Stappen A/B-testen

A/B-testen in Python

Waarde van randomisatie

  • Generaliseerbaarheid en representativiteit
  • Bias tussen groepen minimaliseren
  • Oorzakelijkheid vaststellen door het behandeleffect te isoleren

 

Illustratie willekeurige steekproef en toewijzing

1 https://www.statology.org/random-selection-vs-random-assignment/
A/B-testen in Python

Pythonvoorbeeld van willekeurige toewijzing

checkout.info()
RangeIndex: 9000 entries, 0 to 8999
Data columns (total 6 columns):
 #   Column         Non-Null Count  Dtype  
 0   user_id        9000 non-null   int64  
 1   checkout_page  9000 non-null   object 
 2   order_value    7605 non-null   float64
 3   purchased      9000 non-null   float64
 4   gender         9000 non-null   object 
 5   browser        9000 non-null   object 
dtypes: float64(2), int64(1), object(3)
memory usage: 422.0+ KB
A/B-testen in Python

Pythonvoorbeeld van willekeurige toewijzing

checkout['gender'].value_counts(normalize=True)
F    0.507556
M    0.492444
Name: gender, dtype: float64
sample_df = checkout.sample(n=3000)
sample_df['gender'].value_counts(normalize=True)
M    0.506333
F    0.493667
Name: gender, dtype: float64
A/B-testen in Python

Pythonvoorbeeld van willekeurige toewijzing

checkout.groupby('checkout_page')['gender'].value_counts(normalize=True)
checkout_page  gender
A              M         0.505000
               F         0.495000
B              F         0.507333
               M         0.492667
C              F         0.520333
               M         0.479667
Name: gender, dtype: float64
A/B-testen in Python

Laten we oefenen!

A/B-testen in Python

Preparing Video For Download...