En marketing de performance, la velocidad de test es ventaja competitiva. En el escenario de A/B test frecuentista, esperas dos semanas a que llegue el intervalo de confianza mientras tu presupuesto de campaña se quema. El enfoque Bayesiano te da una distribución posterior actualizada cada día — incluso antes de terminar el test puedes decir "la variante B tiene 73% de probabilidad de ganar". Este artículo desglosa la mecánica de Bayesian A/B testing, las reglas de decisión secuencial y la dinámica del tamaño de muestra. Eliminas la obligación de horizonte fijo del método frecuentista y pasas a actualización continua de decisiones dentro del flujo diario de datos.

El Problema del Horizonte Fijo en Test Frecuentista

El A/B test clásico se construye sobre p-value y tamaño de muestra fijo. Comienzas la planificación del test diciendo "necesito n=5000 visitantes, durará 14 días" y hasta el día 14 no tomas ninguna decisión. Durante este tiempo sigues enviando tráfico a la variante perdedora — incluso si la tasa de conversión es 2 puntos más baja, estás obligado a esperar sin romper el plan del test. Si paras antes, el error tipo I se infla y aparece el problema de multiple testing.

En la lógica frecuentista, un p < 0.05 da significancia estadística, pero en la práctica muchas veces el lift es "significativo pero sin valor". Por ejemplo, un aumento de 0.5% puede ser estadísticamente significativo (gracias al tamaño grande de muestra) pero su impacto comercial es cero. Necesitas separar el intervalo de confianza del effect size — el marco frecuentista no lo muestra automáticamente.

Otra limitación: no puedes hacer monitoreo secuencial. Calculas el tamaño de muestra al inicio, esperas a llegar a esa muestra. Durante este proceso una variante puede estar ganando claramente, pero tienes que continuar para no "hacer peeking" — si peeks, el p-value pierde validez.

Bayesian Test: Distribución Posterior Actualizada

El enfoque Bayesiano funciona con la lógica prior belief + data = posterior. Al inicio del test defines una distribución prior para el conversion rate de cada variante (generalmente una Beta(1,1) uninformativa o un prior informativo de datos pasados). Con cada visitante, el teorema de Bayes actualiza el posterior. A los 100 visitantes el posterior tiene cierta forma, a los 200 tiene otra — actualización continua.

La distribución posterior es exactamente "la densidad de probabilidad del conversion rate real de esta variante". Por ejemplo, un posterior Beta(25, 75) indica que el conversion rate entre 20% y 30% tiene alta densidad de probabilidad. Comparando los posteriores de dos variantes, puedes calcular "la probabilidad de que B sea mejor que A" — esta fórmula P(B > A) surge naturalmente en el mundo Bayesiano.

La versión Bayesiana del test secuencial: actualiza el posterior cada día, si P(B > A) > 0.95 detén el test. Este umbral depende de tu tolerancia al riesgo — puedes usar 0.90 o 0.99 en lugar de 0.95. En frecuentista no tienes un mecanismo así; fuera del horizonte fijo no hay regla de decisión. En Bayesian puedes decidir en cualquier momento porque la distribución posterior te da información completa.

En el test Bayesiano no hay p-value. En su lugar tienes métricas como probability of superiority (P(B > A)), expected loss (el lift esperado que pierdes si eliges A cuando B es mejor), credible interval (el rango del 95% de la distribución posterior). Son más interpretables en la práctica — puedes decir "la variante B tiene 85% de probabilidad de ganar y si gana da un lift promedio de 2.3%".

Código de Actualización Posterior

import numpy as np
from scipy.stats import beta

# Prior: Beta(1,1) = uniforme
prior_alpha, prior_beta = 1, 1

# Datos: variante A con 50 conversiones, 200 visitas
conversions_A = 50
visits_A = 200
failures_A = visits_A - conversions_A

# Posterior: Beta(alpha + conversiones, beta + fracasos)
post_alpha_A = prior_alpha + conversions_A
post_beta_A = prior_beta + failures_A

# Muestrear de la distribución posterior
samples_A = beta.rvs(post_alpha_A, post_beta_A, size=10000)

# Mismo proceso para variante B
conversions_B = 60
visits_B = 200
failures_B = visits_B - conversions_B
post_alpha_B = prior_alpha + conversions_B
post_beta_B = prior_beta + failures_B
samples_B = beta.rvs(post_alpha_B, post_beta_B, size=10000)

