Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Randomisierung und Stichprobengröße | Effektive A/B-Tests Entwerfen
A/B-Testing mit Python

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.

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}")

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.

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

Was ist das Hauptrisiko einer schlechten Randomisierung oder einer zu kleinen Stichprobengröße beim A/B-Testing?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 2. Kapitel 2
some-alt