Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Randomisatie en Steekproefgrootte | Effectieve A/B-Tests Ontwerpen
A/B-Testen met Python

Randomisatie en Steekproefgrootte

Veeg om het menu te tonen

Willekeurige toewijzing vormt de basis van betrouwbare A/B-tests. Door gebruikers willekeurig aan groepen toe te wijzen, zorg je ervoor dat beide groepen statistisch vergelijkbaar zijn, wat het risico op selectiebias vermindert. Selectiebias treedt op wanneer bepaalde gebruikers meer kans hebben om in de ene groep terecht te komen dan in de andere, wat je resultaten kan vertekenen en tot onjuiste conclusies kan leiden. Zonder correcte randomisatie kunnen verschillen tussen groepen worden veroorzaakt door onderliggende kenmerken in plaats van door de variabele die je test.

Verschillende randomisatietechnieken worden vaak gebruikt bij A/B-testen:

  • Eenvoudige randomisatie: elke gebruiker heeft een gelijke kans om aan een willekeurige groep te worden toegewezen, vaak met behulp van een willekeurige getallengenerator;
  • Blokrandomisatie: gebruikers worden in blokken ingedeeld en binnen elk blok worden gebruikers willekeurig aan verschillende groepen toegewezen om de balans gedurende de test te behouden;
  • Gestratificeerde randomisatie: gebruikers worden verdeeld in strata op basis van kenmerken (zoals leeftijd of locatie), en randomisatie vindt plaats binnen elk stratum om ervoor te zorgen dat alle subgroepen vertegenwoordigd zijn.

Eenvoudige randomisatie is het meest rechttoe rechtaan en is vaak voldoende voor de meeste digitale experimenten. Geavanceerdere technieken helpen echter om de balans te behouden bij kleinere steekproeven of belangrijke subgroepen.

1234567891011121314151617
import random # Simulating random assignment of 20 users to groups 'A' and 'B' users = [f"user_{i+1}" for i in range(20)] groups = ['A', 'B'] # Dictionary to hold group assignments assignment = {} for user in users: # Randomly choosing a group for each user assigned_group = random.choice(groups) assignment[user] = assigned_group # Printing out the assignment for user, group in assignment.items(): print(f"{user} assigned to group {group}")

Het bepalen van de juiste steekproefgrootte is essentieel voor de betrouwbaarheid van je A/B-testresultaten. Een te kleine steekproef kan leiden tot onbetrouwbare of niet-concluderende resultaten, terwijl een onnodig grote steekproef middelen verspilt. De steekproefgrootte beïnvloedt direct de statistische power van je test - de kans om een daadwerkelijk verschil te detecteren als dat er is.

Belangrijke concepten bij het berekenen van de steekproefgrootte zijn:

  • Minimale detecteerbare effectgrootte (MDE): het kleinste verschil tussen groepen dat je wilt kunnen detecteren;
  • Significantieniveau (alpha): de kans op een vals-positief resultaat (meestal ingesteld op 0,05);
  • Power (1 - bèta): de kans om een daadwerkelijk effect te detecteren (meestal ingesteld op 0,8 of 80%).

Poweranalyse combineert deze factoren om het minimale aantal benodigde gebruikers per groep te schatten. Grotere effectgroottes of hogere significantieniveaus vereisen minder gebruikers, terwijl kleinere effecten of hogere power meer gebruikers vereisen.

12345678910111213141516171819202122
from scipy.stats import norm import math # Parameters for sample size calculation alpha = 0.05 # Significance level power = 0.8 # Desired power p1 = 0.10 # Baseline conversion rate (control group) p2 = 0.13 # Expected conversion rate (treatment group) effect_size = abs(p2 - p1) # Minimum detectable effect # Calculate pooled standard deviation pooled_prob = (p1 + p2) / 2 std_dev = math.sqrt(2 * pooled_prob * (1 - pooled_prob)) # Z-scores for alpha and power z_alpha = norm.ppf(1 - alpha / 2) z_beta = norm.ppf(power) # Sample size formula for two-proportion z-test n = ((z_alpha + z_beta) * std_dev / effect_size) ** 2 print(f"Required sample size per group: {math.ceil(n)}")
question mark

Wat is het grootste risico van slechte randomisatie of het gebruik van een te kleine steekproefgrootte bij A/B-testen?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 2. Hoofdstuk 2
some-alt