# Calcula P(B > A)
prob_B_wins = (samples_B > samples_A).mean()
print(f"P(B > A): {prob_B_wins:.2%}")  # Ejemplo: 0.82 = B gana con 82% de probabilidad

Tamaño de Muestra Dinámico y Early Stopping

En Bayesian testing, el tamaño de muestra no es fijo. Al inicio puedes establecer un piso como "mínimo 1000 visitantes" (para que el posterior no sea demasiado ancho) pero no hay techo fijo. Puedes detener el test en el momento en que P(B > A) > 0.95 — esto puede ocurrir a los 500 visitantes o a los 5000.

La métrica expected loss es excelente para decisiones tempranas. La fórmula es: E[Loss] = E[max(0, CR_ganador - CR_elegido)]. Si eliges A pero B es realmente mejor, la diferencia esperada de conversion rate que pierdes. Estableces un umbral de loss, por ejemplo "ELoss < 0.5%" — entonces puedes detener el test con la garantía "en el peor caso pierdo 0.5% de lift". Esta métrica facilita la toma de decisión aversiva al riesgo.

Ejemplo de regla de parada secuencial:

MétricaUmbralAcción
P(B > A)> 0.95Declara B como ganador
P(A > B)> 0.95Declara A como ganador
ELoss< 0.005Cierra variante perdedora
Visitantes mínimo< 1000Aún no decides

Con estas reglas, la duración del test se reduce en promedio 30-40% (según datos de Google Optimize y VWO). En escenarios con gran effect size puedes tomar decisiones con 95% de confianza en 3 días — con frecuentista esperabas 14 días.

La diferencia con multi-armed bandit: Bayesian A/B testing sigue sin hacer tradeoff exploration-exploitation, solo actualiza posterior y aplica reglas de parada. El algoritmo bandit optimiza dinámicamente la distribución de tráfico (como Thompson Sampling), mientras Bayesian test mantiene split fijo (50/50) pero decide rápido. El bandit es más agresivo — con cada impression envía más tráfico a la variante ganadora. El test Bayesian es más conservador — el split es constante, solo la decisión es rápida.

Prior Informativo e Incrementality Testing

La selección del prior es el punto más crítico del testing Bayesiano. Un prior uninformativo (Beta(1,1)) ignora el conocimiento previo y produce un posterior completamente data-driven. Un prior informativo viene de datos históricos de tests anteriores o de baseline conversion rates por segmento. Por ejemplo, si el promedio de los últimos 50 tests en mobile fue 12% de conversión, puedes usar Beta(60, 440) como prior (aproximadamente 12% de media, pero con dispersión). Este prior da al nuevo test "una estimación razonable basada en el pasado".

La ventaja de un prior informativo: el tamaño de muestra necesario disminuye. Porque la actualización posterior no comienza desde cero, sino desde un punto informado. La desventaja: si el prior se elige mal, crea sesgo. Si el segmento cambió o hay efecto de temporada, un prior viejo es engañoso. Por eso necesitas análisis de sensibilidad del prior — verifica si los resultados del test cambian con diferentes priors.

En procesos de Optimización de Tasa de Conversión, el testing Bayesiano facilita la medición de incrementalidad. Para incrementality necesitas un grupo holdout o geo-split. Con Bayesian comparas el posterior del conversion rate del grupo holdout con el del grupo test — obtienes una distribución del lift. En lugar de un t-test clásico, calculas P(lift > 0) — es más interpretable. Por ejemplo: "la nueva campaña tiene 78% de probabilidad de generar incrementality y el lift esperado está entre 1.2-2.8%".

Comparación de Selección de Prior

# Prior uninformativo
prior_uninf = beta(1, 1)

# Prior informativo: 12% conversión histórica, n=500
# Beta mean = alpha / (alpha + beta) → 60/500 = 0.12
prior_inf = beta(60, 440)

# Posterior con 20 conversiones, 100 visitas
conversions, visits = 20, 100
post_uninf = beta(1 + conversions, 1 + (visits - conversions))
post_inf = beta(60 + conversions, 440 + (visits - conversions))

# Medias posteriores
print(f"Media posterior uninformativa: {post_uninf.mean():.2%}")  # ~20%
print(f"Media posterior informativa: {post_inf.mean():.2%}")      # ~13.3%

