Data Engineering › Serving & Analytics
Cohort Analysis
Comparing groups who started together, tracked over their own lifetimes.
Also known as: cohort analysis, cohort table, cohort retention
A cohort is a group sharing a starting event — signed up in March, installed v2.4, joined from a campaign — tracked forward along its own lifetime. Cohort analysis lays those lifetimes side by side: March signups at month 0, 1, 2 against April signups at month 0, 1, 2. Calendar date disappears; age does the comparing.
month0 month1 month2 month3
Mar cohort 100% 62% 48% 41%
Apr cohort 100% 65% 51% —
May cohort 100% 58% — —
(read down columns: same age, different cohorts — the fair comparison)
Columns compare fairly (same age, different eras); rows show a cohort ageing. A rising column means newer cohorts behave better — the product improving. A falling one means the opposite, even if headline totals still grow on the back of acquisition.
The classic mistakes:
- Calendar-aligned comparison. March signups in June against June signups in June compares 3-month-olds with newborns. Align by cohort age, always.
- Reading rows as improvement. A cohort’s own row declines by construction (users leave over time) — that slope is the product’s retention shape, not a verdict on recent work. Verdicts live in the columns.
- Tiny recent cohorts. Last week’s cohort has two data points and enormous noise. Do not brief the all-hands on a cohort younger than the behaviour needs to stabilise.
- Survivorship in disguise. Cohorts defined by a later event (“users who upgraded”) select for the engaged. Define cohorts by the starting event, before outcomes are known.
- One cohort table for every question. Retention cohorts, revenue cohorts and feature-adoption cohorts answer different things. Build the cohort around the behaviour being studied (see retention analysis, funnel analysis).
The discipline: define by start, align by age, compare down columns, and distrust any cohort too young to have lived. See survival analysis for the formal machinery underneath.