Módulo 3: Cohort Retention

Por qué el promedio agregado engaña

Descripción

Ya sabes leer una curva de retención (lección 3) y distinguir una meseta real de un balde con fugas (lección 4) — pero hasta ahora siempre miraste una sola cohorte a la vez. La mayoría de los dashboards de producto no hacen eso: reportan un único número agregado, como "% de usuarios activos esta semana" o el clásico DAU/MAU (usuarios activos diarios sobre usuarios activos mensuales), mezclando en ese único número a todas las cohortes juntas, sin distinguir a los que entraron ayer de los que entraron hace un año.

Esta lección demuestra, con un modelo ejecutado, algo que suena contraintuitivo la primera vez que se ve: ese número agregado puede subir, semana tras semana, incluso cuando cada cohorte individual se está fugando exactamente igual que siempre — sin ninguna mejora real en cuánto se queda la gente. El agregado sube por una razón que no tiene nada que ver con retención: porque cada cohorte nueva es más grande que la anterior, y esa gente nueva —que todavía no tuvo tiempo de fugarse— infla el número total.

Conexión con el módulo. Esta lección es la razón de fondo por la que todo el módulo insiste en mirar cohortes por separado (lecciones 3-4) y no un promedio único. La lección 6 te da la herramienta formal para nunca caer en esta trampa: la tabla de cohortes completa, leída fila por fila y columna por columna.

Una analogía: la temperatura promedio del hospital

Imagina un hospital que reporta, cada hora, "la temperatura corporal promedio de todos los pacientes internados: 37.0°C" — un número que suena perfectamente normal, tranquilizador incluso. Pero ese promedio puede estar escondiendo algo grave: si la mitad de los pacientes tiene 39°C de fiebre alta y la otra mitad tiene 35°C de hipotermia, el promedio de las dos mitades da, matemáticamente, 37.0°C — el mismo número que si todos los pacientes estuvieran perfectamente sanos. El promedio no está mintiendo en el sentido de dar un número falso; está mintiendo en el sentido de esconder por completo el patrón real, que es mucho más urgente que "todo normal".

El "% de usuarios activos" agregado de un producto funciona exactamente igual. Puede reportar un número estable, o incluso creciente, mientras mezcla cohortes viejas que se están fugando en serio (la "hipotermia" del negocio: gente que se está yendo) con cohortes nuevas recién llegadas que todavía están en su semana de "fiebre" inicial de entusiasmo (activas casi al 100%, simplemente porque acaban de entrar). El número agregado promedia ambos efectos y, como con los pacientes del hospital, el resultado puede parecer perfectamente sano mientras esconde un problema real que solo se ve mirando cada grupo por separado.

Ejemplo trabajado: el WAU que sube mientras cada cohorte se fuga

Tres cohortes de Mercado entran en semanas consecutivas, cada una más grande que la anterior porque el equipo de marketing está invirtiendo más cada semana. Las tres se fugan exactamente igual —mismo 100% en su semana de entrada, mismo 40% una semana después, mismo 25% dos semanas después—: ninguna mejoró ni empeoró respecto a la anterior. Vamos a ver qué le pasa al número que ve la dirección de la empresa (el WAU total, weekly active users) frente a lo que le pasa a cada cohorte por separado:

// Tres cohortes de Mercado, cada una MAS GRANDE que la anterior porque marketing
// esta invirtiendo mas cada semana. Las tres se fugan exactamente igual: 100% en
// su semana de entrada, 40% una semana despues, 25% dos semanas despues -- la
// MISMA curva de retencion para las tres, sin ninguna mejora real.
const retentionShapePct = [100, 40, 25]; // % activo segun semanas desde la entrada
const cohorts = [
  { name: 'Cohorte A (entro semana 0)', entryWeek: 0, size: 1000 },
  { name: 'Cohorte B (entro semana 1)', entryWeek: 1, size: 1500 },
  { name: 'Cohorte C (entro semana 2)', entryWeek: 2, size: 2000 },
];