Un prior uninformativo es muy sensible a la data con muestra pequeña; un prior informativo regulariza usando conocimiento histórico.

Tradeoff: Bayesian Test vs Frecuentista vs Bandit

El test Bayesiano no es óptimo en todos los escenarios. El test frecuentista se prefiere en entornos regulados (especialmente médico/financiero) porque el estándar p-value existe, los procesos de peer-review están construidos en torno a él. La selección del prior Bayesiano puede parecer subjetiva. Si la regulación exige p-value y no hay flexibilidad en el timeline del test (por ejemplo, un período fijo de 30 días es obligatorio), el enfoque frecuentista tiene sentido.

Los algoritmos bandit (Thompson Sampling, UCB) equilibran automáticamente exploración-explotación y optimizan dinámicamente la distribución de tráfico. En tests de largo plazo (3+ semanas), bandit supera a Bayesian testing en performance porque envía menos tráfico a la variante perdedora. En tests cortos (1-2 semanas) el testing Bayesiano es suficiente — la minimización de regret de bandit no marca gran diferencia en poco tiempo.

Si el tamaño de muestra es muy pequeño (por ejemplo, 100 visitantes/día), tanto Bayesian como frecuentista resultan insuficientes. La distribución posterior es tan ancha que P(B > A) nunca llega a 95%. En esta situación, conviene hacer tests sobre micro-conversiones (click, add-to-cart, eventos más frecuentes) o usar agregación geo-based. El testing Bayesiano no da ventaja con muestras muy pequeñas, solo proporciona output interpretable.

El poder real del test Bayesiano está en la orquestación cross-channel. Supongamos que haces test de creatividad en paid channel y al mismo tiempo un test de CRO en landing page. Puedes combinar los posteriores de ambos tests (joint posterior) y separar la contribución del lift. Con frecuentist necesitarías un ANOVA complejo; con Bayesian, MCMC (Markov Chain Monte Carlo) lo maneja naturalmente.

Aplicación Práctica: Plataformas y Tooling

Google Optimize (que cerró) usaba motor Bayesiano. Actualmente hay librerías open-source: el paquete Python bayesian-testing o el paquete R bayesAB para testing Bayesiano. En producción necesitas construir tu propio stack — puedes escribir UDFs SQL en BigQuery para calcular posteriors o crear un modelo dbt como pipeline de posterior.

Ejemplo de macro dbt: cada día llegan datos de test, la macro actualiza los parámetros alpha/beta del posterior y calcula P(B > A). Si cruza el umbral, envía notificación a Slack. Así en lugar de monitoreo manual, funciona una regla de parada automática. Además, extraes interval credible y expected loss al dashboard — los stakeholders ven "ahora B tiene 82% de probabilidad de ganar" en lugar de preguntar "¿cuándo decidimos?".

Las plataformas AB testing (VWO, Optimizely) agregaron motor Bayesiano pero no es default; muestran resultados Bayesianos junto con frecuentistas. Porque la selección del prior es tu parámetro, no se puede automatizar en la plataforma. Si quieres un prior informativo, necesitas setup custom. Por eso en escala grande prefieren tooling in-house para Bayesian testing.

El testing multi-variante (A/B/C/D) es más simple en Bayesian. Con frecuentista necesitas corrección por comparaciones múltiples (Bonferroni, Holm); en Bayesian calculas cada posterior por separado y comparas todas las combinaciones: P(C > A), P(D > B), etc. Para elegir ganador: la variante con media posterior más alta o expected loss más bajo.


El testing Bayesiano A/B acelera la velocidad de decisión en marketing de performance. Elimina la obligación de horizonte fijo del frecuentista y proporciona monitoreo secuencial. La distribución posterior se mantiene actualizada continuamente, permitiendo decisiones con control de riesgo mediante métricas P(B > A) y expected loss. Usando priors informativos, trasladas datos de tests históricos al nuevo test y reduces el tamaño de muestra requerido. El tradeoff: la selección del prior es subjetiva, la regulación puede exigir frecuentista, y con muestras muy pequeñas las ventajas son limitadas. Pero en tests de performance marketing de escala media a grande, el enfoque Bayesiano proporciona insights accionables en días — el período tradicional de 14 días de espera se convierte en historia.