Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Aleatorización y Tamaño de Muestra | Diseño de Pruebas A/B Efectivas
Pruebas A/B con Python

Aleatorización y Tamaño de Muestra

Desliza para mostrar el menú

La asignación aleatoria es la base de pruebas A/B confiables. Al asignar usuarios a grupos de manera aleatoria, se garantiza que ambos grupos sean estadísticamente similares, lo que reduce el riesgo de sesgo de selección. El sesgo de selección ocurre cuando ciertos usuarios tienen más probabilidades de terminar en un grupo que en otro, lo que puede distorsionar los resultados y llevar a conclusiones erróneas. Sin una adecuada aleatorización, las diferencias entre los grupos pueden deberse a características subyacentes en lugar de a la variable que se está evaluando.

Existen varias técnicas de aleatorización comúnmente utilizadas en pruebas A/B:

  • Aleatorización simple: cada usuario tiene la misma probabilidad de ser asignado a cualquier grupo, generalmente utilizando un generador de números aleatorios;
  • Aleatorización por bloques: los usuarios se agrupan en bloques y, dentro de cada bloque, se asignan aleatoriamente a diferentes grupos para mantener el equilibrio durante toda la prueba;
  • Aleatorización estratificada: los usuarios se dividen en estratos según características (como edad o ubicación), y la aleatorización ocurre dentro de cada estrato para asegurar que todos los subgrupos estén representados.

La aleatorización simple es la más directa y suele ser suficiente para la mayoría de los experimentos digitales. Sin embargo, las técnicas más avanzadas ayudan a mantener el equilibrio cuando se trabaja con tamaños de muestra pequeños o subgrupos importantes.

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

Determinar el tamaño de muestra adecuado es fundamental para la fiabilidad de los resultados de una prueba A/B. Un tamaño de muestra demasiado pequeño puede llevar a resultados poco fiables o inconclusos, mientras que un tamaño excesivamente grande desperdicia recursos. El tamaño de la muestra afecta directamente el poder estadístico de la prueba: la probabilidad de detectar una diferencia real si existe.

Conceptos clave en el cálculo del tamaño de muestra incluyen:

  • Efecto mínimo detectable (MDE): la diferencia más pequeña entre grupos que se desea poder detectar;
  • Nivel de significancia (alfa): la probabilidad de un falso positivo (comúnmente establecido en 0.05);
  • Potencia (1 - beta): la probabilidad de detectar un efecto real (comúnmente establecida en 0.8 o 80%).

El análisis de potencia combina estos factores para estimar el número mínimo de usuarios necesarios en cada grupo. Efectos más grandes o niveles de significancia más altos requieren menos usuarios, mientras que efectos más pequeños o mayor potencia requieren más usuarios.

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

¿Cuál es el principal riesgo de una mala aleatorización o de utilizar un tamaño de muestra demasiado pequeño en pruebas A/B?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 2. Capítulo 2
some-alt