function activeInCalendarWeek(cohort, calendarWeek) {
  const age = calendarWeek - cohort.entryWeek; // semanas desde que esta cohorte entro
  if (age < 0 || age >= retentionShapePct.length) return 0; // no existe todavia
  return Math.round((retentionShapePct[age] / 100) * cohort.size);
}

console.log('=== Lo que ve la direccion: el WAU agregado (parece que crece) ===\n');
let everRegistered = 0;
for (let calendarWeek = 0; calendarWeek <= 2; calendarWeek++) {
  const activePerCohort = cohorts.map((c) => activeInCalendarWeek(c, calendarWeek));
  const totalActive = activePerCohort.reduce((a, b) => a + b, 0);
  if (calendarWeek === 0) everRegistered = cohorts[0].size;
  if (calendarWeek === 1) everRegistered = cohorts[0].size + cohorts[1].size;
  if (calendarWeek === 2) everRegistered = cohorts[0].size + cohorts[1].size + cohorts[2].size;
  console.log('Semana calendario ' + calendarWeek + ': WAU total = ' + totalActive +
    '  (de ' + everRegistered + ' registrados hasta hoy)');
}

console.log('\n=== Lo que en realidad esta pasando: cada cohorte por separado ===\n');
cohorts.forEach((c) => {
  const trail = [];
  for (let age = 0; age < retentionShapePct.length; age++) {
    const calendarWeek = c.entryWeek + age;
    if (calendarWeek > 2) break;
    trail.push(activeInCalendarWeek(c, calendarWeek) + ' (' + retentionShapePct[age] + '%)');
  }
  console.log(c.name + ': ' + trail.join(' -> '));
});

console.log('\nEl WAU total SUBE (1000 -> 1900 -> 2850) semana a semana -- se ve como');
console.log('crecimiento sano. Pero ninguna cohorte individual mejoro: las tres se fugan');
console.log('exactamente igual, a la misma meseta del 25%. El WAU sube solo porque cada');
console.log('cohorte nueva es mas grande que la anterior, no porque la gente se quede mas.');

Qué esperar. Al correr el archivo con Node, la salida es exactamente esta:

=== Lo que ve la direccion: el WAU agregado (parece que crece) ===

Semana calendario 0: WAU total = 1000  (de 1000 registrados hasta hoy)
Semana calendario 1: WAU total = 1900  (de 2500 registrados hasta hoy)
Semana calendario 2: WAU total = 2850  (de 4500 registrados hasta hoy)

=== Lo que en realidad esta pasando: cada cohorte por separado ===

Cohorte A (entro semana 0): 1000 (100%) -> 400 (40%) -> 250 (25%)
Cohorte B (entro semana 1): 1500 (100%) -> 600 (40%)
Cohorte C (entro semana 2): 2000 (100%)

El WAU total SUBE (1000 -> 1900 -> 2850) semana a semana -- se ve como
crecimiento sano. Pero ninguna cohorte individual mejoro: las tres se fugan
exactamente igual, a la misma meseta del 25%. El WAU sube solo porque cada
cohorte nueva es mas grande que la anterior, no porque la gente se quede mas.

Lee con cuidado la segunda mitad de la salida: la Cohorte A, en su propia semana 2, está en 250 activos (25% de sus 1,000 originales) — exactamente la misma fuga que tuvo la lección 4 con la cohorte sana. La Cohorte B, en su propia semana 1, está en 600 (40% de sus 1,500) — la misma tasa que tuvo la Cohorte A en su semana 1. Ninguna cohorte se comporta distinto a las demás. Y sin embargo, el WAU total que ve un directivo mirando solo la primera mitad de la salida —1000, luego 1900, luego 2850— cuenta una historia de "crecimiento acelerado", casi duplicándose semana a semana. Las dos historias son ciertas al mismo tiempo, exactamente como el hospital con 37.0°C de promedio: el número agregado no miente en sus matemáticas, pero esconde por completo que el motor real de ese crecimiento es pura adquisición de gente nueva, no una mejora en cuánto se queda cada persona.

El mismo patrón, con nombre: DAU/MAU

