留存分析基础:日留存、周留存、月留存的定义与计算方式

聊留存分析,咱们得先把最基础的概念掰扯清楚。

很多人一上来就盯着「次日留存 40%」这种数字看,但说实话,如果你不理解日、周、月留存到底在衡量什么,那这些数字就是一堆漂亮的废纸。我在刚做增长那会儿就犯过这个错——看到周留存数据不错,就以为产品稳了,结果月留存直接腰斩。后来才明白,这三个指标看的根本不是同一件事。

一、日留存:最灵敏的「健康监测仪」

日留存,说白了就是今天来的用户,明天还来不来。

它的计算逻辑很简单:

日留存率 = 第 N 天仍活跃的用户数 ÷ 第 0 天新增用户数 × 100%

举个例子:

  • 1 月 1 日新增了 1000 个用户
  • 1 月 2 日(次日),这 1000 人里有 400 人回来了
  • 那么次日留存率 = 400 ÷ 1000 = 40%

同理,第 7 日留存就是看 1 月 8 日还有多少人回来。这里有个细节我建议你注意:「第 N 日」是从第 0 天开始数的,不是自然周。很多新手会搞混,把「第 7 日」理解成「下周一」,结果数据全对不上。

我的习惯:日留存我一般只看三个关键节点——次日、7 日、30 日。次日看「第一印象」,7 日看「短期粘性」,30 日看「是否养成习惯」。中间那些第 3 天、第 5 天的数据,说实话噪音太大,我很少单独分析。

二、周留存:过滤「周末噪音」的利器

日留存有个硬伤——它受星期几影响很大。你想想看,一个社交 App 周五新增的用户,和周二新增的用户,周末活跃模式能一样吗?

这时候就需要周留存出场了。

周留存率 = 第 N 周仍活跃的用户数 ÷ 第 0 周新增用户数 × 100%

计算方式跟日留存类似,但时间窗口从「天」变成了「周」:

  • 第 0 周:用户首次使用的那一周
  • 第 1 周:下一周(第 8-14 天)
  • 第 2 周:再下一周(第 15-21 天)

判断用户是否「本周活跃」,我一般用「本周内至少登录 1 次」作为标准。太宽松不行,太严格也不行。

我曾经踩过的坑:有次做周留存分析,发现第 1 周留存突然飙升。兴奋了半天,后来才发现是因为那周赶上春节假期,用户闲得慌。等假期一过,第 2 周留存直接跌回原形。所以看周留存,一定要结合日历事件来解读。

三、月留存:衡量「产品价值」的硬指标

月留存,是留存分析的终极拷问——用户一个月后还记得你吗?

月留存率 = 第 N 月仍活跃的用户数 ÷ 第 0 月新增用户数 × 100%

月留存的计算周期更长,通常看第 1 个月、第 3 个月、第 6 个月、第 12 个月。我个人认为,月留存才是产品价值的真实体现。日留存高可能是「新鲜感」,周留存高可能是「短期习惯」,但月留存高,说明用户真的觉得你的产品有用。

举个例子:

  • 一个工具类 App,月留存 60% 以上,说明用户确实需要它
  • 一个游戏 App,月留存 30% 就算不错了,因为用户会腻
  • 一个社交 App,月留存低于 20% 基本就危险了

我的经验:月留存数据波动大,我建议至少看 3 个月的滚动平均值。单月数据受版本更新、运营活动影响太大,容易误判。

四、三种留存的对比与选择

这三种留存不是互相替代的关系,而是互补的。我整理了一张对比表,方便你理解:

维度 日留存 周留存 月留存
时间窗口 天 周 月
灵敏度 高(受日波动影响大) 中(过滤短期噪音) 低(反映长期趋势)
适用场景 新功能上线、A/B 测试 周活分析、运营活动评估 产品健康度、用户生命周期
典型关注点 次日、7 日、30 日 第 1 周、第 4 周 第 1 月、第 3 月、第 6 月
数据稳定性 低 中 高

你可能会问:那我到底该看哪个?

我的建议是:日常监控看日留存,周报分析看周留存,季度复盘看月留存。三个一起看,才能拼出完整的用户留存画像。

五、核心逻辑框架图

下面这张图,把日、周、月留存的核心逻辑串起来了。你可以把它当作本章的知识地图:

留存分析核心框架:日 · 周 · 月 用户留存分析 日留存 周留存 月留存 次日留存 7日留存 30日留存 第1周 第4周 第1月 第3月 第6月 💡 核心原则 日留存看「新鲜感」,周留存看「习惯」,月留存看「价值」

六、计算中的常见陷阱

嗯,这里要注意。留存计算看着简单,但实际落地时坑不少。我把自己踩过的坑列出来,你直接避雷:

  1. 用户定义不统一:什么叫「活跃」?是打开 App 就算,还是得有具体操作?我建议按产品类型定标准——内容类产品看「浏览时长 > 30 秒」,工具类看「完成核心操作」。
  2. 时间窗口对齐问题:日留存用 UTC 时间还是本地时间?我习惯用本地时间,因为用户的行为受当地时间影响更大。
  3. 新老用户混在一起:留存分析一定要按新增日期分组(Cohort),不能把 1 月 1 日新增和 1 月 15 日新增的用户混着算。
  4. 忽略流失用户回归:有些用户流失后又回来了,算不算留存?我的做法是:只要在第 N 天/周/月有活跃行为,就算留存。不管中间断了多久。

我曾经犯过的错:有次做月留存分析,发现数据异常高。查了半天,原来是统计口径把「当月注册且当月活跃」的用户也算进去了。正确的做法是:只看「第 0 月注册的用户,在第 1 月是否活跃」。别把同期用户和留存用户搞混。

七、代码示例:用 SQL 计算日留存

理论说完了,咱们来点实际的。下面是一个标准的日留存 SQL 查询,我直接拿它跑过多个项目:

-- 计算次日留存
WITH user_first_day AS (
  SELECT 
    user_id,
    MIN(DATE(login_time)) AS first_day
  FROM user_login_log
  GROUP BY user_id
),
user_day_N AS (
  SELECT 
    u.user_id,
    u.first_day,
    DATE(l.login_time) AS login_day
  FROM user_first_day u
  LEFT JOIN user_login_log l
    ON u.user_id = l.user_id
)
SELECT 
  first_day,
  COUNT(DISTINCT user_id) AS new_users,
  COUNT(DISTINCT CASE 
    WHEN DATEDIFF(login_day, first_day) = 1 
    THEN user_id 
  END) AS retained_users,
  ROUND(
    COUNT(DISTINCT CASE 
      WHEN DATEDIFF(login_day, first_day) = 1 
      THEN user_id 
    END) / COUNT(DISTINCT user_id) * 100, 
    2
  ) AS day_1_retention_rate
FROM user_day_N
GROUP BY first_day
ORDER BY first_day;

这段 SQL 的逻辑很清晰:

  • 先找出每个用户的「第一天」
  • 然后计算「第一天 + 1 天」是否还有登录记录
  • 最后按新增日期分组,算出每天的次日留存率

周留存和月留存的计算逻辑完全一样,只是把 DATEDIFF 的阈值从 1 改成 7 或 30 就行。嗯,就是这么简单。

我的建议:别在 SQL 里做太复杂的留存计算。把基础数据清洗好,留存率交给 BI 工具或者 Python 去算。SQL 只负责「取数」,不负责「算数」——这样维护起来轻松得多。

好了,日、周、月留存的定义和计算方式就聊到这儿。这三个概念是留存分析的基石,你把它吃透了,后面讲「留存曲线解读」「留存提升策略」的时候,才能跟得上节奏。