Estadística

Potencia Estadística por Simulación en Test A/B

Potencia estadística por simulación: cuándo la fórmula cerrada miente, cómo validar el simulador y cuántas réplicas correr. Con cuatro casos medidos.

Ilustración plana de cientos de trazos finos y translúcidos verdes irradiando hacia abajo y formando juntos la silueta de una campana sólida en el centro

La fórmula de tamaño de muestra no es una ley de la naturaleza, es un modelo de tus datos y de tu análisis. Cuando los dos coinciden, acierta de lleno: en nuestro test, el N prescrito devolvió 80,08 por ciento de potencia medida contra los 80 nominales. Cuando no coinciden, se equivoca en silencio: el mismo N entrega 65,07 por ciento con tres variantes corregidas y 54,66 por ciento con sorteo por cuenta. Este artículo muestra cómo calcular la potencia estadística por simulación, contando en vez de derivando, cómo validar el simulador antes de confiar en él, cuántas réplicas bastan, y cuatro casos medidos en los que la fórmula acierta, miente poco, miente mucho o ni siquiera existe. Forma parte de nuestra guía completa de test A/B y complementa cuántos visitantes necesita un test A/B.

Lo que la fórmula asume sin avisar

La fórmula clásica de dos proporciones, la que está detrás de toda calculadora de muestra del mercado, carga un paquete de supuestos que nadie lee:

La mayor parte de los tests de conversión en landing page cumple los seis. Y por eso la fórmula tiene la fama que tiene. El problema es que el momento en el que más necesitas un plan de muestra confiable, cuando la métrica son ingresos, la unidad es cuenta, las variantes son cuatro o la lectura es secuencial, es exactamente el momento en el que uno o más de esos supuestos cae.

La simulación es el plan B universal, y el más barato: no necesita que nada de eso sea verdad, porque no deriva nada.

Potencia estadística por simulación: la receta en cinco pasos

El bucle de un análisis de potencia por simulaciónDiagrama de flujo con cinco cajas conectadas por flechas. La primera caja dice elegir el modelo de los datos y el efecto verdadero. La segunda dice generar un experimento falso con N por brazo. La tercera dice correr el mismo análisis que vas a correr de verdad. La cuarta dice anotar si salió significativo. Una flecha curva vuelve de la cuarta a la segunda caja, indicando repetición de miles de veces. Una flecha recta sigue de la cuarta a la quinta caja, que dice la potencia es la fracción de significativos.1. modelo de losdatos y efectoverdadero2. generar unexperimentofalso con N3. correr EL MISMOanálisis del testde verdad4. ¿anotósignificativo?repetir R veces (miles)5. potencia = fracción de significativos
El paso 3 es lo que separa una simulación útil de una inútil: si el simulador corre un test z simple pero tú vas a mirar el resultado tres veces con corrección secuencial, el número que salga no describe tu test.
  1. Elige el modelo de los datos. O una distribución paramétrica (Bernoulli, lognormal, binomial negativa) o, mejor aún, el remuestreo de tus propios datos históricos, que evita tener que elegir forma.
  2. Elige el efecto verdadero que quieres ser capaz de detectar. Es el MDE, y es una decisión de negocio, no estadística. Mira efecto mínimo detectable.
  3. Corre el análisis que vas a correr de verdad. Con la misma corrección, el mismo capping, la misma unidad, las mismas miradas.
  4. Anota si salió significativo.
  5. Repite y cuenta. La fracción de significativos es la potencia. Rehaciendo todo con efecto verdadero igual a cero, esa misma fracción es la tasa de falso positivo.

Paso cero: calibrar contra el caso conocido

Antes de confiar en cualquier número exótico que salga de tu simulador, tiene que reproducir un caso donde la respuesta correcta ya se conoce. Es el mismo principio de un test A/A, aplicado al código de simulación en vez de al sistema de sorteo.

Pídele a la fórmula el plan más simple: base de 5 por ciento, objetivo de detectar más 10 por ciento relativo, 95 por ciento de confianza, 80 por ciento de potencia.

Calculadora de tamaño de muestra
-Visitantes por variación
-Total (2 variaciones)
-Duración estimada

Cálculo por aproximación normal de dos proporciones, 2 variaciones (50/50). Cambia los campos y mira el impacto en vivo.