El agregado más común en la industria —DAU/MAU (usuarios activos diarios divididos por usuarios activos mensuales, como una medida de "qué tan enganchado" está el usuario promedio)— sufre exactamente este mismo problema. Una base de usuarios que crece rápido, con muchas cohortes nuevas frescas todavía en su "fiebre" inicial de actividad diaria, puede mostrar un DAU/MAU saludable incluso si cada cohorte, medida por separado, se fuga tan mal como el balde con fugas de la lección 4. El único antídoto real no es un mejor promedio —no existe una fórmula agregada que resuelva esto por completo—, sino, directamente, dejar de promediar: mirar cada cohorte por separado, como hizo el ejemplo de hoy, y como formaliza la tabla de cohortes de la próxima lección.

Errores comunes

Mirar el DAU/MAU agregado y no ver que cada cohorte se está fugando. Qué pasa: un equipo revisa el DAU/MAU semanal, lo ve estable o creciendo, y da por cerrado el tema de retención sin descomponer el número por cohorte. Por qué pasa: DAU/MAU es un solo número, fácil de poner en un dashboard ejecutivo, mientras que descomponerlo por cohorte requiere una tabla completa (la de la lección 6) que rara vez cabe en la misma vista. Cómo detectarlo: nadie puede contestar "¿y la cohorte que entró hace ocho semanas, cómo está hoy?" con un número específico. Cómo corregirlo: exactamente como en el ejemplo de hoy, siempre acompaña cualquier número agregado con al menos una vista por cohorte — el agregado solo, sin la descomposición, no alcanza para diagnosticar salud real.

Confundir crecimiento de nuevos usuarios con mejora de retención. Qué pasa: el WAU total sube 90% en una semana (como en el ejemplo, de 1000 a 1900) y el equipo lo celebra como "la gente se está quedando más". Por qué pasa: un número que sube se interpreta, casi por reflejo, como una buena noticia sobre el producto, sin distinguir si la causa es más gente entrando o más gente quedándose. Cómo detectarlo: el crecimiento del agregado coincide, en el tiempo, con un aumento del gasto en adquisición o marketing — la correlación correcta a buscar. Cómo corregirlo: antes de atribuir un WAU creciente a "mejor retención", verifica primero si el tamaño de las cohortes nuevas también está creciendo (como en el ejemplo de hoy, 1000 → 1500 → 2000). Si es así, el crecimiento del agregado puede explicarse enteramente por adquisición, sin ninguna mejora real en retención.

Reportar el "% activo total" al equipo ejecutivo sin descomponerlo. Qué pasa: un reporte mensual dice "% de usuarios activos: 63%, en línea con el mes pasado", presentado como la única señal de salud del producto. Por qué pasa: un solo porcentaje es fácil de poner en una diapositiva; una tabla de cohortes completa exige más espacio y más contexto para leerse bien. Cómo detectarlo: el reporte no incluye ninguna vista por cohorte, ni siquiera una nota aclarando que el número es un agregado que mezcla generaciones distintas de usuarios. Cómo corregirlo: cualquier "% activo" o "engagement rate" reportado a nivel de todo el negocio debería venir acompañado, como mínimo, de la meseta de la cohorte más madura disponible — el número real que dice si el producto retiene gente de verdad, no solo si sigue creciendo en volumen.

Ejercicios

Ejercicio 1 — Calcula el WAU de una cuarta semana. Siguiendo el ejemplo de hoy, si en la semana calendario 3 entra una Cohorte D de 2,500 usuarios (con la misma retentionShapePct = [100, 40, 25]), calcula el WAU total de la semana calendario 3, sumando lo que le queda a las cohortes A, B, C y D en esa semana. (Cohorte A estaría en su semana 3, fuera del arreglo de tres valores — asume que se mantiene en su última tasa conocida, 25%.)

Ver solución

En la semana calendario 3: Cohorte A (semana 3, asumiendo que se mantiene en 25%) = 250; Cohorte B (semana 2) = 25% de 1500 = 375; Cohorte C (semana 1) = 40% de 2000 = 800; Cohorte D (semana 0, recién entra) = 100% de 2500 = 2500. WAU total = 250 + 375 + 800 + 2500 = 3925. El WAU sigue subiendo (2850 → 3925), y el motivo sigue siendo el mismo: la cohorte nueva (D) es la más grande de todas y acaba de entrar al 100%.

