Randomisierung und Stichprobengröße
Swipe um das Menü anzuzeigen
Zufällige Zuweisung bildet die Grundlage für vertrauenswürdige A/B-Tests. Durch die zufällige Zuweisung von Nutzern zu Gruppen wird sichergestellt, dass beide Gruppen statistisch ähnlich sind, was das Risiko von Selektionsverzerrungen reduziert. Selektionsverzerrungen treten auf, wenn bestimmte Nutzer mit höherer Wahrscheinlichkeit in einer Gruppe als in einer anderen landen, was die Ergebnisse verfälschen und zu falschen Schlussfolgerungen führen kann. Ohne ordnungsgemäße Randomisierung können Unterschiede zwischen den Gruppen durch zugrunde liegende Eigenschaften und nicht durch die getestete Variable verursacht werden.
Mehrere Randomisierungstechniken werden häufig im A/B-Testing eingesetzt:
- Einfache Randomisierung: Jeder Nutzer hat die gleiche Chance, einer beliebigen Gruppe zugeordnet zu werden, häufig unter Verwendung eines Zufallszahlengenerators;
- Blockrandomisierung: Nutzer werden in Blöcke gruppiert, und innerhalb jedes Blocks werden die Nutzer zufällig verschiedenen Gruppen zugewiesen, um das Gleichgewicht während des gesamten Tests zu wahren;
- Stratifizierte Randomisierung: Nutzer werden anhand von Merkmalen (wie Alter oder Standort) in Schichten unterteilt, und die Randomisierung erfolgt innerhalb jeder Schicht, um sicherzustellen, dass alle Untergruppen vertreten sind.
Einfache Randomisierung ist die unkomplizierteste Methode und für die meisten digitalen Experimente oft ausreichend. Fortgeschrittenere Techniken helfen jedoch, das Gleichgewicht bei kleineren Stichprobengrößen oder wichtigen Untergruppen aufrechtzuerhalten.
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}")
Die Bestimmung der richtigen Stichprobengröße ist entscheidend für die Zuverlässigkeit der Ergebnisse eines A/B-Tests. Eine zu kleine Stichprobe kann zu unzuverlässigen oder nicht eindeutigen Ergebnissen führen, während eine unnötig große Stichprobe Ressourcen verschwendet. Die Stichprobengröße beeinflusst direkt die statistische Power des Tests – die Wahrscheinlichkeit, einen tatsächlichen Unterschied zu erkennen, falls dieser existiert.
Wichtige Konzepte bei der Berechnung der Stichprobengröße sind:
- Minimal nachweisbarer Effekt (MDE): der kleinste Unterschied zwischen den Gruppen, den man erkennen möchte;
- Signifikanzniveau (Alpha): die Wahrscheinlichkeit eines Fehlalarms (häufig auf 0,05 gesetzt);
- Power (1 - Beta): die Wahrscheinlichkeit, einen tatsächlichen Effekt zu erkennen (häufig auf 0,8 bzw. 80 % gesetzt).
Power-Analyse kombiniert diese Faktoren, um die minimale Anzahl an Nutzern pro Gruppe zu schätzen. Größere Effektgrößen oder höhere Signifikanzniveaus erfordern weniger Nutzer, während kleinere Effekte oder höhere Power mehr Nutzer erfordern.
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)}")
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen