Métricas de Conteo en Test A/B: Poisson y dispersión
Las métricas de conteo en test A/B casi nunca siguen Poisson. Cómo medir la sobredispersión, dimensionar bien y no subestimar el error a la mitad.

📚 Este artículo es parte de la guía Significancia Estadística en Tests A/B: La Guía.
Sesiones por usuario, ítems por pedido y páginas por sesión son métricas de conteo, y su varianza casi siempre es mayor que la media. Eso se llama sobredispersión, y tiene un precio directo en tamaño de muestra: con índice de dispersión 4, que es un valor común en datos de producto, el test que el modelo de Poisson dimensionaría con 2.011 usuarios por variación necesita en realidad 8.194. Si usted ignora eso y calcula el error estándar como Poisson manda, sale a la mitad del correcto, y el mismo dato que da z de 3,42 en la cuenta correcta da 6,85 en la cuenta ingenua. Esta guía muestra cómo medir la dispersión, cómo dimensionar bien y cuándo cambiar el conteo por un proxy binario. Forma parte de nuestra guía completa de test A/B y es la pareja directa de tamaño de muestra para métricas continuas, que cubre medias e ingreso.
Las métricas de conteo no son proporción ni media común
La mayoría de las herramientas de test A/B solo sabe hacer una cuenta: comparar dos proporciones. Eso cubre tasa de conversión, tasa de clic, tasa de rebote, cualquier cosa en la que cada usuario aporte un cero o un uno.
El conteo es otra cosa. Cada usuario aporta un entero no negativo, y la distribución de esos enteros tiene una cola:
| métrica de conteo | unidad | dónde aparece |
|---|---|---|
| sesiones por usuario | usuario asignado | engagement, retención semanal |
| páginas por sesión | sesión | profundidad de navegación, búsqueda interna |
| ítems por pedido | pedido | ecommerce, carrito medio |
| búsquedas por visita | visita | búsqueda en el sitio, catálogo |
| mensajes enviados por cuenta | cuenta | productos de comunicación |
| tickets abiertos por cliente | cliente | métrica de guardarraíl de soporte |
Todas ellas comparten el mismo comportamiento: un montón de usuarios con cero, uno o dos eventos, y una minoría con decenas. Es la misma cola larga que ya discutimos en outliers y capping, solo que aquí nace de la naturaleza del conteo, no de un valor monetario extremo.
Poisson asume que la varianza es igual a la media
El modelo estándar para conteo es el de Poisson. Tiene un único parámetro, que es al mismo tiempo la media y la varianza de la distribución. Esa es toda la suposición, y casi nunca se cumple en datos de producto.
El motivo es simple y no es estadístico: los usuarios no son iguales entre sí. Un Poisson con media 3,2 describiría una población en la que todo el mundo tiene la misma propensión a generar sesiones y la variación es solo suerte. Su base real tiene un grupo que entra una vez al mes y otro que entra tres veces al día. Esa heterogeneidad entre usuarios entra en la varianza total y no entra en la media.
El modelo que acomoda esto es la binomial negativa, que tiene dos parámetros: la media y un parámetro de dispersión, normalmente escrito como kappa. La relación entre ellos es directa:
varianza = media + kappa por el cuadrado de la media
Con kappa igual a cero, la binomial negativa se vuelve exactamente Poisson. Cuanto mayor el kappa, más dispersa la distribución alrededor de la misma media.
Mida la dispersión antes de dimensionar nada
No necesita ninguna herramienta especial para saber si tiene sobredispersión. Tome los datos de una semana histórica, calcule la media y la varianza del conteo por usuario, y divida una por la otra. Ese es el índice de dispersión:
índice de dispersión = varianza dividida por la media
Bajo Poisson vale 1. En datos de producto suele quedar entre 2 y 8. Y se relaciona con el kappa de forma exacta: el índice de dispersión es igual a 1 más kappa por la media, lo que permite ir de uno al otro sin simulación.
Con media de 3,2 sesiones por usuario en la semana y un objetivo de detectar más 5 por ciento en la tasa, la cuenta cambia así:
| varianza observada | índice de dispersión | kappa | usuarios por variación | días a 40.000 usuarios por semana |
|---|---|---|---|---|
| 3,2 | 1,0 (Poisson) | 0,0000 | 2.011 | 1 |
| 6,4 | 2,0 | 0,3125 | 4.072 | 2 |
| 9,6 | 3,0 | 0,6250 | 6.133 | 3 |
| 12,8 | 4,0 | 0,9375 | 8.194 | 3 |
| 19,2 | 6,0 | 1,5625 | 12.315 | 5 |
Note que la relación es prácticamente lineal en el índice de dispersión. Ignorar la sobredispersión no es un redondeo, es un error de factor entero. Quien dimensionó por Poisson un test con índice de dispersión 4 está corriendo con un cuarto de la muestra necesaria, y va a leer el resultado como “no dio nada” cuando el test en realidad nunca tuvo poder.
La fórmula, y la prueba de que está correcta
La referencia para dimensionar la razón entre dos tasas de conteo es Zhu y Lakkis, publicada en Statistics in Medicine en 2014. Es la fórmula implementada en software de dimensionamiento y la que la documentación de PASS describe como método 3, la versión que estima la varianza nula por máxima verosimilitud. Zhu y Lakkis registran que sus simulaciones indican que los métodos 2 y 3 son más precisos que el método 1.
Aquí está, en JavaScript, exactamente como la usamos para generar las tablas de este artículo:
// Zhu y Lakkis (2014), metodo 3 (maxima verosimilitud bajo la nula).
// lambda1 = tasa del control | RR = razon de tasas objetivo
// kappa = parametro de dispersion | mut = tiempo medio de exposicion
function nbSampleSize({ lambda1, RR, kappa, mut = 1, R = 1, alpha = 0.05, power = 0.8 }) {
const lambda2 = lambda1 * RR;
const VA = (1 / mut) * (1 / lambda1 + 1 / (R * lambda2)) + ((1 + R) * kappa) / R;
const V0 = Math.pow(1 + R, 2) / (mut * R * (lambda1 + R * lambda2)) + ((1 + R) * kappa) / R;
const za = zCritical(alpha, 2); // 1,9600 en el bilateral al 5%
const zb = normInv(power); // 0,8416 para 80% de poder
return Math.ceil(
Math.pow(za * Math.sqrt(V0) + zb * Math.sqrt(VA), 2) / Math.pow(Math.log(RR), 2)
);
}
Una fórmula publicada sin verificación es solo una afirmación. Corrimos nuestra implementación contra el escenario de referencia que Zhu y Lakkis publican en la Tabla I del artículo (tasa de control 0,8 evento por unidad de tiempo, razón de tasas de 0,85, tiempo medio de exposición 0,75, alfa 0,05, poder 80 por ciento, asignación balanceada) y comparamos línea a línea:
| parámetro de dispersión | nuestra implementación | valor publicado | diferencia |
|---|---|---|---|
| 0,4 | 1.311 | 1.311 | 0,000% |
| 0,7 | 1.490 | 1.490 | 0,000% |
| 1,0 | 1.668 | 1.668 | 0,000% |
| 1,5 | 1.965 | 1.965 | 0,000% |
Reproducción exacta en las cuatro líneas. Es ese mismo bloque de código el que generó la tabla del índice de dispersión de la sección anterior y la comparación de la próxima.
Cuánto miente Poisson, por tamaño de efecto
Con el parámetro de dispersión fijado en 0,9375 (lo que corresponde a varianza 12,8 sobre media 3,2, o índice de dispersión 4), la diferencia entre dimensionar por Poisson y dimensionar bien es constante y grande:
| efecto objetivo en la tasa | binomial negativa | días | Poisson (kappa cero) | días | razón |
|---|---|---|---|---|---|
| más 2 por ciento | 49.915 | 18 | 12.387 | 5 | 4,0 veces |
| más 3 por ciento | 22.376 | 8 | 5.532 | 2 | 4,0 veces |
| más 5 por ciento | 8.194 | 3 | 2.011 | 1 | 4,1 veces |
| más 8 por ciento | 3.282 | 2 | 797 | 1 | 4,1 veces |
| más 10 por ciento | 2.135 | 1 | 515 | 1 | 4,1 veces |
Días calculados a 40.000 usuarios por semana, con dos brazos. La razón entre las dos columnas queda atrapada alrededor de 4, que es exactamente el índice de dispersión: el factor de corrección es el índice de dispersión, y no depende del tamaño del efecto que usted quiere detectar. Esa es la regla práctica que vale llevarse: mida el índice de dispersión una vez, multiplique la cuenta de Poisson por él, y tendrá una buena aproximación incluso antes de abrir la fórmula.
El error más caro es anterior a la fórmula
Existe un error peor que dimensionar por Poisson, y ocurre en la lectura, no en el diseño: contar el evento como si fuera la unidad de observación.
El escenario: 30.000 usuarios asignados, 96.000 sesiones generadas. La tentación es analizar las 96.000 sesiones como observaciones independientes, o calcular el error estándar de la media asumiendo varianza igual a la media, como Poisson manda. Los dos errores llevan al mismo lugar.
| cuenta | error estándar de la media por brazo | z de la diferencia entre los dos brazos, para un efecto de más 0,10 sesión por usuario |
|---|---|---|
| correcta (varianza 12,8 sobre 30.000 usuarios) | 0,020656 | 3,4233 |
| ingenua (varianza asumida igual a la media, 3,2) | 0,010328 | 6,8465 |
Para rehacer la cuenta: el error estándar de la diferencia entre dos brazos del mismo tamaño es la raíz de 2 por el error estándar de un brazo, entonces el z correcto es 0,10 dividido por 0,020656 por la raíz de 2, lo que da 3,4233.
El error estándar sale exactamente a la mitad, el intervalo de confianza sale 50 por ciento más estrecho de lo que debería y el z se duplica. En este caso específico las dos cuentas coinciden sobre el veredicto (las dos pasan de 1,96), pero la que produce z de 6,85 va a ser descrita como “resultado aplastante” en una reunión, y no lo es. En un efecto menor, la misma distorsión se vuelve falso positivo directo.
La raíz del problema es la misma que describimos en unidad de aleatorización: la unidad de análisis tiene que ser la unidad de asignación. Si usted asignó usuarios, la observación es el usuario y su métrica es el conteo total, con toda la varianza que carga. Las sesiones del mismo usuario están correlacionadas entre sí, y tratarlas como independientes es inventar información que no existe.
¿Vale la pena cambiar el conteo por un proxy binario?
Una salida pragmática es convertir el conteo en un indicador: en vez de “sesiones por usuario”, medir “usuario con al menos 4 sesiones en la semana”. Eso devuelve el problema a la calculadora binaria, que toda herramienta tiene, y a la cuenta de dos proporciones.
Cálculo por aproximación normal de dos proporciones, 2 variaciones (50/50). Cambia los campos y mira el impacto en vivo.
Con la base del proxy en 35 por ciento de los usuarios, la calculadora de arriba devuelve:
| efecto relativo en el proxy | usuarios por variación | días a 40.000 por semana |
|---|---|---|
| más 2 por ciento | 73.214 | 26 |
| más 3 por ciento | 32.612 | 12 |
| más 5 por ciento | 11.791 | 5 |
| más 8 por ciento | 4.635 | 2 |
Compare con la columna de la binomial negativa: detectar más 5 por ciento en la tasa de sesiones pedía 8.194 usuarios por variación, y detectar más 5 por ciento relativos en el proxy pide 11.791. Es decir, en este escenario el proxy salió más caro, no más barato.
Eso no es una regla general, y ahí está el cuidado. Las dos líneas no miden lo mismo: una pregunta si el conteo medio subió 5 por ciento, la otra pregunta si la proporción de usuarios por encima de un umbral subió 5 por ciento. No existe conversión automática entre las dos, y suponer que un efecto de más 5 por ciento en la media produce más 5 por ciento en el proxy es una hipótesis suya, no un hecho. Los criterios honestos para elegir el proxy son:
- Elija el proxy si el umbral es lo que le interesa al negocio. “Usuario activo es quien entra 4 veces en la semana” es una definición de producto legítima, y en ese caso el proxy no es aproximación, es la métrica.
- Elija el proxy si no consigue calcular la varianza del conteo. Sin el número de la varianza no tiene cómo dimensionar la binomial negativa, y un proxy bien dimensionado es mejor que un conteo mal dimensionado.
- No elija el proxy solo para poder usar la calculadora que ya tiene. El costo es tirar la información de cuánto cambió el conteo, y la tabla de arriba muestra que no siempre eso viene con descuento de muestra.
- Nunca compare los dos números como si fueran alternativas del mismo efecto. Responden preguntas distintas.
Y la normalidad de la media
Falta una última verificación, que es independiente del dimensionamiento por el efecto: la media del conteo necesita ser aproximadamente normal para que el test z valga. La regla es la de Kohavi, Deng, Longbotham y Xu, que pide al menos 355 veces el cuadrado del coeficiente de asimetría y se recomienda cuando el módulo de la asimetría pasa de 1.
| varianza (media 3,2) | asimetría | mínimo por la regla del TCL | mínimo por el efecto de más 5 por ciento | cuál manda |
|---|---|---|---|---|
| 3,2 | 0,56 | 111 | 2.011 | el efecto |
| 6,4 | 1,19 | 500 | 4.072 | el efecto |
| 12,8 | 1,96 | 1.359 | 8.194 | el efecto |
| 19,2 | 2,51 | 2.238 | 12.315 | el efecto |
En conteos típicos, el dimensionamiento por el efecto manda con holgura, y la regla del teorema central del límite nunca llega a ser el cuello de botella. Por eso el conteo es un caso más cómodo que el ingreso: en las métricas de Bing que Kohavi y coautores publican, sesiones por usuario tiene asimetría 3,6 y pide 4,70 mil observaciones, mientras que ingreso por usuario tiene 17,9 y pide 114 mil. La cola del conteo es larga, pero la cola del dinero es mucho peor.
Dos salvedades honestas sobre la tabla de arriba. La primera: las asimetrías vienen de la fórmula cerrada de la binomial negativa con aquellas media y varianza, no de datos suyos. La segunda: si su conteo tiene un puñado de usuarios con centenas de eventos, lo que es común cuando los bots entran en la cuenta, la asimetría real va a pasar mucho de la tabla. Antes de dimensionar, limpie el tráfico de bots y considere aplicar un techo.
Checklist
- Mida la varianza antes que nada. Una semana de datos históricos, conteo por usuario, media y varianza. Divida una por la otra.
- Si el índice de dispersión pasa de 1,5, olvide Poisson. Use la binomial negativa y el kappa correspondiente.
- Como aproximación rápida, multiplique la cuenta de Poisson por el índice de dispersión. El factor quedó atrapado en 4,0 a 4,1 en todo el rango de efecto probado.
- La unidad de análisis es la unidad de asignación. Nunca calcule error estándar sobre el conteo de eventos.
- Limpie bots y considere techo antes de estimar la varianza, si no, dimensiona para la cola equivocada.
- Si va a usar un proxy binario, declare la hipótesis de traducción. Y no presuma que es más barato: en este escenario no lo fue.
- Verifique la regla de los 355 por la asimetría al cuadrado. En conteo raramente manda, pero confirmarlo lleva un minuto.
Haga esto automático en Donnu
Casi toda herramienta de test A/B del mercado solo sabe comparar proporciones. Cuando el equipo quiere probar “sesiones por usuario” o “ítems por pedido”, la salida estándar es inventar un proxy binario y cruzar los dedos, o exportar todo a una planilla y hacer la cuenta a mano, sin dimensionamiento previo.
Donnu guarda el conteo por usuario asignado, así que el índice de dispersión es algo que usted lee antes de empezar el test, y no descubre después. Eso cambia la pregunta a la hora de planificar: en vez de “cuántos visitantes necesito”, que es la pregunta binaria, usted consigue responder “cuánto varía esa métrica entre mis usuarios y qué cuesta eso en días de test”. Si su caso todavía es binario, empiece por la calculadora de tamaño de muestra; si ya es de conteo, mida la varianza primero y use la fórmula publicada arriba.
Referencias
- Zhu, H. y Lakkis, H. Sample size calculation for comparing two negative binomial rates. Statistics in Medicine, volumen 33, número 3, páginas 376 a 387, 2014. Fuente de la fórmula de tamaño de muestra para la razón de dos tasas bajo el modelo binomial negativo, de los tres métodos de estimar la varianza bajo la hipótesis nula, del resultado de simulación de que los métodos 2 y 3 son más precisos que el método 1, y de la tabla de referencia (tasa de control 0,8, razón de tasas 0,85, exposición media 0,75, alfa 0,05, poder 80 por ciento) que reproducimos exactamente en las cuatro líneas de dispersión probadas. pubmed.ncbi.nlm.nih.gov.
- NCSS. PASS Sample Size Software, capítulo 438: Tests for the Ratio of Two Negative Binomial Rates. Fuente de la transcripción operacional de las fórmulas de Zhu y Lakkis (varianza asintótica bajo la alternativa y bajo la nula por los tres métodos, fórmula de tamaño de muestra y de poder), del encuadre de que el modelo de Poisson asume media igual a varianza y pasa a ajustar mal los datos cuando ocurre sobredispersión, de la nota de que los tests asintóticos son apropiados por encima de 50 sujetos por grupo, y de la tabla numérica de validación con 1.311, 1.490, 1.668 y 1.965 sujetos por grupo para dispersión de 0,4, 0,7, 1,0 y 1,5. ncss.com.
- Kohavi, R., Deng, A., Longbotham, R. y Xu, Y. Seven Rules of Thumb for Web Site Experimenters. KDD 2014. Fuente de la regla práctica de 355 veces el cuadrado del coeficiente de asimetría como mínimo de observaciones independientes para que la media tenga distribución aproximadamente normal, de la recomendación de aplicarla cuando el módulo de la asimetría pasa de 1, y de la tabla de métricas reales de Bing en la que sesiones por usuario aparece con asimetría 3,6 y 4,70 mil observaciones contra ingreso por usuario con 17,9 y 114 mil. exp-platform.com.
- Liu, M., Sun, X., Varshney, M. y Xu, Y. Large-Scale Online Experimentation with Quantile Metrics. arXiv 1903.08762, 2019. Fuente del registro de que las plataformas de experimentación a escala reportan predominantemente métricas de media, como ingreso por miembro o clics por impresión, porque la media encaja directamente en el procedimiento de test t de dos muestras, y de que las métricas que no están bien resumidas por la media exigen tratamiento propio. arxiv.org.
Lee también: Tamaño de muestra para métricas continuas · Outliers y capping · Unidad de aleatorización · Métricas de ratio · Tráfico de bots · Calculadora de tamaño de muestra · Leia em português
Preguntas frecuentes
- ¿Qué es una métrica de conteo en un test A/B?
- Es toda métrica en la que cada usuario aporta un número entero de eventos en lugar de un sí o un no: sesiones por usuario, páginas por sesión, ítems por pedido, búsquedas por visita, mensajes enviados por cuenta. No es una proporción, así que ni la calculadora de significancia binaria ni la fórmula de dos proporciones se le aplican sin traducción. La media es una tasa de eventos por unidad, y lo que gobierna el tamaño de muestra es la varianza de ese conteo, no la tasa en sí.
- ¿Qué es la sobredispersión y por qué importa?
- Sobredispersión es que la varianza del conteo sea mayor que la media. El modelo de Poisson asume que las dos son iguales, y en datos de producto eso prácticamente nunca ocurre, porque los usuarios son heterogéneos: algunos visitan una vez al mes y otros diez veces al día. La medida directa es el índice de dispersión, la varianza dividida por la media. Si da 4, la varianza es cuatro veces la que Poisson asumiría, y la muestra necesaria crece en la misma proporción. En el ejemplo de este artículo, un índice de dispersión de 4 llevó la muestra de 2.011 a 8.194 usuarios por variación.
- ¿Cómo calcular el tamaño de muestra de una métrica de conteo?
- Use la fórmula de Zhu y Lakkis para la razón de dos tasas bajo el modelo binomial negativo, que es el estándar de la literatura clínica y está implementada en software de dimensionamiento. Pide la tasa del control, la razón de tasas que quiere detectar, el parámetro de dispersión y el tiempo medio de exposición. El parámetro de dispersión sale de la varianza observada: es la varianza menos la media, dividida por el cuadrado de la media. La fórmula publicada en este artículo reproduce exactamente la tabla de referencia publicada por Zhu y Lakkis, en las cuatro líneas probadas.
- ¿Cuál es el error más caro en una métrica de conteo?
- Tratar cada evento como observación independiente. Si 30.000 usuarios generaron 96.000 sesiones y usted calcula el error estándar como si tuviera 96.000 observaciones independientes, o como si la varianza fuera igual a la media, el error estándar sale a la mitad del correcto. En el ejemplo de este artículo, el mismo efecto de más 0,10 sesión por usuario produce z de 3,42 en la cuenta correcta y 6,85 en la cuenta ingenua. El intervalo de confianza sale 50 por ciento más estrecho de lo que debería y el valor p se vuelve ficción.
- ¿Puedo transformar la métrica de conteo en una métrica binaria?
- Puede, y a veces vale la pena. Cambiar "sesiones por usuario" por "usuario con al menos 4 sesiones en la semana" devuelve el problema a la calculadora binaria, que todo el mundo ya sabe usar. El costo es que el efecto medido deja de ser el mismo: usted pasa a medir si los usuarios cruzaron un umbral, no cuánto cambió el conteo, y necesita una hipótesis propia sobre cómo el efecto del conteo se traduce en ese umbral. En el escenario de este artículo el proxy no salió más barato: detectar más 5 por ciento en el conteo pedía 8.194 usuarios por variación, y detectar más 5 por ciento relativos en el proxy pedía 11.791.
- ¿La regla de los 355 por la asimetría al cuadrado se aplica a los conteos?
- Sí, y en los conteos suele quedar holgada. La regla de Kohavi y coautores pide al menos 355 veces el cuadrado del coeficiente de asimetría para que la media sea aproximadamente normal, y se recomienda cuando el módulo de la asimetría pasa de 1. Una binomial negativa con media 3,2 y varianza 12,8 tiene asimetría 1,96, lo que pide 1.359 observaciones por brazo. Como el dimensionamiento por el efecto ya pidió 8.194, es el dimensionamiento el que manda. En ingreso por usuario el orden se invierte: la asimetría puede pasar de 15 y la regla del teorema central del límite pasa a ser el cuello de botella.