Devuelve 31.234 por variación. Corriendo 4 mil experimentos simulados en ese N, con el efecto verdadero de más 10 por ciento realmente presente:

Escenario Esperado Simulado EE de Monte Carlo
Potencia con efecto de más 10% relativo 80,00% 80,08% 0,63 pp
Ganancia relativa media observada 10,00% 10,09% -
Falso positivo con efecto cero 5,00% 5,35% 0,34 pp

El simulador reproduce la fórmula con un margen de menos de una décima de punto porcentual en la potencia. Solo después de eso los números de los casos difíciles significan algo. Si esa calibración falla, el problema está en el código, no en la estadística, y vale buscar al sospechoso de siempre: un generador aleatorio con estado compartido entre ejecuciones, lo que hace que una semilla “fija” produzca resultados distintos según el orden en el que corren las simulaciones.

¿Cuántas réplicas? La cuenta en una línea

Toda estimación de potencia por simulación es ella misma una estimación, con error. Como el resultado de cada réplica es un sí o no, el error estándar de Monte Carlo es la raíz de p por (1 menos p) dividido por el número de réplicas.

Réplicas EE para potencia cerca de 80% Intervalo de 95% EE para alfa cerca de 5% Intervalo de 95%
200 2,828 pp más o menos 5,54 pp 1,541 pp más o menos 3,02 pp
1.000 1,265 pp más o menos 2,48 pp 0,689 pp más o menos 1,35 pp
5.000 0,566 pp más o menos 1,11 pp 0,308 pp más o menos 0,60 pp
20.000 0,283 pp más o menos 0,55 pp 0,154 pp más o menos 0,30 pp
100.000 0,126 pp más o menos 0,25 pp 0,069 pp más o menos 0,14 pp

Dos lecturas prácticas. Primero, 200 réplicas no sirven para nada: una potencia medida en 80 por ciento podría ser 75 u 85, y ese rango cubre la diferencia entre un plan bueno y uno malo. Segundo, el retorno cae rápido: pasar de 20 mil a 100 mil réplicas cuesta cinco veces más tiempo para ganar 0,3 punto porcentual de precisión.

Reportar potencia simulada sin el error de Monte Carlo es el equivalente a reportar una conversión sin intervalo de confianza. En este artículo cada línea viene con el suyo.

Caso 1: la fórmula acierta (conversión binaria)

Es el caso ya mostrado en la calibración, y vale registrar la conclusión de forma explícita porque suele perderse en artículos que solo hablan de los casos difíciles: para tasa de conversión con dos variantes y una lectura al final, la fórmula cerrada está en lo correcto y simular es una pérdida de tiempo. Es instantánea, es reproducible, no tiene error de Monte Carlo y devuelve el mismo número que devolvieron 4 mil simulaciones.

Deng, Knoblich y Lu defienden ese punto en la dirección general: en el contexto de datos a escala, la mayoría de las métricas sigue una distribución aproximadamente normal, lo que abre la posibilidad de modelarlas directamente con fórmulas cerradas y algoritmos distribuidos, a una fracción del coste de procedimientos basados en remuestreo como el bootstrap. La simulación es la herramienta para cuando el caso se sale del carril, no la sustituta por defecto.

Caso 2: la fórmula miente sobre el intervalo, no sobre el test (ingresos por usuario)

Aquí la cosa se pone interesante, y la respuesta es más sutil de lo que sugiere el folclore.

Nuestra métrica: ingresos por usuario, donde 5 por ciento de los visitantes compran y el valor del pedido sigue una lognormal. Los momentos exactos de esa mezcla:

Propiedad Valor
Media 7,4579
Desviación típica 49,4463
Coeficiente de variación 6,630
Coeficiente de asimetría 15,134

Una asimetría de 15 es el territorio que Kohavi, Deng, Longbotham y Xu tratan en la regla general número 7. Su regla: el número mínimo de observaciones independientes para que la media tenga distribución normal es 355 por el cuadrado del coeficiente de asimetría, por variación, y recomiendan aplicarla siempre que el módulo de la asimetría pase de 1. Para nuestra métrica eso da 81.306 usuarios por variación.

La tabla de Bing que los autores publican muestra el orden de magnitud real del problema:

