StackPractices
intermediate Por Mathias Paulenko

Guía de A/B Testing: Diseño, Estadística y Errores

Guía práctica de A/B testing: diseño de hipótesis, tamaño de muestra, análisis estadístico, herramientas y fallos que invalidan experimentos.

Resumen

El A/B testing (split testing) es un experimento controlado: divides el tráfico entre la versión actual (control) y una candidata (tratamiento), mides una métrica predefinida y dejas que la estadística decida. Bien hecho, reemplaza los debates de producto basados en opinión por evidencia. Mal hecho — muestras sin potencia, mirar resultados a diario, grupos contaminados — produce respuestas incorrectas con confianza, lo cual es peor que adivinar.

La parte difícil no es la estadística — es la disciplina: hipótesis pre-registradas, tamaños de muestra honestos, aleatorización limpia y resistir la tentación de declarar un ganador al tercer día. Lo que sigue recorre el ciclo completo, de la hipótesis a la decisión, más las opciones de herramientas y los modos de fallo que invalidan resultados silenciosamente.

Cuándo Usarlo

El A/B testing encaja cuando:

  • Quieres validar una hipótesis sobre comportamiento de usuario
  • Necesitas medir el impacto de un cambio de UI, copy, pricing o algoritmo
  • Estás eligiendo entre dos o más implementaciones y necesitas datos para decidir
  • Quieres optimizar funnels de conversión o métricas de engagement
  • Tu organización quiere pasar de decisiones basadas en opinión a decisiones basadas en datos

Es la herramienta equivocada cuando:

  • No tienes suficiente tráfico. Si no puedes alcanzar el tamaño de muestra requerido en unas cuatro semanas, el test corre para siempre o termina sin potencia. Usa investigación cualitativa, reproducción de sesiones o tests de usabilidad en su lugar.
  • No puedes aleatorizar limpiamente. Cambios que los usuarios comparan directamente (páginas públicas de precios) o funcionalidades que se filtran entre usuarios (carritos compartidos, mensajería) rompen el supuesto de independencia. Usa geo-experimentos o diseños switchback.
  • El efecto que quieres detectar es menor que tu piso de ruido. Si el efecto mínimo detectable está por debajo de lo que permite la varianza normal de la métrica, arregla la medición antes de experimentar — CUPED y el análisis triggered ayudan (ver abajo).
  • La decisión es irreversible. No experimentes con cambios que no puedes revertir; mídelos con despliegues graduales en su lugar.

Para releases progresivos e infraestructura de experimentación en lugar de testeo de hipótesis, ver Feature Flags: Release Progresivo y Experimentación Segura.

Conceptos Clave

ConceptoDescripción
Control (A)La versión existente, la baseline para comparación
Tratamiento (B)La nueva versión que se prueba
Métrica PrimariaLa medida de resultado clave que determina el éxito
Métrica GuardrailUna métrica que no debe degradarse (latencia, tasa de error, ingresos)
Significancia EstadísticaProbabilidad de que la diferencia observada no se deba al azar
P-ValueProbabilidad de ver el resultado observado si no hay diferencia real
PowerProbabilidad de detectar un efecto verdadero cuando existe
Efecto Mínimo Detectable (MDE)La diferencia mínima significativa que quieres detectar
Sample Ratio Mismatch (SRM)Cuando los tamaños de grupo observados se desvían del split esperado — casi siempre un bug

Diseñar las Métricas del Experimento

La elección de métricas decide si el experimento puede responder la pregunta. Una buena métrica primaria tiene cuatro propiedades:

  • Sensible: realmente se mueve cuando el tratamiento funciona. “Tasa de finalización de checkout” responde a un checkout más corto; “ingresos totales por mes” responde a todo y es demasiado ruidosa para la mayoría de tests.
  • Atribuible: el cambio puede afectarla de forma plausible. Un rediseño de homepage no puede mover la retención a 30 días — no lo midas ahí.
  • Medible a escala: obtienes datos limpios y completos para ambos grupos sin trabajo manual.
  • Alineada con el negocio: la métrica representa algo que le importa a la empresa. El click-through en un botón engañoso es fácil de subir y no vale nada.

Las tasas y las medias se comportan distinto. Las métricas de proporción (tasa de conversión, click-through) encajan con el z-test de abajo. Las métricas continuas (ingresos por usuario, duración de sesión) suelen tener asimetría positiva — unas pocas ballenas dominan la media — así que usa un t-test de dos muestras solo si la distribución es aproximadamente normal, o Mann-Whitney U / métodos bootstrap en caso contrario. Las métricas de ratio (ingresos por sesión, ítems por pedido) necesitan varianza por método delta o soporte de tests consciente de ratios en tu plataforma.

Las métricas guardrail existen para vetar. Elige el conjunto pequeño que te haría parar el experimento sin importar el resultado primario: tasa de error, latencia p95, tasa de reembolso, tasa de baja. De tres a cinco es lo típico; un guardrail que nunca dispara está bien, un guardrail ausente que debería haber disparado es un incidente.

Los equipos que corren muchos experimentos suelen consolidar en un Overall Evaluation Criterion (OEC) — un compuesto ponderado de las métricas que importan — para que cada experimento se resuma en un solo número de decisión en lugar de negociar trade-offs de métricas test a test.

Cómo Funciona un A/B Test

Todo experimento sigue el mismo ciclo: formar una hipótesis, dimensionar la muestra, aleatorizar usuarios, recolectar datos, analizar y decidir. El paso de aleatorización es donde la mayoría de experimentos se rompe en silencio — la estadística solo funciona si control y tratamiento son grupos realmente comparables.

Ciclo de un A/B test: definir la hipótesis y el MDE, dimensionar la muestra, aleatorizar usuarios, correr ciclos semanales completos, analizar con z-test y guardrails, y lanzar o iterar.

Dos cosas a notar del ciclo. Primero, el cálculo de tamaño de muestra ocurre antes del lanzamiento — es lo que hace inválido “correr hasta que sea significativo” como regla de parada. Segundo, la compuerta final no es solo significancia estadística: un lift real demasiado pequeño para justificar el costo de implementación sigue siendo un “no lanzar”.

A/B Testing Paso a Paso

1. Definir la Hipótesis

Una buena hipótesis es específica, medible y falsificable. Si no puedes decir qué evidencia te probaría equivocado, no tienes una hipótesis — tienes una esperanza.

# Template de Hipótesis

**Creemos** que [cambio]
**resultará en** [mejora de métrica]
**para** [segmento de usuario]
**porque** [razonamiento basado en datos/observación]

# Ejemplo
Creemos que reducir los pasos de checkout de 5 a 3
resultará en un 5% de incremento en la tasa de finalización de checkout
para usuarios móviles
porque analytics muestra 40% de abandono en el paso 4 en móvil.

Antes del lanzamiento, escribe:

  • Métrica primaria — la única métrica que decide el experimento. Una, no tres.
  • Métricas guardrail — cosas que no deben degradarse: tasa de error, latencia p95, tasa de reembolso, ingresos por usuario. Define umbrales de corte por adelantado (“para el test si el p95 crece >10%”).
  • Población objetivo — qué usuarios son elegibles y cómo manejarás el tráfico no logueado.
  • MDE — el lift mínimo que vale la pena lanzar. Si una mejora del 0.5% no pagaría la implementación, no dimensiones el experimento para detectarla.
  • Duración — una fecha de fin fija que cubra ciclos semanales completos, decidida antes de mirar ningún dato.

2. Calcular el Tamaño de Muestra

El tamaño de muestra se determina con cuatro entradas: tasa baseline, MDE, nivel de significancia (alpha) y potencia. Si te equivocas aquí, todo lo que sigue es ruido.

# Ejemplo: Cálculo de tamaño de muestra para A/B test
import scipy.stats as stats

def calculate_sample_size(
    baseline_rate: float,     # Tasa de conversión actual
    mde: float,               # Efecto mínimo detectable (absoluto)
    alpha: float = 0.05,      # Nivel de significancia
    power: float = 0.80,      # Potencia estadística
    ratio: float = 1.0        # Ratio de tratamiento a control
) -> int:
    """
    Calcular el tamaño de muestra requerido por grupo para un test de dos proporciones.
    """
    p1 = baseline_rate
    p2 = baseline_rate + mde

    z_alpha = stats.norm.ppf(1 - alpha / 2)
    z_beta = stats.norm.ppf(power)

    pooled_p = (p1 + ratio * p2) / (1 + ratio)

    numerator = (
        z_alpha * (pooled_p * (1 - pooled_p) * (1 + 1/ratio)) ** 0.5 +
        z_beta * (p1 * (1 - p1) + p2 * (1 - p2) / ratio) ** 0.5
    ) ** 2

    denominator = (p1 - p2) ** 2

    return int(numerator / denominator) + 1

# Ejemplo: 20% de conversión baseline, quieres detectar 2% de mejora absoluta
sample_size = calculate_sample_size(
    baseline_rate=0.20,
    mde=0.02,
    alpha=0.05,
    power=0.80
)
print(f"Tamaño de muestra requerido por grupo: {sample_size}")
# Output: ~6.500 usuarios por grupo

Qué mueve el número:

  • Tasa baseline: las tasas cerca del 50% tienen varianza máxima; tasas muy bajas (1% de conversión) necesitan muestras enormes para detectar cambios absolutos pequeños.
  • MDE: el tamaño crece con el cuadrado de la precisión — reducir el MDE a la mitad cuadruplica aproximadamente la muestra requerida.
  • Alpha: 0.05 es estándar; usa 0.01 para cambios de alto riesgo difíciles de revertir.
  • Power: 0.80 significa que aún perderías un efecto real el 20% de las veces. No bajes de ahí.

Si la muestra requerida excede tu tráfico, no achiques el MDE para que encaje — auméntalo testeando un cambio más audaz, o acepta que el A/B testing no es viable en esa superficie todavía. Para chequeos rápidos, la calculadora de Evan Miller es la referencia estándar.

3. Implementar la Asignación

Asigna usuarios de forma determinística para que cada uno vea la misma versión durante todo el experimento:

# Ejemplo: Asignación consistente de usuario
import hashlib

def get_experiment_group(user_id: str, experiment_name: str, num_groups: int = 2) -> str:
    """
    Asignar usuario a grupo de experimento basado en hash de forma determinística.
    Asegura que el mismo usuario siempre obtiene la misma asignación.
    """
    hash_input = f"{experiment_name}:{user_id}"
    hash_value = int(hashlib.md5(hash_input.encode()).hexdigest(), 16)
    bucket = hash_value % num_groups

    groups = ["control", "treatment"] if num_groups == 2 else [f"group_{i}" for i in range(num_groups)]
    return groups[bucket]

# Uso
user_id = "user-12345"
experiment = "checkout-redesign"
group = get_experiment_group(user_id, experiment)
print(f"Usuario asignado a: {group}")

# Renderizar la UI apropiada
if group == "treatment":
    render_new_checkout()
else:
    render_old_checkout()

La asignación tiene cuatro requisitos:

  • Aleatoria: cada usuario elegible tiene igual probabilidad de caer en cada grupo.
  • Consistente: el mismo usuario siempre ve la misma versión — incluyendo entre sesiones y dispositivos, lo que implica usar un ID de usuario estable, no una cookie.
  • Independiente: la asignación al experimento A no puede correlacionar con la del experimento B; incluye el nombre del experimento en el hash, como arriba.
  • Sticky: la asignación persiste durante todo el experimento. Re-aleatorizar a mitad de camino contamina ambos grupos.

Antes de confiar en tu bucketing, corre un test A/A: divide usuarios en dos grupos idénticos y confirma que los tamaños de grupo y todas las métricas coinciden dentro del ruido. Si un test A/A muestra diferencias “significativas”, tu aleatorización o instrumentación está rota — arréglala antes de correr tests reales.

4. Ejecutar el Experimento

Recolecta datos manteniendo la integridad del experimento. Las dos reglas que más importan: no mires los resultados y no toques un experimento en ejecución.

CheckpointAcción
Día 1Verificar aleatorización (tamaños de grupo coinciden con el split esperado) y que los eventos disparan en ambas variantes
Día 3Chequear salud de instrumentación y métricas guardrail, no la significancia de la métrica primaria
MitadResistir la tentación de mirar p-values; solo verificar que la calidad del dato se mantiene
Fecha finalCorrer el análisis sobre la muestra pre-comprometida
Post-análisisSegmentar por dispositivo, geografía y tipo de usuario antes de decidir
# Ejemplo: Análisis de resultados del experimento (z-test de dos proporciones)
from statsmodels.stats.proportion import proportions_ztest

def analyze_experiment(control_converted: int, control_total: int,
                       treatment_converted: int, treatment_total: int) -> dict:
    control_rate = control_converted / control_total
    treatment_rate = treatment_converted / treatment_total

    _, p_value = proportions_ztest(
        [control_converted, treatment_converted],
        [control_total, treatment_total]
    )

    relative_lift = (treatment_rate - control_rate) / control_rate

    return {
        'control_rate': control_rate,
        'treatment_rate': treatment_rate,
        'relative_lift': relative_lift,
        'p_value': p_value,
        'significant': p_value < 0.05
    }

proportions_ztest vive en statsmodels, no en scipy — el import equivocado es el bug más común en scripts de análisis caseros. Para métricas continuas (ingresos, tiempo en página) usa un t-test de dos muestras o Mann-Whitney U para distribuciones asimétricas; ver la documentación de statsmodels.

El monitoreo durante la corrida es sobre salud, no resultados — tasas de error, latencia y volumen de eventos están bien cubiertos por las prácticas de la guía de observabilidad.

5. Interpretar los Resultados

Decide por significancia estadística y práctica:

# Framework de Interpretación de Resultados

## Significancia Estadística
- p-value < 0.05: el resultado es estadísticamente significativo
- p-value >= 0.05: no hay evidencia suficiente para rechazar la hipótesis nula

## Significancia Práctica
- ¿El lift es lo bastante grande para justificar el costo de implementación?
- ¿El lift persiste entre segmentos (nuevos vs recurrentes, móvil vs desktop)?
- ¿Las métricas guardrail están sanas?

## Matriz de Decisión
| Estadísticamente Significativo | Prácticamente Significativo | Decisión |
|--------------------------------|-----------------------------|----------|
| Sí | Sí | Lanzarlo |
| Sí | No | No lanzar — el costo excede el beneficio |
| No | Sí | Correr más tiempo o aumentar la muestra la próxima vez |
| No | No | No lanzar; documentar el aprendizaje |

Dos hábitos separan los programas de experimentación maduros del cargo cult. Primero, reporta intervalos de confianza, no solo el p-value — “entre +0.3% y +4.1% de conversión” es un insumo de decisión; “p=0.03” no lo es. Segundo, escribe la decisión y el razonamiento de cada experimento, incluidos los inconclusos — esa es la memoria institucional que evita re-correr el mismo test un año después.

Elegir Herramientas de Experimentación

La decisión de construir vs comprar depende de dónde viven tus datos y quién corre los experimentos:

HerramientaTipoMejor para
DIY (hash + warehouse)CustomEquipos pequeños, pocos experimentos, control total. El código de arriba es casi todo lo que necesitas — el costo es construir análisis confiable y un registro de experimentos.
GrowthBookOpen source, warehouse-nativeEquipos que quieren experimentación auto-hospedada o conectada al warehouse, con métricas basadas en SQL y motores bayesiano/frecuentista.
StatsigSaaS o conectado al warehouseExperimentos de producto a escala; sequential testing integrado (mSPRT), feature gates y diagnósticos fuertes como detección automática de SRM.
EppoSaaS warehouse-nativeOrganizaciones cuyas métricas ya viven en el warehouse y quieren que el análisis corra ahí también.
Optimizely / VWOSaaS con editor visualExperimentos de marketing y sitio web donde no-ingenieros necesitan crear variantes sin despliegues.

Algunas pautas de equipos que ya tomaron esta decisión:

  • Empieza simple si tu volumen de experimentos es bajo — una función hash más una query supera a una plataforma a la que nadie entra.
  • Si compras, prioriza detección automática de SRM y soporte de sequential testing; esas dos funciones previenen las dos formas más comunes en que los experimentos salen mal.
  • Las herramientas warehouse-native mantienen el análisis junto a tus métricas reales y evitan mantener un pipeline de eventos paralelo.
  • Elijas lo que elijas, el experimento debe documentarse en un único registro: hipótesis, responsable, fechas, decisión. La experimentación sin registro se convierte en folklore en meses.

Cuando los Experimentos Salen Mal

Estos son los modos de fallo que invalidan resultados sin lanzar un error:

  • Sample ratio mismatch (SRM): configuraste un split 50/50 pero observas 51.2/48.8 con miles de usuarios. Esa brecha casi nunca es azar — señala un bug de aleatorización, tráfico de bots o pérdida de telemetría en una variante. Chécalo con un test chi-cuadrado sobre los conteos de grupo; Statsig y herramientas similares alertan automáticamente. Si ves SRM, para y arregla la fontanería — nada de lo que sigue es válido.
  • Mirar resultados (peeking): revisar significancia a diario convierte una tasa de falsos positivos del 5% en aproximadamente 20-30%. O te comprometes con una fecha de fin fija, o usas métodos de sequential testing diseñados para monitoreo continuo.
  • Bugs de instrumentación: el tratamiento “pierde” porque sus eventos nunca dispararon. Valida el tracking en un test A/A antes del lanzamiento y compara volumen de eventos por usuario entre grupos, no solo totales.
  • Efectos de interacción: dos experimentos simultáneos sobre la misma superficie se contaminan. Usa capas mutuamente excluyentes, o acepta el ruido solo si los experimentos tocan métricas genuinamente independientes.
  • Efectos de novedad y primacía: las funcionalidades nuevas reciben un pico de engagement por curiosidad; los usuarios recurrentes castigan los cambios desconocidos durante una semana. Segmenta nuevos vs recurrentes — si el lift solo existe en un grupo, espera.
  • Degradación de guardrails: la conversión subió 3% mientras la tasa de error se duplicó. Sin guardrails predefinidos lanzas una regresión. Si algún guardrail rompe su umbral de corte, termina el test sin importar la métrica primaria.
  • Estacionalidad y eventos externos: un test que corre sobre Black Friday o durante una caída mide el evento, no tu cambio. Corre ciclos semanales completos y registra eventos externos en el log del experimento.

Reducir Varianza y Correr Tests Más Rápido

Una vez sólidos los básicos, estas técnicas te compran sensibilidad sin más tráfico:

  • CUPED (Controlled-experiment Using Pre-Experiment Data): ajusta la métrica de cada usuario por su comportamiento pre-experimento para eliminar varianza entre usuarios. Microsoft reportó ~50% de reducción de varianza en muchas métricas, lo que equivale a duplicar tu tráfico gratis. Toda plataforma seria lo soporta; ver la publicación original de Microsoft Research.
  • Análisis triggered: incluye solo usuarios que realmente pudieron ver el cambio. Analizar toda tu base cuando el tratamiento solo afecta la página de checkout diluye el efecto en ruido.
  • Asignación estratificada: fuerza balance en covariables clave (país, plan, dispositivo) al asignar, en lugar de esperar que la aleatorización produzca grupos comparables.
  • Aleatorización por clusters: cuando los usuarios interactúan (funciones sociales, espacios de trabajo compartidos), aleatoriza grupos en lugar de individuos para que el tratamiento no se filtre por contacto entre usuarios.
  • Diseños switchback: para marketplaces donde el tratamiento afecta oferta compartida (pricing, algoritmos de despacho), aleatoriza ventanas de tiempo en lugar de usuarios — el enfoque que usan Uber y DoorDash porque la aleatorización a nivel usuario es imposible ahí.

Lo Que Funciona

  • Corre experimentos por semanas completas — un test que se salta un fin de semana o arranca a mitad de semana hereda un sesgo por día-de-la-semana que ningún tamaño de muestra arregla.
  • Evita mirar resultados. Revisar significancia a diario convierte una tasa de falsos positivos del 5% en aproximadamente 20-30%.
  • Usa una métrica primaria. En cuanto permites tres, cualquier resultado puede presentarse como victoria.
  • Pre-registra los criterios de decisión — hipótesis, MDE, duración y umbrales de corte por escrito antes del primer dato.
  • Corre un test A/A sobre infraestructura nueva. Cuesta una semana y atrapa bucketing roto antes de que produzca victorias falsas.
  • Documenta cada experimento — hipótesis, diseño, decisión y razonamiento. Un año después, el registro es lo único que evita re-correr el mismo test.
  • Segmenta los resultados antes de decidir. Una victoria agregada puede ocultar una pérdida en un segmento lo bastante grande para importar (usuarios nuevos, móvil, un mercado concreto).

Errores Comunes

  • Probar más de dos variantes sin corrección por comparaciones múltiples — usa Bonferroni o métodos de sequential testing.
  • Experimentos sin potencia. Las muestras pequeñas no pueden detectar efectos pequeños pero significativos.
  • Leer un resultado “sin efecto” como prueba de que no lo hay. Un nulo sin potencia significa que el test no podía detectar el efecto — revisa el límite superior del intervalo de confianza antes de declarar el cambio neutro.
  • Declarar victoria en un segmento post-hoc. Si “usuarios móviles en Canadá” no era una hipótesis pre-registrada, es una pista para el próximo test, no un resultado.
  • Confundir novedad con preferencia. Las capacidades nuevas reciben picos de engagement inicial que decaen.
  • Cambiar experimentos en ejecución. Nunca modifiques el tratamiento a mitad del experimento — redespliega como un test nuevo.
  • Lanzar al 100% el día que termina el test. Un lift medido sobre el 5% del tráfico puede esconder costos que solo aparecen a escala — lanza con un despliegue gradual.
  • Lanzar con un resultado inconcluso porque “parecía positivo”. Los resultados planos también son información: significan que el cambio no valía la pena.

Variantes

  • A/B/n testing: probar más de dos variantes (A/B/C/D). Requiere corrección por comparaciones múltiples y muestras mucho más grandes.
  • Multivariate testing (MVT): probar combinaciones de cambios en varios elementos a la vez (titular × imagen × botón) para estimar efectos de interacción — distinto de simplemente agregar más variantes.
  • Sequential testing: analizar continuamente sin inflar la tasa de falsos positivos, usando métodos de alpha-spending o mSPRT.
  • Algoritmos bandit: desplazar tráfico dinámicamente hacia las variantes de mejor rendimiento — bueno para optimización de corta vida (titulares), más débil para medición causal limpia.
  • Grupos holdout: mantener un grupo de control de largo plazo para medir el impacto acumulado de muchos cambios lanzados.
  • Geo-experimentos: aleatorizar por geografía para cambios que no se pueden aleatorizar por usuario, como pricing o marketing offline.

Lectura Adicional

  • Herramientas de A/B testing de Evan Miller: la calculadora de tamaño de muestra y sus artículos relacionados son la referencia estándar para la matemática de experimentos.
  • Documentación de statsmodels: la referencia de proportions_ztest para analizar métricas de conversión en Python.
  • Paper de CUPED: Improving the Sensitivity of Online Controlled Experiments de Microsoft explica la técnica de reducción de varianza que usa toda plataforma grande.
  • Trustworthy Online Controlled Experiments (Kohavi, Tang, Xu — Cambridge University Press): el libro de referencia del campo, basado en experimentos de Bing, Google y LinkedIn.
  • Documentación de GrowthBook: los docs de la plataforma open-source son una referencia práctica para configuración de experimentos y diseño de métricas.
  • Archivos complementarios: el repo companion de a-b-testing-guide empaqueta la calculadora de muestra, la función de asignación, el script de análisis y la plantilla de hipótesis de esta guía como archivos independientes.

Conclusión

El A/B testing convierte el desarrollo de producto de guiado-por-opinión a guiado-por-evidencia — pero solo cuando se mantiene la disciplina. La metodología es simple; el rigor no. Pre-registra tu hipótesis y criterios de decisión, dimensiona la muestra honestamente, verifica la fontanería con tests A/A y chequeos de SRM, y trata cada resultado inconcluso como una respuesta documentada, no como un experimento fallido. Los equipos que hacen esto acumulan aprendizaje; los que miran resultados a diario y lanzan por corazonada obtienen respuestas incorrectas con total confianza.

Preguntas frecuentes

¿Cuánto tiempo debería correr un A/B test?

Mínimo 1-2 semanas completas para capturar ciclos semanales, y hasta alcanzar el tamaño de muestra precalculado — lo que llegue después. Terminar antes porque alcanzaste significancia a mitad de semana es la forma más común de producir victorias falsas.

¿Qué pasa si mi tratamiento muestra 50% de mejora?

Asume un bug hasta demostrar lo contrario. Los lifts tan grandes usualmente significan eventos contados doble, un control roto o SRM — verifica la instrumentación y el split de grupos antes de celebrar.

¿Puedo correr dos o más A/B tests a la vez?

Sí, si los experimentos son independientes: superficies distintas, métricas distintas o capas de asignación mutuamente excluyentes. Tests superpuestos en el mismo funnel crean efectos de interacción que hacen ambos resultados ilegibles.

¿Qué umbral de p-value debería usar?

0.05 para la mayoría de decisiones de producto, 0.01 para cambios de alto riesgo difíciles de revertir (pricing, algoritmos core). Elijas lo que elijas, comprométete antes de que empiece el experimento — elegir el umbral después de ver resultados es p-hacking.

¿Qué es un sample ratio mismatch?

Cuando los tamaños de grupo observados se desvían del split configurado más allá del azar — digamos 51/49 en lugar de 50/50 en una muestra grande. Casi siempre es síntoma de aleatorización rota, bots o telemetría perdida, e invalida todo el experimento hasta arreglarlo.

¿Qué hago si no tengo suficiente tráfico para el tamaño de muestra requerido?

No achiques el MDE para que encaje con tu tráfico — auméntalo testeando un cambio más audaz, extiende la duración (hasta ~4 semanas como máximo antes de que el drift de cohortes sea problema), reduce varianza con CUPED, o usa métodos cualitativos en esa superficie hasta que el tráfico crezca.

¿Debería construir o comprar una plataforma de experimentación?

Construye si tu volumen es bajo y tus métricas viven en un warehouse — una función hash más SQL te lleva sorprendentemente lejos. Compra cuando el volumen de experimentos crece, cuando no-ingenieros necesitan lanzar tests, o cuando quieres detección de SRM y sequential testing sin mantenerlos tú.