3、留存分析基础:经典留存曲线解读

留存曲线,说白了就是用户留下来比例的「心电图」。我刚开始做增长那会儿,总觉得看日活就够了。后来发现,日活涨了,可能只是拉新砸钱多,老用户其实在悄悄流失。留存曲线才是那个能提前预警的指标。

今天咱们就聊聊两种最经典的留存曲线形态——衰减曲线和微笑曲线。看懂它们,你就能判断产品到底有没有「黏性」。

3.1 衰减曲线:大多数产品的常态

你随便拉一个产品出来,画它的留存曲线,大概率长这样:

  • 第1天留存最高(比如60%-80%)
  • 第7天降到30%-40%
  • 第30天可能只剩10%-20%
  • 之后缓慢下降,趋于平稳

这就是典型的衰减曲线。它反映了一个残酷的现实:用户来得快,走得也快。

核心规律:衰减曲线遵循「幂律分布」。简单说就是,留存率下降的速度会越来越慢。前7天是流失高峰期,熬过去的老用户,后面反而比较稳定。

我记得有一次分析一个社交App的数据。第1天留存有75%,看着不错。但第7天直接掉到28%。团队慌了,问我是不是产品出问题了。我说别急,咱们看看第30天——18%。嗯,虽然掉得猛,但曲线形态是标准的幂律衰减,说明产品本身没问题,只是新用户筛选机制需要优化。

3.2 微笑曲线:少数产品的「逆袭」

还有一种曲线,长得像微笑的嘴巴:

  • 初期留存下降(和衰减曲线一样)
  • 中期触底反弹
  • 后期留存反而回升

这就是微笑曲线。说实话,能画出这种曲线的产品不多。我见过的主要是两类:

  1. 强网络效应产品:比如社交平台、协作工具。用户用得越久,关系链越深,离开成本越高。
  2. 习惯养成型产品:比如健身打卡、记账软件。用户坚持一段时间后,行为变成了习惯。

我的经验:如果你发现产品留存曲线开始出现微笑形态,恭喜你,产品可能找到了「aha moment」。这时候应该加大投入,把让用户留下来的那个功能放大。

我曾经参与过一个在线教育项目。前3个月留存曲线一直是标准的衰减形态。后来我们优化了「学习计划」功能,让用户能自定义每日任务。3个月后,第30天留存从12%涨到了25%,曲线底部开始翘起来了。嗯,这就是微笑曲线的雏形。

3.3 两种曲线的对比

咱们用表格直观对比一下:

维度 衰减曲线 微笑曲线
形态 持续下降,斜率渐缓 先降后升,底部有拐点
常见产品 工具类、内容消费类 社交类、习惯养成类
用户行为 新鲜感驱动,用完即走 关系链/习惯驱动,越用越深
优化方向 缩短「首次价值体验」路径 强化网络效应或习惯回路
健康度判断 看衰减速度是否快于行业基准 看拐点出现的时间是否提前

你想想看,如果你的产品是衰减曲线,别灰心。大多数产品都这样。关键是找到那个「平稳期」的留存率,然后想办法把它往上提一点。

3.4 如何解读你的留存曲线

光知道两种曲线还不够,你得会「读」它。我一般按三步走:

  1. 看形状:是衰减还是微笑?如果是衰减,看衰减速度是否正常。
  2. 找拐点:曲线从陡降变平缓的那个点在哪?那就是用户「决定去留」的关键时刻。
  3. 对比分段:不同渠道、不同用户群的曲线一样吗?我见过很多次,某个渠道的留存曲线是微笑的,另一个渠道却是直线下跌。

避坑指南:我曾经犯过一个错误——只看整体留存曲线。结果发现整体数据还行,但细分一看,iOS用户留存远高于Android。原来Android版有个Bug,新用户注册后收不到验证码。整体曲线掩盖了这个问题。所以,一定要做分组对比。

3.5 知识体系总览

下面这张图帮你梳理本章的核心逻辑:

留存曲线知识体系 留存曲线知识体系 留存曲线 衰减曲线 微笑曲线 幂律分布 前7天流失高峰 网络效应 习惯养成 三步解读法 看形状 → 找拐点 → 对比分段

3.6 实操:用数据画一条留存曲线

光说不练假把式。我习惯用SQL先算每日留存,再画曲线。给你一个简单的计算逻辑:

-- 计算第N天留存率
WITH user_first AS (
  SELECT 
    user_id,
    MIN(DATE(event_time)) AS first_date
  FROM user_events
  GROUP BY user_id
),
user_retention AS (
  SELECT 
    uf.first_date,
    COUNT(DISTINCT ue.user_id) AS retained_users
  FROM user_first uf
  LEFT JOIN user_events ue
    ON uf.user_id = ue.user_id
    AND DATE(ue.event_time) = DATE(uf.first_date, '+7 days')
  GROUP BY uf.first_date
)
SELECT 
  first_date,
  retained_users * 1.0 / 
    (SELECT COUNT(DISTINCT user_id) FROM user_first WHERE first_date = ur.first_date) 
    AS retention_rate_7day
FROM user_retention ur;

这段代码算的是第7天留存。你改一下日期偏移就能算第1天、第14天、第30天。把结果连成线,就是留存曲线。

小技巧:我一般会同时算「周留存」和「月留存」。周留存看短期波动,月留存看长期趋势。两条曲线对比着看,更容易发现问题。