Métrica de Bing Asimetría Muestra mínima por la regla Sensibilidad al 80% de potencia
Ingresos por usuario 17,9 114 mil 4,4%
Ingresos por usuario (con capping) 5,2 9,7 mil 10,5%
Sesiones por usuario 3,6 4,70 mil 5,4%
Tiempo hasta el éxito 2,1 1,55 mil 12,3%

Fuimos a medir. Y el resultado se divide en dos, que es justamente el tipo de matiz que solo la simulación revela.

El intervalo de confianza de UNA muestra se rompe feo. Preguntamos, en 20 mil réplicas por línea, con qué frecuencia el intervalo de 95 por ciento en torno a la media de un único brazo contiene el valor verdadero de 7,4579:

Usuarios en el brazo Cobertura del IC 95% Cola que falla por abajo Cola que falla por arriba
100 79,83% 20,08% 0,09%
300 87,43% 12,29% 0,27%
1.000 92,25% 7,08% 0,67%
3.000 93,81% 5,10% 1,08%
10.000 94,56% 3,90% 1,54%
30.000 95,19% 2,95% 1,86%
81.306 (la regla) 94,77% 2,88% 2,35%

Con 100 usuarios, el intervalo que promete 95 por ciento entrega 79,83, y el error es casi todo de un solo lado: en 20 por ciento de las veces el intervalo entero queda por debajo de la media verdadera, porque la muestra no capturó ninguno de los pedidos gigantes que hacen la media. Kohavi y coautores registran exactamente ese comportamiento, al decir que con 100 y mil usuarios la distribución de la media muestral queda bastante asimétrica y el intervalo bilateral asumiendo normalidad fallaría la media verdadera más del 5 por ciento de las veces.

Y mira la última línea. La regla de los 355 promete un intervalo en el que las dos probabilidades de cola, nominalmente 0,025 cada una, quedan no mayores que 0,03 y no menores que 0,02. En el N que ella prescribe, medimos colas de 0,0288 y 0,0235: las dos dentro del rango prometido. En 30 mil, la cola de arriba cae a 0,0186 y se sale del rango. La regla entrega exactamente lo que promete, en el N en el que lo promete.

Cobertura del intervalo de confianza a medida que crece la muestraCurva ascendente sobre un eje horizontal en escala logarítmica de 100 a 81 mil usuarios. La cobertura del intervalo de confianza de una muestra empieza en 79,83 por ciento con 100 usuarios, sube a 87,43 en 300, 92,25 en mil, 93,81 en 3 mil, 94,56 en 10 mil y alcanza 95,19 en 30 mil y 94,77 en 81.306. Una línea discontinua horizontal marca el nivel nominal de 95 por ciento. Una línea punteada vertical marca el N prescrito por la regla de los 355.95%regla de los 35579,8%87,4%92,3%94,6%1003001 mil3 mil10 mil30 mil81 milusuarios en el brazo (escala logarítmica)
Con asimetría de 15, el intervalo de confianza de una sola muestra es gravemente optimista hasta los miles y solo entra en lo prometido cerca del N que la regla de los 355 prescribe.

Pero la comparación entre DOS brazos se comporta mucho mejor. Medimos la tasa de falso positivo del test de dos medias sobre la misma métrica, bajo hipótesis nula verdadera, también en 20 mil réplicas:

Usuarios por brazo Falso positivo (nominal 5%) Cola izquierda Cola derecha
100 3,18% 1,57% 1,60%
300 4,31% 2,33% 1,98%
1.000 4,88% 2,44% 2,44%
3.000 4,74% 2,46% 2,27%
10.000 4,91% 2,54% 2,37%
30.000 4,93% 2,46% 2,48%

Con mil usuarios por brazo, una centésima parte de lo que pide la regla de los 355, el test ya está en 4,88 por ciento. Con 100 usuarios queda conservador (3,18 por ciento), lo que se equivoca hacia el lado seguro. Y en el N que la fórmula cerrada prescribe para detectar más 10 por ciento relativo en esa métrica (69.005 por variación), la simulación devolvió 78,60 por ciento de potencia contra 80 nominales, y alfa de 4,50.

El motivo del contraste es que la asimetría de los dos brazos apunta hacia el mismo lado y buena parte de ella se cancela en la diferencia. Es un resultado bueno para quien corre tests A/B y un resultado pésimo para quien usa el intervalo de confianza de un brazo aislado como si fuera la verdad sobre esos ingresos.

