留存率数字好看?先查这五个算法陷阱

同一批用户,30日留存可以算出12%,也可以算出31%。从起算日、分母、活跃定义、队列混合和收入贡献五处,拆开留存率容易被算好看的地方,附一张拿到数字后逐项自检的清单。

有人说产品 30 日留存 30%,有人说 18%,还有人说 12%。这三个数字可能来自同一批用户,同一个月,同一份数据。差别不在产品,而在算的人选了不同的算法。留存率是单位经济里经常被引用、也容易被算得好看的指标之一:不同工具和团队可能采用不同的计算方法,默认设置也各不相同。

先给一个白话定义:留存率,是某一批新用户里,过了一段时间后还在用的比例。它回答的是”来的人里,有多少没走”。LTV(客户生命周期内带来的毛利总和)能撑多高,很大程度取决于这条曲线;所以留存率被算虚高,LTV 和回本周期会跟着一起虚高。

看到一个留存数字,先弄清它是怎么算出来的,再判断它有没有被算好看。下文的用户数、比例和金额均为假设算例,不是行业基准,也不代表具体公司的实际留存水平。

目录

留存率到底在算什么?

分子和分母各是什么

留存率的基本结构只有两部分:分子是”过了 N 天后仍然在用的人”,分母是”这一批进来的人”。几乎所有的分歧都出在这两句话里的每一个词上:

  • “过了 N 天”:是恰好第 N 天回来,还是第 N 天及以后任何时候回来过?
  • “仍然在用”:打开一次算不算?被推送叫醒算不算?领一次签到金算不算?
  • “这一批进来的人”:是所有注册的人,还是完成了首单、完成新手引导的人?
  • “这一批”本身:是某一个月的新用户,还是把所有用户混在一起算?

分析工具怎么定义

主流数据分析工具对这些问题也没有统一答案。Amplitude 在留存分析指南里把留存分成三类:N 日留存只统计恰好在第 N 天回来的用户;无界留存(unbounded retention)统计第 N 天或之后任何一天回来的用户;区间留存(bracket retention)统计落在自定义时间段内的用户。该指南明确说,不同产品的使用节奏不一样,应该选能反映自己产品健康度的定义。Mixpanel 的留存报告文档同样提供”恰好当期""当期或之后”两种计数方式,以及按每个用户进入时间滚动计算、按自然日历对齐两种窗口。也就是说,工具默认值不同、可选项不同,两家公司各用各的工具,报出来的”30 日留存”本来就未必是一回事。

同一批用户,为什么能算出 12% 和 31%?

一批假设用户,四个留存数字

用一批假设数据,把几种常见做法摆在一起。

假设一款生活服务 App 在 2026 年 9 月拉来 1000 个新注册用户,观察到 10 月底,每个人都已经走满 30 天。数据如下:

  • 1000 人注册,其中 600 人完成了首单(激活)。
  • 恰好在注册后第 30 天有过活跃记录的:180 人。
  • 在第 30 天或之后任意一天回来过的:310 人(含上面的 180 人)。
  • 这 180 人里,只是打开 App 就走(比如被推送叫醒、领了签到金)的有 60 人,真正浏览了商品或下了单的有 120 人。

同一份数据,可以得出四个”30 日留存”:

同一批假设用户的四种 30 日留存算法对比 假设 1000 名新注册用户,四种算法得到 12%、18%、30%、31% 四个不同的 30 日留存,按四种计算方法分别得到的结果。 同一批 1000 名假设用户,四种算法下的 30 日留存 严格第 30 天有效活跃 12% 严格第 30 天任意活跃 18% 分母只取激活用户 30% 第 30 天及以后回来过 31% 假设数据,不代表具体产品
同一批用户、同一段时间,换一种算法,30 日留存在 12% 到 31% 之间摆动。
算法分子分母结果它改变了什么
严格第 30 天,要求有效活跃120100012%要求严:只认当天,且只认真正用了产品的人
严格第 30 天,打开即算活跃180100018%活跃门槛放低,被推送叫醒的也算
分母只取激活用户18060030%注册后没下过单的 400 人被直接移出统计
第 30 天及以后回来过310100031%时间点放宽,只要后来回来过一次都算

四个数字没有哪个是”错”的,每个都有自己的用途。无界留存适合月度使用一次的低频产品,只看激活用户适合分析”产品对真正用起来的人好不好用”。麻烦在于把它们混着比:A 公司报的是 31%,B 公司报的是 18%,两个数字放在一起,看起来 A 比 B 强一大截,其实可能只是 A 的算法更宽松。

起算和窗口

“第 30 天”是注册后满 30×24 小时的滚动窗口,还是日历上的第 30 个自然日?两种做法划分用户的时间边界不同,同一批人落进的”第 30 天”并不完全一样,数值可能有明显差别。还有一个容易被忽略的地方:窗口还没走完的用户有没有被算进分母。算法一变,分母的构成也跟着变。

分母

把没有激活的人移出分母,是常见的处理,理由通常是”没激活的人本来就不是我们的用户”。这个说法在分析产品体验时成立,在算获客回报时不成立:这 400 个没下过单的人,同样占用了获客预算。算 CAC 回本时,分母应该是你花钱买来的全部人,而不是留下来的那一部分。

活跃定义

被推送唤醒、领一次签到金就算活跃,是留存数字里水分偏多的部分。在这批假设用户里,这一条把 12% 抬到了 18%。如果核心价值需要浏览、交易或互动,“打开即活跃”可能高估有效使用,应同时查看核心行为留存。判断办法是问一句:把这批人的”活跃”换成”产生了一次有收入或有互动的行为”,数字会掉多少?

全体留存稳如泰山,新用户却在变差?

队列混合:全体平均盖住新用户

第四个陷阱不在算法选择,而在把哪些人放在一起算。

假设一个服务已有 80000 个存量用户,月留存 90%。每月新增 5000 个新用户,月留存 40%。全体月留存是:

(80000×90% + 5000×40%)÷ 85000 = 74000 ÷ 85000 ≈ 87.1%

下个月,产品的新手引导出了问题,新用户月留存从 40% 掉到 30%,存量用户一切如常:

(80000×90% + 5000×30%)÷ 85000 = 73500 ÷ 85000 ≈ 86.5%

新用户留存掉了 10 个百分点,全体留存只动了 0.6 个百分点。看全体数字的人会觉得”基本稳定”,实际上新用户已经在快速流失,一旦存量老用户自然老化,问题会在几个季度后集中暴露。

按队列拆开看

这就是为什么 a16z 的创业指标文章建议按队列(cohort)追踪留存:把某一个月进来的全体用户当作一个起点,逐月看其中还有多少人仍在交易。它同时提醒,混合了不同来源的数字会掩盖趋势,比如把自然流量和付费流量混在一起算的”混合 CAC”,看不出付费投放本身赚不赚钱。

Mixpanel 的文档里还提到一个细节:未分组时,汇总行是已走完时间桶的加权平均,权重是各桶进入的用户数。这意味着人数多的队列对汇总数字的影响更大。如果某个月做了大规模拉新活动,那个月的队列质量就会主导整张报表。

读队列留存表时,重点不是看单个数字,而是看同一个时间点上,不同月份的队列有没有逐批变差,以及曲线有没有在某个水平附近走平。曲线走平,说明剩下的是稳定用户;一直往下掉,说明还没有找到愿意长期用的人。

人留下来了,钱留下来了吗?

毛利贡献:同样的留存,不同的钱

第五个陷阱发生在留存率之外。留存率衡量的是人数,LTV 计算的是毛利。两者之间隔着客单价、使用频次和折扣。

继续用 1000 人的假设:30 日后留下 300 人,每人当月下一单,客单价 40 元,毛利率 25%,每单毛利 10 元,这批留存用户贡献毛利 3000 元。

如果这 300 人是靠 8 元优惠券拉回来的,每单毛利变成 10 − 8 = 2 元,贡献毛利变成 600 元。留存率还是 30%,贡献毛利只剩原来的五分之一。

净收入留存也会掩盖流失

收入层面也有同样的问题。a16z 同一篇文章指出,净收入流失率会把”部分客户流失”和”另一些客户加购”混在一起,让损失看起来小于实际;要看清楚,得把总流失(gross churn)单独拿出来。所以看到”净收入留存率超过期初收入”这类说法,也要追问:是大多数客户都在加购,还是少数大客户加购拉高了平均值,而多数客户其实已经离开?