Ejercicio 2 — Explica la trampa sin usar números. En 2-3 frases, sin citar ningún número del ejemplo, explica con tus propias palabras por qué un WAU creciente no es evidencia de que la retención esté mejorando.

Ver solución

Un WAU creciente combina dos efectos completamente distintos en un solo número: cuánta gente nueva entra cada semana, y qué porcentaje de la gente que ya estaba se queda. Si la cantidad de gente nueva crece lo suficientemente rápido, el WAU total puede subir incluso si el porcentaje que se queda de cada cohorte individual se mantiene igual o empeora — el crecimiento en volumen tapa por completo cualquier problema de retención, exactamente como pasó con las tres cohortes de Mercado. Para saber si la retención mejoró de verdad, hay que aislar el segundo efecto —mirar la curva de una cohorte específica en el tiempo—, no el número agregado que mezcla ambos.

Ejercicio 3 — Diseña un contraejemplo donde el agregado sí mejora de verdad. Modifica el escenario del ejemplo de hoy (misma estructura de tres cohortes, mismos tamaños 1000/1500/2000) para que el WAU total suba por una razón legítima: una mejora real de retención, no solo crecimiento de nuevos usuarios. Describe qué cambiarías en retentionShapePct para cada cohorte.

Ver solución

Una versión válida: en vez de una retentionShapePct idéntica para las tres cohortes, cada cohorte nueva tendría su propia curva, mejor que la anterior — por ejemplo, Cohorte A con [100, 40, 25] (la original), Cohorte B con [100, 45, 30] (mejoró 5 puntos en cada semana respecto a A), y Cohorte C con [100, 50, ...] (mejoró otros 5 puntos respecto a B). En ese escenario, el WAU total seguiría subiendo, pero ahora la subida tendría dos causas legítimas y separables: más gente nueva entrando, y cada cohorte reteniendo mejor que la anterior en el mismo punto de su vida. La única forma de distinguir este escenario del ejemplo original es exactamente la que enseña la lección 6: comparar la misma columna (mismo número de semanas desde la entrada) entre cohortes distintas, y ver si esa columna mejora con el tiempo.

Resumen y siguiente paso

En esta lección viste, ejecutado, cómo el WAU total de Mercado puede subir de 1,000 a 1,900 a 2,850 en tres semanas —una historia de crecimiento acelerado— mientras las tres cohortes que lo componen se fugan exactamente igual, sin ninguna mejora real. El agregado sube solo porque cada cohorte nueva es más grande que la anterior, exactamente como el promedio de temperatura de un hospital puede esconder fiebre e hipotermia detrás de un número tranquilizador.

Antes de avanzar deberías poder: explicar por qué un DAU/MAU o un "% activo" agregado puede subir sin que la retención mejore, y describir qué información específica se pierde al promediar cohortes de distinta edad en un solo número.

La lección 6 te da la herramienta formal para nunca caer en esta trampa: la tabla completa de cohortes, con su forma triangular característica, leída fila por fila (una cohorte en el tiempo) y columna por columna (todas las cohortes en el mismo punto de vida) — exactamente la comparación que el ejercicio 3 de hoy adelantó.

Recursos

  • Mixpanel, "Cohort analysis: How to read the chart, choose a platform, and turn retention into growth" — mixpanel.com/blog/cohort-analysis. Dice, literalmente: "tu tasa de retención general es un promedio, y los promedios a veces mienten" — la fuente directa del título de esta lección. En inglés.
  • Amplitude, "Cohort Retention Analysis: Reduce Churn Using Customer Data" — amplitude.com/blog/cohorts-to-improve-your-retention. Explica por qué las métricas agregadas de todo el negocio esconden el comportamiento real de segmentos y cohortes específicas. En inglés.
  • Amplitude, "What Is Cohort Retention Analysis: Essential Metrics Guide" — amplitude.com/explore/analytics/cohort-retention-analysis. La referencia base sobre por qué el análisis de cohortes existe específicamente para resolver este problema del promedio agregado. En inglés.