Error del intervalo de una muestra contra error del test de dos muestrasGráfico de barras pareadas en cuatro tamaños de muestra. En cada par, la barra oscura es la tasa de error del intervalo de una muestra y la barra clara es la tasa de error del test de dos muestras, las dos comparadas con el nominal de 5 por ciento marcado por una línea discontinua. Con 100 usuarios la barra oscura llega a 20,2 por ciento y la clara queda en 3,2. Con mil la oscura cae a 7,8 y la clara sube a 4,9. Con 10 mil la oscura es 5,4 y la clara 4,9. Con 30 mil la oscura es 4,8 y la clara 4,9.5%20,2%7,8%5,4%4,8%3,2%4,9%4,9%4,9%1001.00010.00030.000error del IC de una muestraerror del test de dos muestras
La misma distribución asimétrica, dos preguntas distintas. El intervalo de un solo brazo se equivoca 4 veces lo prometido con 100 usuarios; la comparación entre brazos ya está calibrada con mil.

Y la salida más barata sigue siendo la que Kohavi y coautores señalan en la propia tabla: capping. Cortando los ingresos en el percentil 99 de la distribución (el corte cae en 212,19), la asimetría de nuestra métrica se desploma de 15,134 a 5,764, y el N por la fórmula, para el mismo objetivo de más 10 por ciento relativo, cae de 69.005 a 40.840 por variación. Con el capping, el falso positivo del test de dos muestras ya está en 4,87 por ciento con 300 usuarios por brazo. El detalle está en outliers y capping.

Caso 3: no existe fórmula (métrica de cuantil)

Una métrica de percentil no tiene fórmula cerrada de tamaño de muestra que quepa en un artículo. Deng, Knoblich y Lu registran que los cuantiles de tiempo de carga en 75, 95 o 99 por ciento están entre las métricas que más atención reciben en la comunidad de rendimiento web, y que las dos rutas habituales para el intervalo de confianza, estimar la densidad o remuestrear por bootstrap, tienen problemas propios: la densidad en la cola decae a cero, así que un pequeño sesgo en la estimación se convierte en un sesgo grande en la varianza, y el bootstrap exige ordenar los datos repetidas veces, lo que se vuelve caro a escala.

Para planificación de muestra, sin embargo, el coste es irrelevante: corres el simulador una vez, en tu portátil, antes de que el test exista.

Modelamos el tiempo de carga como una lognormal con mediana de 544,6 ms, media de 633,5 ms y percentil 90 de 1.102,0 ms. La variante reduce el tiempo en 5 por ciento. El análisis simulado fue el que un equipo realmente correría: calcular el p90 de cada brazo y comparar con un error estándar venido de 120 remuestreos bootstrap. 400 réplicas por línea:

Usuarios por brazo Reducción real Resultado EE de Monte Carlo
2.000 5% potencia 41,75% 2,47 pp
3.000 5% potencia 52,75% 2,50 pp
5.000 5% potencia 75,50% 2,15 pp
10.000 5% potencia 97,00% 0,85 pp
3.000 0% falso positivo 5,25% 1,12 pp
10.000 0% falso positivo 6,25% 1,21 pp

De ahí salen dos cosas, y ninguna de ellas saldría de ninguna fórmula. El plan correcto para detectar 5 por ciento en el p90 queda entre 5 y 10 mil usuarios por brazo, y la curva es empinada en ese tramo, así que errar el N por abajo cuesta mucha potencia. Y el procedimiento es honesto bajo la nula (5,25 y 6,25 por ciento, los dos dentro de dos errores estándar de Monte Carlo del nominal), lo que es una validación del método de análisis en sí, no solo del plan.

Más sobre esa familia en métricas de cuantil.

Caso 4: la fórmula miente por omisión (tres variantes)

Este es el caso más peligroso, porque todo parece correcto. Abres la calculadora, devuelve 31.234 por variación para 80 por ciento de potencia, multiplicas por 4 brazos para saber el tráfico total y te vas a dormir tranquilo. Solo que la calculadora respondió sobre una comparación, y tu test tiene tres.

Simulamos 1.500 programas de un control contra tres variantes, en los que una de las variantes tiene efecto real de más 10 por ciento y las otras dos son nulas, aplicando Bonferroni sobre las tres comparaciones:

