Imagen ilustrativa generada con IA; las cantidades de la fotografía no representan los datos del ejercicio
Sí, la tasa de conversión puede mejorar en cada canal y caer en el total. En este ejercicio pasa del 9,2% al 3,8% porque cambia cuánto pesa cada canal en el conjunto. La aritmética es correcta; la dificultad está en explicar qué pregunta responde cada tasa.
Vamos a comprobarlo con cuatro filas ficticias. Puedes usar una calculadora, una hoja de cálculo o pedir ayuda a una IA. Al final tendrás una respuesta numérica, un prompt copiable y un comprobador de Python. No necesitas datos de clientes ni acceso a una plataforma de analítica.
El ejercicio de las cuatro filas
Los datos son sintéticos y creados para esta práctica. Cada sesión elegible pertenece a un solo canal y periodo. Una conversión es un evento de sí o no y se cuenta como máximo una vez por sesión. La tabla contiene todas las sesiones del ejemplo.
| Periodo | Canal | Sesiones | Conversiones |
|---|---|---|---|
| P1 | Intención alta | 900 | 90 |
| P1 | Exploración | 100 | 2 |
| P2 | Intención alta | 100 | 11 |
| P2 | Exploración | 900 | 27 |
Antes de mirar la solución, calcula:
- La tasa de cada fila: conversiones divididas por sesiones
- La tasa total de cada periodo: todas sus conversiones divididas por todas sus sesiones
- El cambio del total en puntos porcentuales
- La tasa de P2 si conservara la mezcla de P1: 90% de sesiones de Intención alta y 10% de Exploración
Los nombres de los canales son etiquetas de este ejemplo. No describen un sistema real de atribución ni prueban por qué alguien convirtió.
La solución por canal y por periodo
Las cuatro tasas son:
| Canal | Tasa P1 | Tasa P2 | Cambio |
|---|---|---|---|
| Intención alta | 90 / 900 = 10% | 11 / 100 = 11% | +1 punto porcentual |
| Exploración | 2 / 100 = 2% | 27 / 900 = 3% | +1 punto porcentual |
Ambos canales mejoran. Ahora suma los recuentos antes de dividir:
P1: (90 + 2) / (900 + 100) = 92 / 1000 = 9,2%
P2: (11 + 27) / (100 + 900) = 38 / 1000 = 3,8%
Cambio: 3,8% - 9,2% = -5,4 puntos porcentuales
Las conversiones observadas también bajan: de 92 a 38, con 1.000 sesiones en cada periodo. Escribe −5,4 puntos porcentuales, no «−5,4%». Esa última expresión confunde la diferencia entre tasas con un cambio relativo.
El promedio simple de las tasas da 6% en P1 y 7% en P2. No representa estos totales: concede el mismo peso a un canal de 100 sesiones y a otro de 900. Para el total observado, el denominador son las sesiones, no el número de canales.
Qué cambió en la mezcla
En P1, el canal con la tasa más alta aporta el 90% de las sesiones. En P2 aporta solo el 10%. Exploración pasa del 10% al 90%. Aunque convierte algo mejor que antes, su tasa sigue siendo menor que la de Intención alta.
Puedes reconstruir los totales ponderando por esas proporciones:
P1 observado: 0,9 × 10% + 0,1 × 2% = 9,2%
P2 observado: 0,1 × 11% + 0,9 × 3% = 3,8%
Esta inversión entre los resultados de los grupos y el conjunto es un ejemplo de la paradoja de Simpson, descrita por OpenStax en Contemporary Mathematics. Nuestra tabla y sus cálculos son originales.
Eso no convierte al total en un error ni hace que los segmentos sean siempre la mejor métrica. El total describe las sesiones que llegaron. Los segmentos permiten comparar cada grupo. Antes de elegir una cifra para tomar una decisión, define la pregunta.
La comparación con mezcla fija
Ahora responde una pregunta diferente: ¿qué tasa descriptiva obtenemos al aplicar las tasas de P2 a la mezcla de P1?
P2 con mezcla de P1: 0,9 × 11% + 0,1 × 3% = 10,2%
Comparación con P1: 10,2% - 9,2% = +1 punto porcentual
El 10,2% es un cálculo con pesos fijos, no el resultado observado de P2. No significa que se registraran 102 conversiones ni demuestra lo que habría ocurrido al cambiar una campaña. Conservar los pesos ayuda a describir la comparación; no sustituye un diseño que permita estudiar causas.
Un prompt para pedir un análisis verificable
Copia este prompt. Incluye la tabla y las reglas del denominador para que la respuesta se pueda contrastar con la solución.
Analiza únicamente esta tabla ficticia. Cada sesión elegible pertenece a un solo canal y periodo; una conversión se cuenta como máximo una vez por sesión.
Calcula:
1) conversiones/sesiones de cada fila;
2) tasas totales por periodo usando suma de conversiones/suma de sesiones;
3) cambio total en puntos porcentuales;
4) tasa de P2 manteniendo la mezcla de P1: 90% Intención alta y 10% Exploración.
Muestra numeradores, denominadores y operaciones. Explica por qué el promedio simple de las dos tasas de cada periodo no representa su total.
Cierra con tres frases que separen lo observado, la comparación con mezcla fija y lo que estos datos no permiten concluir. No inventes causas ni afirmes significación estadística.
Tabla:
P1/Intención alta/900/90
P1/Exploración/100/2
P2/Intención alta/100/11
P2/Exploración/900/27
Columnas en ese orden: periodo, canal, sesiones, conversiones.
Este prompt es una propuesta de práctica, no una transcripción de una prueba ejecutada con un modelo. Comprueba la respuesta: una explicación fluida puede contener un denominador incorrecto.
Comprueba la aritmética con Python
Guarda este archivo como metric-fixture.json:
[
{"periodo": "P1", "canal": "Intención alta", "sesiones": 900, "conversiones": 90},
{"periodo": "P1", "canal": "Exploración", "sesiones": 100, "conversiones": 2},
{"periodo": "P2", "canal": "Intención alta", "sesiones": 100, "conversiones": 11},
{"periodo": "P2", "canal": "Exploración", "sesiones": 900, "conversiones": 27}
]
En la misma carpeta, guarda el siguiente código como check-metrics.py. Usa Fraction de la biblioteca estándar de Python para verificar las operaciones con números racionales exactos.
"""Original educational fixture. Synthetic data; standard-library only."""
import json
from fractions import Fraction
from pathlib import Path
rows = json.loads(Path(__file__).with_name("metric-fixture.json").read_text())
rates = {(r["periodo"], r["canal"]): Fraction(r["conversiones"], r["sesiones"])
for r in rows}
totals = {}
for period in ("P1", "P2"):
group = [r for r in rows if r["periodo"] == period]
sessions = sum(r["sesiones"] for r in group)
conversions = sum(r["conversiones"] for r in group)
totals[period] = {"sesiones": sessions, "conversiones": conversions,
"tasa": Fraction(conversions, sessions)}
assert rates[("P1", "Intención alta")] == Fraction(10, 100)
assert rates[("P2", "Intención alta")] == Fraction(11, 100)
assert rates[("P1", "Exploración")] == Fraction(2, 100)
assert rates[("P2", "Exploración")] == Fraction(3, 100)
assert totals["P1"]["tasa"] == Fraction(92, 1000)
assert totals["P2"]["tasa"] == Fraction(38, 1000)
delta_pp = (totals["P2"]["tasa"] - totals["P1"]["tasa"]) * 100
assert delta_pp == Fraction(-54, 10)
# Keep the P1 mix (90% / 10%) fixed as a separate descriptive comparison.
standardized_p2 = (Fraction(9, 10) * rates[("P2", "Intención alta")] +
Fraction(1, 10) * rates[("P2", "Exploración")])
assert standardized_p2 == Fraction(102, 1000)
assert (standardized_p2 - totals["P1"]["tasa"]) * 100 == 1
out = {
"row_rates_percent": [float(rates[(r["periodo"], r["canal"])] * 100) for r in rows],
"P1": {"sessions": 1000, "conversions": 92, "rate_percent": 9.2},
"P2": {"sessions": 1000, "conversions": 38, "rate_percent": 3.8},
"aggregate_change_percentage_points": float(delta_pp),
"naive_unweighted_means_percent": {"P1": 6.0, "P2": 7.0},
"P2_at_P1_mix_percent": float(standardized_p2 * 100),
"fixed_mix_change_percentage_points": 1.0,
"assertions": "PASS"
}
print(json.dumps(out, ensure_ascii=False, indent=2))
Ejecuta desde esa carpeta:
python3 check-metrics.py
La salida debe incluir assertions: "PASS", tasas por fila de 10, 2, 11 y 3, totales de 9,2% y 3,8%, cambio de −5,4 puntos y tasa con mezcla fija de 10,2%. Si una comprobación falla, Python detiene el programa con un error.
Este comprobador se ejecutó con Python 3.12.14 y pasó sus aserciones. Verifica esta tabla y su solución; no valida datos reales, causalidad ni una respuesta generada por IA.
Cómo escribir la conclusión de un informe
Una conclusión que conserva las tres preguntas sería:
«La conversión observada cayó del 9,2% al 3,8%, una diferencia de −5,4 puntos porcentuales. Ambos canales mejoraron un punto y, con la mezcla de P1, las tasas de P2 dan un 10,2%. Estos datos describen una inversión asociada al cambio de mezcla, pero no permiten atribuir las mejoras a una campaña ni afirmar significación estadística».
Limitaciones y supuestos
Antes de trasladarlo a tu trabajo, revisa que los periodos usen la misma definición de conversión, que los segmentos no se solapen y que no falten sesiones. Si una sesión puede generar varias conversiones, el indicador deja de ser la proporción binaria que definimos aquí. Cambia la definición y el análisis de forma explícita.
Para practicar fórmulas y revisiones de hojas, consulta la guía de ChatGPT para Excel. Si quieres pasar de una tabla a un informe verificable, continúa con Work para Datos, que incluye análisis de variaciones, informes y limitaciones. Este ejercicio es una práctica pública independiente del curso.