留存率对应的是用户数,不对应利润。判断一个留存数字对 LTV 的意义,至少要再叠一层:留下来的人,每个月给公司带来多少毛利,这个数在变好还是变差。

拿到一个留存数字,怎么逐项自检?

留存算法:起算、窗口、分母、活跃

自检问题如果答案是……怎么处理这个数字
怎么起算:恰好第 N 天,还是第 N 天及以后?没写明视为不可与他处比较;保守地把它当作”第 N 天及以后”的宽松版本
窗口走完了吗:分母里有没有还没满 N 天的用户?有,或不确定只保留已走满窗口的队列重新算
分母是谁:全部新增,还是仅激活用户?仅激活用户算获客回本时,换回全部新增再算一遍
什么算活跃:打开即可,还是有实际行为?打开即可,且产品有签到、红包、推送拉活机制把”有实际行为”的人数单独拉出来,用这个数估算 LTV

队列与毛利:哪批人、值多少钱

自检问题如果答案是……怎么处理这个数字
是哪一批人:单月队列,还是全体混合?全体混合要求拆成按月队列,并看最近两三个月的队列有没有逐批变差
留下的人贡献多少毛利?不清楚,或有明显补贴在留存曲线上叠加每个留存用户的月均毛利,再算 LTV

六项中有三项无法确认时,暂不要据此测算 LTV 或回本周期。

读完怎么用

先问清六件事

看到”30 日留存 XX%“,先别跟别人比:把起算、窗口、分母、活跃、队列和毛利这六件事问清楚,再用同一套算法重算自己的数据。一个算法统一、能按队列拆开的 18%,比一个算法不明的 31% 更可信。

接着读哪些文章

如果你正拿这批数据算 LTV,可以接着读补贴拉来的用户,算不算真实 LTV?和LTV 和 CAC 是什么意思?,把留存、毛利和回本周期连起来算。

常见问题

算法与口径

Q: 留存率到底该看 N 日留存还是无界留存?

答: 看产品的使用节奏。每天都会用的产品(社交、游戏、资讯)适合看 N 日留存,因为”第 N 天是否还在用”有明确含义;使用频次低、间隔不固定的产品(租金支付、季度性服务)更适合无界留存或区间留存,否则会把”这周没用、下周会用”的人误算成流失。关键是选定一个算法后长期不换,每次汇报时写明。

Q: 为什么有的公司披露的留存率比我自己算的高很多?

答: 常见原因是分母、活跃定义或窗口不一样:分母只取激活用户、“打开即算活跃”、用第 N 天及以后回来过的宽松算法,都会把数字抬高。多数公司也不会在对外披露里写清完整算法,所以外部数字更适合只当方向参考,别直接跟自己的数据比大小。

队列与 LTV

Q: 队列留存表怎么看才算健康?

答: 看两件事:同一行(同一批用户)的曲线有没有在某个水平附近走平;同一列(同一时间点)上,新近的队列是不是比早期队列更好或至少持平。曲线一直往下掉、没有走平,或者新队列一批比一批低,都说明还没找到能稳定留下的用户。具体多少算健康,因行业和产品而异,没有通用门槛。

Q: 留存率高,LTV 一定高吗?

答: 不一定。LTV 要乘上每个留存用户的毛利,如果留存是靠折扣、补贴或低毛利商品换来的,留存率再高,贡献毛利也可能很薄。得把留存曲线和每用户月均毛利放在一起看。

Q: 没有分析工具,小团队怎么自己算队列留存?

答: 一张表就够:每行是一个注册月份,列是注册后第 1、2、3……个月,格子里填”该月仍有有效行为的人数 ÷ 当月注册人数”。原始数据至少要有三类字段:用户 ID、首次注册日期、每次有效行为的日期;如果注册记录和行为记录分在两张表里,两张表要能用用户 ID 对上。只要起算方式和”有效行为”定义写在表头,就能长期对比。

参考资料

留存的定义与工具

创业指标

版本 1.0 · 更新于 2026-10 · 文中数字均为假设算例,不构成投资建议。