Escenario Detecta la variante verdadera Declara alguna ganadora Falso positivo en una nula
n = 31.234, con Bonferroni 65,07% 65,13% 1,33%
n = 31.234, sin corrección 80,07% 80,07% 4,27%
n = 43.000, con Bonferroni 82,00% 82,00% 1,13%
n = 31.234, ninguna ganadora, con Bonferroni - 1,73% 1,73%
n = 31.234, ninguna ganadora, sin corrección - 5,33% 5,33%

La potencia cae de 80,07 a 65,07 por ciento sin que nada cambie en el experimento más allá del número de brazos. Para volver a los 80, el N necesita subir de 31.234 a cerca de 43 mil por variación, un incremento de 38 por ciento en cada brazo, cuatro veces. Es el peaje de comparar más cosas al mismo tiempo, y es invisible en la calculadora.

Vale notar la columna de la derecha: la corrección funciona. Sin Bonferroni, 5,33 por ciento de los programas sin ninguna ganadora declaran una ganadora falsa; con Bonferroni, 1,73. Más en probar varias variantes.

Caso 5: la fórmula se equivoca por 25 puntos (sorteo por cluster)

La mayor desviación que medimos no vino de una métrica rara, vino de la unidad de sorteo. Cuando el experimento sortea la cuenta y el análisis cuenta el usuario, el plan de 31.234 por variación, que promete 80 por ciento, entrega 54,66 por ciento de potencia con 5 usuarios por cuenta y correlación intraclase de 0,20, y 38,06 por ciento con 10 usuarios por cuenta.

La fórmula no tiene ni idea de eso porque no tiene manera de saberlo: nada en el formulario de la calculadora pregunta cómo se hizo el sorteo. La simulación lo sabe, porque el modelo de datos que tú escribes incluye la estructura de cuenta. Tratamos el caso entero, con la corrección del efecto de diseño, en aleatorización por cluster.

Potencia prometida por la fórmula contra potencia medida en cinco escenariosGráfico de barras con cinco escenarios. Una línea discontinua horizontal marca el 80 por ciento prometido por la fórmula. La barra de la conversión binaria alcanza 80,08 por ciento. La barra de los ingresos por usuario en el N de la fórmula alcanza 78,60. La barra de las tres variantes con Bonferroni cae a 65,07. La barra del sorteo por cuenta con cinco usuarios cae a 54,66. La barra del sorteo por cuenta con diez usuarios cae a 38,06.80%80,08%78,60%65,07%54,66%38,06%conversiónbinariaingresos/usuarioasimetría 153 variantesBonferronipor cuenta5 usuariospor cuenta10 usuariostodos corriendo exactamente el mismo plan de 31.234 por variación
El mismo N, la misma promesa de 80 por ciento, cinco realidades. La fórmula no se equivoca por ser mala, se equivoca porque solo sabe del caso que describe.

Cuatro trampas de quien simula

Simular el modelo en vez de los datos. Si eliges una lognormal porque es bonita y tus ingresos reales no son lognormales, la potencia que salga describe la lognormal. La defensa es remuestrear: toma un mes de datos reales por usuario, sortea con reposición para formar los dos brazos, y aplica el efecto multiplicando la métrica del brazo tratado. Eso preserva la forma real de tu distribución, incluidos los pedazos que ni sabes que existen.

Simular un análisis distinto del que vas a correr. Es el error más común y el más caro. Si el simulador corre un test z simple y el equipo va a mirar el panel todos los lunes, la potencia simulada describe un test que no es el tuyo. Lo mismo vale para capping, exclusión de outliers, filtros de bots y ajuste por covariable: todo lo que esté en el análisis real necesita estar en la simulación. Mira el problema del peeking.

Semilla no fijada, o peor, fijada solo en apariencia. Un generador con estado global compartido entre ejecuciones hace que la misma semilla devuelva resultados distintos según el orden en el que corren las simulaciones. El síntoma es un número que no se reproduce cuando corres el script solo. Toda tabla de este artículo fue generada con semilla explícita por línea y comprobada corriéndola aisladamente.

Reportar la potencia sin el error de Monte Carlo. Ya dicho arriba, y repetido aquí porque es lo que más desaparece del informe final. Una diferencia de 2 puntos porcentuales entre dos planes no significa nada si el error de simulación es de 2,8.

