Randomisering och Stickprovsstorlek
Svep för att visa menyn
Slumpmässig tilldelning är grunden för tillförlitlig A/B-testning. Genom att slumpmässigt tilldela användare till grupper säkerställs att båda grupperna är statistiskt lika, vilket minskar risken för urvalsbias. Urvalsbias uppstår när vissa användare har större sannolikhet att hamna i en grupp än en annan, vilket kan snedvrida resultaten och leda till felaktiga slutsatser. Utan korrekt randomisering kan skillnader mellan grupper bero på underliggande egenskaper snarare än den variabel du testar.
Flera randomiseringstekniker används ofta vid A/B-testning:
- Enkel randomisering: varje användare har lika stor chans att tilldelas någon grupp, ofta med hjälp av en slumptalsgenerator;
- Blockrandomisering: användare delas in i block, och inom varje block tilldelas användare slumpmässigt till olika grupper för att bibehålla balans under hela testet;
- Stratifierad randomisering: användare delas in i strata baserat på egenskaper (såsom ålder eller plats), och randomisering sker inom varje stratum för att säkerställa att alla undergrupper är representerade.
Enkel randomisering är den mest grundläggande och är ofta tillräcklig för de flesta digitala experiment. Mer avancerade tekniker hjälper dock till att bibehålla balans vid mindre urvalsstorlekar eller viktiga undergrupper.
1234567891011121314151617import 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}")
Att bestämma rätt urvalsstorlek är avgörande för tillförlitligheten i dina A/B-testresultat. Ett för litet urval kan leda till opålitliga eller otydliga resultat, medan ett onödigt stort urval slösar resurser. Urvalsstorleken påverkar direkt testets statistiska styrka – sannolikheten att upptäcka en verklig skillnad om en sådan finns.
Centrala begrepp vid beräkning av urvalsstorlek inkluderar:
- Minsta detekterbara effekt (MDE): den minsta skillnaden mellan grupper som du vill kunna upptäcka;
- Signifikansnivå (alfa): sannolikheten för ett falskt positivt resultat (vanligtvis satt till 0,05);
- Styrka (1 - beta): sannolikheten att upptäcka en verklig effekt (vanligtvis satt till 0,8 eller 80%).
Styrkeanalys kombinerar dessa faktorer för att uppskatta det minsta antalet användare som behövs i varje grupp. Större effekter eller högre signifikansnivåer kräver färre användare, medan mindre effekter eller högre styrka kräver fler användare.
12345678910111213141516171819202122from 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)}")
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal