0Pricing
SQL Interview Prep · Lección

Incremento, significancia y controles en SQL

Calcular el incremento de conversión y las comprobaciones de datos que detectan un experimento defectuoso.

Incremento, significancia y controles en SQL es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Interview Prep incluye 4 lecciones en total.

De las métricas a una decisión

La conversión por variante es solo el comienzo. La pregunta de la entrevista es: ¿realmente ganó el tratamiento? Eso implica calcular el incremento, evaluar si la diferencia es real o ruido y comprobar las métricas de protección que detectan un experimento defectuoso.

No ejecutará un paquete estadístico completo en SQL, pero sí puede calcular los valores de entrada y una señal aproximada de significación, que es lo que los entrevistadores esperan ver.

El CTE de resumen por variante

Todo lo que viene después se basa en un único resumen ordenado: por variante, el número de usuarios n, el número de conversores c y la tasa de conversión p. Calcúlelo una vez en un CTE y reutilícelo.

WITH summary AS (
  SELECT
    variant,
    COUNT(DISTINCT user_id)            AS n,
    COUNT(DISTINCT converted_user)     AS c
  FROM experiment_flat
  GROUP BY variant
)
SELECT
  variant, n, c,
  1.0 * c / n AS p
FROM summary;

Incremento absoluto frente a relativo

Hay dos definiciones de incremento, y los entrevistadores esperan por defecto la relativa:

  • Incremento absoluto = p_treatment - p_control (puntos porcentuales).
  • Incremento relativo = (p_treatment - p_control) / p_control (mejora porcentual).

Decir «un aumento de 2 puntos» o «un incremento relativo del 20 %» puede describir el mismo resultado. Sea explícito.

Calcular el incremento con una autocombinación en columnas

Para comparar dos variantes en una sola fila, coloque control y tratamiento uno al lado del otro mediante una agregación condicional y realice después las operaciones aritméticas.

Así evita una autocombinación frágil y mantiene legible la fórmula del incremento.

WITH s AS (
  SELECT variant,
    COUNT(DISTINCT user_id)        AS n,
    COUNT(DISTINCT converted_user) AS c
  FROM experiment_flat GROUP BY variant
),
rates AS (
  SELECT
    MAX(CASE WHEN variant='control'   THEN 1.0*c/n END) AS p_ctrl,
    MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) AS p_trt
  FROM s
)
SELECT
  p_ctrl, p_trt,
  p_trt - p_ctrl                          AS abs_lift,
  ROUND(100.0 * (p_trt - p_ctrl) / p_ctrl, 2) AS rel_lift_pct
FROM rates;

Por qué una diferencia podría ser ruido

Una tasa más alta en el tratamiento podría deberse simplemente al azar del muestreo. La significación pregunta: ¿qué probabilidad hay de observar una diferencia de este tamaño si las variantes fueran realmente idénticas?

El elemento clave es el error estándar de cada tasa, que disminuye a medida que aumenta el tamaño de la muestra. Las muestras grandes hacen fiables los incrementos pequeños; las muestras pequeñas hacen dudosos incluso los incrementos grandes.

Error estándar de una proporción

Para una tasa de conversión p sobre n usuarios, el error estándar es sqrt(p * (1 - p) / n). Calcúlelo directamente para cada variante en SQL.

Esto cuantifica la variabilidad de cada tasa antes de compararlas.

WITH s AS (
  SELECT variant,
    COUNT(DISTINCT user_id)        AS n,
    COUNT(DISTINCT converted_user) AS c
  FROM experiment_flat GROUP BY variant
)
SELECT
  variant, n,
  1.0 * c / n                                       AS p,
  SQRT( (1.0*c/n) * (1 - 1.0*c/n) / n )             AS std_err
FROM s;

Una puntuación z para dos proporciones

Una señal aproximada de significación es la puntuación z para dos proporciones: la diferencia entre las tasas dividida entre el error estándar de esa diferencia. Un valor absoluto superior aproximadamente a 1.96 corresponde al umbral habitual del 95 %.

Indique claramente que se trata de una aproximación, no de un sustituto de una prueba adecuada, pero responde en SQL a la pregunta «¿es razonable pensar que esto es real?».

WITH r AS (
  SELECT
    MAX(CASE WHEN variant='control'   THEN 1.0*c/n END) AS p1,
    MAX(CASE WHEN variant='control'   THEN n END)        AS n1,
    MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) AS p2,
    MAX(CASE WHEN variant='treatment' THEN n END)        AS n2
  FROM (
    SELECT variant, COUNT(DISTINCT user_id) n,
           COUNT(DISTINCT converted_user) c
    FROM experiment_flat GROUP BY variant
  ) s
)
SELECT
  p2 - p1 AS abs_lift,
  (p2 - p1) / SQRT( p1*(1-p1)/n1 + p2*(1-p2)/n2 ) AS z_score
FROM r;

Interpretar la puntuación z

Convierta el número en una conclusión para que el entrevistador perciba criterio de negocio y no solo matemáticas:

  • |z| >= 1.96: la diferencia es significativa con aproximadamente un 95 % de confianza.
  • |z| < 1.96: no hay pruebas suficientes; el incremento podría ser ruido.

Use un CASE para emitir una etiqueta legible y relacione siempre la significación con el tamaño práctico del incremento.

SELECT
  z_score,
  CASE WHEN ABS(z_score) >= 1.96
       THEN 'significant at 95%'
       ELSE 'not significant' END AS verdict
FROM (
  SELECT 2.3 AS z_score
) t;

Desajuste de la proporción de la muestra (SRM)

La primera métrica de protección que suelen examinar los entrevistadores es si los usuarios se dividieron tal como estaba previsto. Un experimento 50/50 que termina en 53/47 con millones de usuarios es una señal de alarma: la aleatorización o el registro de datos están fallando.

Compare los recuentos observados con la división esperada. Una desviación grande invalida toda la prueba antes incluso de analizar la métrica.

WITH cnt AS (
  SELECT variant, COUNT(DISTINCT user_id) AS n
  FROM experiment_flat GROUP BY variant
),
tot AS (SELECT SUM(n) AS total FROM cnt)
SELECT
  c.variant, c.n,
  ROUND(100.0 * c.n / t.total, 2)        AS observed_pct,
  50.0                                   AS expected_pct
FROM cnt c CROSS JOIN tot t;

Métricas de protección

Una métrica de protección es una métrica que no debe empeorar aunque mejore la métrica principal. Algunos ejemplos clásicos son la latencia de la página, la tasa de reembolsos, la tasa de cancelación de suscripciones y la tasa de errores.

Infórmelas por variante junto con la métrica principal. Un tratamiento que aumenta la conversión pero duplica los reembolsos no es una victoria. Calcular las métricas de protección sin que se lo pidan demuestra criterio de producto.

SELECT
  variant,
  AVG(load_ms)                                  AS avg_latency_ms,
  ROUND(100.0 * SUM(refunded) / COUNT(*), 2)    AS refund_rate_pct,
  ROUND(100.0 * SUM(errored)  / COUNT(*), 2)    AS error_rate_pct
FROM experiment_flat
GROUP BY variant;

El informe completo

Un informe completo del experimento, del tipo que les gusta a los entrevistadores, combina cuatro elementos en un solo resultado: tasas por variante, incremento relativo, conclusión de significación y comprobación de SRM. Encadene los CTE y preséntelos como una única tabla preparada para tomar decisiones.

Termine indicando: diferencia significativa, tamaño del incremento aceptable, métricas de protección saludables, división equilibrada y, por tanto, publicar o mantener en espera.

WITH s AS (
  SELECT variant, COUNT(DISTINCT user_id) n,
         COUNT(DISTINCT converted_user) c
  FROM experiment_flat GROUP BY variant
),
r AS (
  SELECT
    MAX(CASE WHEN variant='control'   THEN 1.0*c/n END) p1,
    MAX(CASE WHEN variant='control'   THEN n END) n1,
    MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) p2,
    MAX(CASE WHEN variant='treatment' THEN n END) n2
  FROM s
)
SELECT
  ROUND(100.0*(p2-p1)/p1, 2) AS rel_lift_pct,
  CASE WHEN ABS((p2-p1)/SQRT(p1*(1-p1)/n1 + p2*(1-p2)/n2)) >= 1.96
       THEN 'significant' ELSE 'not significant' END AS verdict,
  CASE WHEN ABS(1.0*n2/(n1+n2) - 0.5) > 0.02
       THEN 'SRM warning' ELSE 'split ok' END AS srm_check
FROM r;

Comprobación rápida

El tratamiento muestra un incremento relativo del 25 % en la conversión, pero cada variante solo tiene 40 usuarios. ¿Cuál es la conclusión correcta?

Repaso: incremento, significación y métricas de protección

Ahora puede convertir las métricas sin procesar de las variantes en una decisión:

  • Diferencie el incremento absoluto (en puntos) del incremento relativo (en porcentaje).
  • Calcule el error estándar de cada tasa y una puntuación z para dos proporciones como señal aproximada de significación (|z| >= 1.96 ~ 95 %).
  • Realice la comprobación de SRM para confirmar que la división coincide con el diseño.
  • Informe las métricas de protección para que una victoria no oculte una regresión.
  • Presente un único informe preparado para tomar decisiones y relacione siempre la significación con el tamaño práctico del incremento.

Con esto concluye el análisis de embudos y pruebas A/B en SQL.

Preguntas frecuentes

¿La lección «Incremento, significancia y controles en SQL» es gratis?

Sí — el texto completo de «Incremento, significancia y controles en SQL» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Interview Prep, actualiza a CoddyKit PRO. El curso de SQL Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Incremento, significancia y controles en SQL»?

Calcular el incremento de conversión y las comprobaciones de datos que detectan un experimento defectuoso. Practicas SQL Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Interview Prep?

No se requiere experiencia previa. SQL Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Incremento, significancia y controles en SQL»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Interview Prep?

Sí. Cada lección de SQL Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Crear un embudo de varios pasos
  2. Eventos ordenados y ventanas temporales
  3. Asignación y métricas de pruebas A/B
  4. Incremento, significancia y controles en SQL
← Volver a SQL Interview Prep