Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Randomisation et Taille de l'Échantillon | Conception de Tests A/B Efficaces
Test A/B Avec Python

Randomisation et Taille de l'Échantillon

Glissez pour afficher le menu

L'attribution aléatoire constitue la base des tests A/B fiables. En assignant les utilisateurs aux groupes de manière aléatoire, vous garantissez que les deux groupes sont statistiquement similaires, ce qui réduit le risque de biais de sélection. Le biais de sélection survient lorsque certains utilisateurs ont plus de chances de se retrouver dans un groupe plutôt qu'un autre, ce qui peut fausser les résultats et conduire à des conclusions erronées. Sans une randomisation adéquate, les différences entre les groupes peuvent être dues à des caractéristiques sous-jacentes plutôt qu'à la variable testée.

Plusieurs techniques de randomisation sont couramment utilisées dans les tests A/B :

  • Randomisation simple : chaque utilisateur a une chance égale d'être assigné à n'importe quel groupe, souvent à l'aide d'un générateur de nombres aléatoires ;
  • Randomisation par blocs : les utilisateurs sont regroupés en blocs, et au sein de chaque bloc, ils sont assignés aléatoirement à différents groupes afin de maintenir l'équilibre tout au long du test ;
  • Randomisation stratifiée : les utilisateurs sont divisés en strates selon des caractéristiques (comme l'âge ou la localisation), et la randomisation s'effectue au sein de chaque strate pour garantir la représentation de tous les sous-groupes.

La randomisation simple est la méthode la plus directe et convient généralement à la plupart des expériences numériques. Cependant, des techniques plus avancées permettent de maintenir l'équilibre lorsqu'on travaille avec de petits échantillons ou des sous-groupes importants.

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

Déterminer la taille d'échantillon appropriée est essentiel pour la fiabilité des résultats de votre test A/B. Un échantillon trop petit peut conduire à des résultats peu fiables ou non concluants, tandis qu'un échantillon inutilement grand gaspille des ressources. La taille de l'échantillon influence directement la puissance statistique de votre test – la probabilité de détecter une différence réelle si elle existe.

Les concepts clés dans le calcul de la taille d'échantillon incluent :

  • Effet minimal détectable (MDE) : la plus petite différence entre les groupes que vous souhaitez pouvoir détecter ;
  • Niveau de signification (alpha) : la probabilité d'un faux positif (généralement fixée à 0,05) ;
  • Puissance (1 - bêta) : la probabilité de détecter un effet réel (généralement fixée à 0,8 ou 80 %).

L'analyse de puissance combine ces facteurs pour estimer le nombre minimal d'utilisateurs nécessaires dans chaque groupe. Des tailles d'effet plus importantes ou des niveaux de signification plus élevés nécessitent moins d'utilisateurs, tandis que des effets plus faibles ou une puissance plus élevée exigent davantage d'utilisateurs.

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

Quel est le principal risque d'une mauvaise randomisation ou d'une taille d'échantillon trop petite dans un test A/B ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 2. Chapitre 2
some-alt