Cuándo NO simular

La simulación cuesta tiempo de escritura, tiempo de ejecución y un artefacto más que mantener. No vale la pena cuando:

La regla general: simula para planificar, usa fórmula cerrada para operar. El plan corre una vez y puede tardar minutos; la lectura corre todos los días y necesita ser barata.

Hazlo automático en Donnu

El motivo de que casi nadie haga análisis de potencia por simulación no es la dificultad conceptual, es que exige escribir código desechable, sin lugar donde vivir, y rehacerlo todo cuando el plan cambia. En Donnu el plan de muestra se calcula de las dos formas y muestra ambas lado a lado: el número de la fórmula cerrada y el número que sale de simular tu análisis, con tu histórico remuestreado en lugar de una distribución inventada. Cuando el diseño del experimento incluye algo que la fórmula no cubre, más de dos variantes, sorteo por cuenta, capping, lectura secuencial, el panel avisa cuánta potencia cuesta ese detalle antes de que enciendas el test, con el error de Monte Carlo declarado al lado.

Preguntas frecuentes

Las respuestas cortas están en la sección de preguntas frecuentes de esta página, montadas a partir de los mismos cálculos presentados aquí.

Referencias

Lee también

Leia em português · Read in English

Preguntas frecuentes

¿Qué es el análisis de potencia por simulación?
Es estimar la potencia de un test generando miles de experimentos falsos con un efecto que tú mismo elegiste, corriendo en cada uno exactamente el análisis que vas a correr de verdad, y contando en qué fracción de ellos el resultado sale significativo. No hay ninguna fórmula involucrada: el número sale de contar. Eso permite calcular potencia para cualquier métrica y cualquier análisis, incluidos los que no tienen ninguna fórmula cerrada.
¿Cuándo deja de valer la fórmula cerrada de tamaño de muestra?
Vale muy bien para el caso para el que fue hecha: comparación de dos proporciones con una sola mirada. Nuestra simulación devolvió 80,08 por ciento de potencia en el N que la fórmula prescribió, contra los 80 nominales. Deja de valer cuando el análisis cambia: con tres variantes y corrección de Bonferroni el mismo N entrega 65,07 por ciento, y con sorteo por cuenta y correlación intraclase de 0,20 entrega 54,66.
¿Cuántas réplicas necesito correr?
Depende de la precisión que quieras. El error estándar de Monte Carlo de una estimación de potencia cerca de 80 por ciento es la raíz de 0,16 dividida por el número de réplicas. Con mil réplicas el intervalo es de más o menos 2,48 puntos porcentuales, con 20 mil es de 0,55 y con 100 mil es de 0,25. Para una decisión de planificación, entre 2 mil y 10 mil réplicas suele bastar; para publicar una tabla, vale subir.
¿Cómo sé que mi simulador no está equivocado?
Calibrándolo contra un caso en el que la respuesta correcta es conocida. Corre el simulador en el escenario más simple, dos proporciones y una sola mirada, en el N que la fórmula cerrada prescribe: tiene que devolver 80 por ciento de potencia y 5 por ciento de falso positivo. El nuestro devolvió 80,08 y 5,35. Si ese caso no cierra, ningún resultado exótico del mismo código merece confianza.
¿La asimetría de los ingresos por usuario rompe el test A/B?
Rompe el intervalo de confianza de una sola muestra, no la comparación entre dos. En nuestra simulación con asimetría de 15,13, el intervalo de 95 por ciento para la media de un único brazo cubrió el valor verdadero en solo 79,83 por ciento de las veces con 100 usuarios, pero la comparación entre los dos brazos mantuvo el falso positivo en 4,88 por ciento ya con mil usuarios por brazo. La asimetría se cancela en buena parte entre los dos lados.
¿La simulación sustituye a la fórmula cerrada?
No, la complementa. Para una métrica binaria con una sola mirada, la fórmula es instantánea y correcta, y simular sería un desperdicio. Deng, Knoblich y Lu recuerdan que los procedimientos basados en remuestreo se vuelven caros a gran escala, y proponen justamente fórmulas cerradas como alternativa. La regla práctica es usar la fórmula cuando el caso es el suyo y simular cuando no lo es.