新增规模忽大忽小?不同批次留存怎么比较

作者:456数据 发布:2026-09-30 16:24 浏览量:1 来源:原创

月底复盘会,桌上摊着两张表。这个月新增 12.6 万,上个月只有 4.8 万;一条新渠道刚铺开,老渠道又缩了一半。老板顺口问“哪个月的新增质量更好”,你盯着两个留存率——38% 和 45%——却迟迟不敢开口。可你心里清楚,这两拨人不是一个量级,直接拿数字比大小,很容易被规模带偏。

一、先把留存率的分母讲清楚

很多人之所以会比错,是把“留存率”理解成了“今天有多少人回来”。其实留存率回答的是另一个问题:当初那一批新人,过几天还回来几个。问题问的是“那批人留下多少”,三个常用口径的分母,都必须牢牢锁定在同一批新增用户身上。

  • 次日留存 = 该批新增用户里,注册后第 2 天再次回访的人数 ÷ 这批新增总数;
  • 7 日留存 = 同一批人里,注册后第 7 天回访的人数 ÷ 这批新增总数;
  • 30 日留存 = 同一批人里,注册后第 30 天回访的人数 ÷ 这批新增总数。

分母是“当天那批新人”,而不是全站当天的活跃用户,留存率才能用来衡量“这一批人究竟沉淀下多少”。把不同天、不同渠道进来的人混在一个池子里算,分母就漂了;分母一漂,后面的数字再漂亮也失去了横向比较的意义。

两批新增人群规模差异悬殊,单看一个总留存率无法直接判断质量。

二、为什么规模不同的两批,不能直接比

回到开头那组数字。本月新增 12.6 万里,有 8 万来自一次大促投放;上月 4.8 万则几乎全是自然流量。拿本月总留存 38% 对上月 45%,顺嘴就会得出“这个月质量在变差”的结论。但这个结论之所以可疑,正在于两批人的来源结构完全不同:大促拉来的用户里,本来就掺着更多冲着补贴来、领完就走的低意向流量。规模被一次性投放撑大,留存自然被摊薄——这不是算法出错,而是拿去对比的两群人根本不是同一类。

正确的做法,是把两批人各自放回自己的批次里,按注册日切cohort,再用同一套算法算留存。两种比法并排摆开,差别一目了然:

比法分母怎么取会导致什么结论
错误:合并算总留存两批新增混在一个池子里规模大的批次把整体留存摊薄,容易误判为“质量下滑”
正确:分批次算每个批次各自以当日新增为分母每批在自己口径内可比,多批叠加后看曲线形状

一个被稀释掉的中间值

举个小例子就清楚了。假设 A 批当天新增 100 人,第二天回来 40 人,次日留存是 40%;B 批当天新增 1000 人,第二天回来 300 人,次日留存只有 30%。如果把两批揉成一个池子,你会拿 340÷1100≈31% 去和别的月份比,这个数字既不代表 A 批、也不代表 B 批,只是被规模稀释后的混合值。之所以混合值没用,是因为它把“质量”和“数量”压成一件事,你再也分不清哪批出了问题。

三、用 cohort 把两批新增放进同一张表

要做到同口径,动作固定为四步,缺一步都会让比较失真:

第一步:按注册日圈定各批次

输入:一段时间内的全部新增用户。动作:按注册日把新增切成一个个批次(cohort),一天一批、不跨天合并。输出:N 个独立批次名单。

第二步:对齐各批次 D1/D7/D30 口径

输入:每个批次名单,以及统一的“回访”定义。动作:固定每批当日新增为分母,用同一套 D1/D7/D30 算法统计回访人数,中途不换口径。输出:每个批次在 D1/D7/D30 上的留存率。

第三步:同图叠加比曲线形状

输入:各批次的 D1/D3/D7/D14/D30 留存率。动作:把多条留存曲线叠在同一张坐标里,横轴=注册后第 N 天,纵轴=该批仍回访用户占比。输出:一组可比较走向的曲线。

第四步:判断是真实留存差异还是口径不一致

输入:叠加后曲线的高低与斜率。动作:核对两批是否同一回访定义、同一用户标识去重、同一第 0 天起点。输出:是真实留存质量差异,还是口径不一致造成的假象。

在 cohort 留存模块里,按注册日分组、直接看到每个批次的 D1、D7、D30,这一档基础能力以实际开通版本与产品文档为准;配好后能省掉自己写 SQL 对齐分母的功夫。之所以强调“同一张表长出来”,是因为这样两批人口径天然一致,不会出现 A 批按自然日、B 批按回访周期这种暗坑。

还有个容易忽略的点:分组那天,必须和“这批人从哪一刻开始算”严格一致。注册日当天还在摸索产品的人,和已经逛完一圈的人,第二天回来的概率本来就不同;有的批次从注册日起算、有的批次从首次关键行为起算,曲线在起点就被人为掰歪。固定用注册日作为第 0 天,两批人才站到同一起跑线上。

按注册日分组的 cohort 留存矩阵,每一行分母都是当日新增数。

四、同口径叠加之后,到底看什么

很多人拿到矩阵就急着挑“最高的那一行”,这又掉进另一个坑。不同品类、客单价的产品,天然留存基线差别很大,这里不提供行业基准值,也不预设哪个渠道“应该”更高。真正可比的,是同一张坐标里两条曲线的走向:

口径分母这一档主要反映什么
D1 次日留存当日新增新人第一天体验完,第二天还愿不愿意回来
D7 7 日留存当日新增一周内有没有初步形成回访习惯
D30 30 日留存当日新增一个月后还沉淀下多少核心用户

看斜率,而不是孤立的点

如图,批次 A 规模大,但 D1 之后斜率很陡,说明拉新量大却意向浅;批次 B 规模小,但曲线走得平,说明这拨人虽少却留得住。要叠在一张图里看形状,别孤立报某一天的点:单点数字分不清“本来就这样”和“掉得更快”,斜率才把两批人的后劲拉开。

同一套算法、同一分母下,两批留存曲线叠加对比。

五、能力边界要先讲清楚

这里把话说在前面:这套方法只能做“同口径下的横向对比”,它不会告诉你行业平均留存是多少,也不会替你判断哪个渠道更值得投。外部基准会随品类、客单、拉新价格剧烈波动,硬套进来反而干扰判断。另外,cohort 留存的基础口径在基础版开放;按渠道、按端再往下拆的更细分群能力,要看对应套餐是否包含。

动手前先核对回访定义

动手对比前,还有件事值得先花十分钟核对:两批人是不是按同一个“回访”定义在统计。只要一端要求打开 App 才算回访、另一端把 H5 浏览也算作回访,分母里的“人”和分子里的“回访”就对不上,曲线叠上去也是假象。先按同一套用户标识跨端去重、回访只认主动打开,再谈两批谁高谁低,结论才站得住。

三种取数方式的差异

上面这套按注册日切批次、固定分母、再用同一套 D1/D7/D30 叠曲线的做法,落到具体工具上通常有三条路:自己写代码埋点和数仓、用网站或 App 自带的后台看板、用第三方分析平台。三条路在接入成本、去重口径、跨端统一、实时性和维护成本上的差别,大致如下表。

对比维度自建埋点/代码方案网站/App原生后台456数据
接入成本要为注册事件和每日回访分别上报、再按注册日把人归批建数仓,周期以周计后台默认开通,零接入嵌入一段 SDK,按文档配上注册与回访事件、选好分群日即可
去重口径谁归进哪一批、回访按谁去重全凭自己写,跨天跨端很容易把人算错批通常只给整体活跃留存,不按注册日把人分进不同 cohort按首次使用日或周把用户分进不同 cohort,同批人后续每天每周追踪回访,分组去重自动完成(具体口径以产品文档为准)
跨端统一要自己做多端 ID 映射,两端回访才能算进同一批网站和 App 后台各自独立,留存口径对不上多端回访按同一人归并,进同一张留存矩阵
实时性回刷批次绑在数仓定时任务上自带后台多为 T+1 或准实时看板更新频率以实际配置为准,当天可看批次留存变化
维护成本回访定义一改、cohort 切分日一调,整条留存矩阵都要重跑开箱即有,却分不出不同批次的留存对比升级节奏交给平台,自己只维护 cohort 口径与回访事件

为什么选这类第三方分析工具

把不同批次的人摆到同一时间轴上一比,工具的差别就出来了。按注册日切批次、固定当日新增为分母、再用同一套 D1/D7/D30 叠曲线。这几步在这类工具里通常已经预置——按注册日分组、两批矩阵长在同一张表里(具体以产品文档与开通版本为准),配置得当可以省掉自己拼 SQL、反复对齐分母的重复劳动,月底复盘时不用再花半天向上解释“这两个数为什么不能直接比”。其中网站分析本身有免费版可用,App 与小程序的 cohort 留存属于基础版起开放,按渠道、按端再往下拆的分群能力需要专业版起。如果你团队已经在用自建方案,对比上面这张表的五项差异再决定;原生后台够用的话,也没有必要额外换工具。

你们月底复盘时,是先盯新增总量,还是先拉分批次的留存曲线?有没有被一个“看起来很高”的总留存数字骗过?欢迎在评论区聊聊。

常见追问

Q:留存率看D1还是D7?

A:取决于你的产品类型。工具类产品D1更重要,因为用户第二天还来不来说明产品有没有用;内容类产品D7更重要,因为用户可能周末才来。我习惯D1、D7、D30都看。

Q:怎么判断留存下降是产品问题还是流量问题?

A:先按渠道拆分批次留存。如果某个渠道的批次留存明显低于其他渠道,那是流量质量问题;如果所有渠道都在降,那更可能是产品体验或竞争环境变化。

Q:新用户量突然变大,留存会被稀释吗?

A:会。如果新用户主要来自营销活动,他们的留存通常低于自然流量。所以比较留存时,一定要按获客渠道拆批次,不要把不同来源的用户混在一起算。

相关阅读

周报周期和默认筛选怎么固定?看板配置的三步法_缩略图 周报周期和默认筛选怎么固定?看板配置的三步法 我做管理这些年,周一晨会的第一件事就是翻上周报表。这份报表跟着我搬过三次工位,口径也变过好几轮:最早是安排实习生手工拼Excel,后来换成在线表格共享,再后来才有了固定看板。回头看,晨会报表最大的成本不是做表,而是每周都在对口径。这篇文章把我踩过的坑归纳成三件要固定的事:统计周期、默认筛选、口径备注。这类固化思路,在多数看板工具里都是按“周期—筛选—备注”三段来组织的。周报口径演变时间线——从手工导表对口径,到共享表格忘切筛选,再到固定看板。一、一条口径混乱的时间线第一个阶段,大概十年前:每周五下午安排一个实习生,从各个后台系统分别导出CSV,再手工粘贴到固定Excel模板里,周一晨会前一晚才... 09 / 30·阅读 0 A/B测试主指标和观察窗口怎么定?四个设定前提_缩略图 A/B测试主指标和观察窗口怎么定?四个设定前提 带学员做实验设计练习时,我最常看到的一幕是:实验已经建好、一半流量也切出去了,团队却还在争论“到底看哪个数”。有人看点击率,有人看成交额,过两天又有人提出应该看次日留存,谁也说服不了谁。之所以会出现这种局面,是因为主指标、护栏指标和观察窗口这三件事没有在分流之前写清楚。这篇文章只解决一个问题:开实验之前,这三件事各自该怎么定。假设、主指标、护栏指标、观察窗口四栏都还是空白待填。一、为什么这三件事必须在开跑之前定实验一旦开始分流,用户就被随机分进对照组和实验组。这时候才回头挑指标,等于在同一批已产生的数据里挑一个“看起来赢了”的方向下结论,事后挑指标会让结论失去统计意义。判据必须先于数据存在:先... 09 / 30·阅读 0 资源失败率没涨但加载变慢?Resource Timing定位方法_缩略图 资源失败率没涨但加载变慢?Resource Timing定位方法 上周有个做电商的朋友约我喝咖啡,坐下没两句他就皱着眉问:“我们监控里资源失败率一直平着,一个告警都没报,可老板最近总说页面越来越慢,这到底是哪儿出了问题?”我反问他一句:你盯的是失败率,那你看过耗时趋势吗?他愣了一下——显然没有。这其实是个特别典型的错位。失败率和加载耗时,本来就是两件不相干的事:失败率统计“加载失败”的资源占比,耗时统计“加载成功、但花了多久”。一个资源每次都加载成功,只是从1秒慢慢变成3秒,失败率纹丝不动,用户却实实在在觉得页面变卡了。“监控没叫、老板却在叫”,往往是因为团队的告警只盯着失败率,没有人持续盯耗时趋势。一、失败率和耗时,为什么会错位我给他画了张图:左边是四周资... 09 / 30·阅读 0 只有特定浏览器报JS错误?按版本下钻的排查路径_缩略图 只有特定浏览器报JS错误?按版本下钻的排查路径 周一早上九点十五分,我刚倒上咖啡,告警群就先炸了:JS错误量在过去四十分钟里翻了三倍。值班群里有人甩来一张监控曲线——报错像被人从底下顶了一下。但奇怪的是,客服侧的用户投诉并没同步上涨,产品同学也说核心下单链路看上去正常。这种“监控在叫、用户没叫”的错位,是前端工程师最熟悉的一种早晨。我通常不会这时立刻打开编辑器翻代码。“报错量整体飙升”和“某一类用户在某一类页面集中报错”是两件事:前者往往是一次发布引入的全站问题,后者更可能是某个浏览器版本的兼容问题。方向不同,排查路径完全不同。所以正确的第一步,不是去找代码,而是先把范围缩小。一、先分清这是“面”还是“点”面对一条突然抬头的报错曲线,先问两... 09 / 30·阅读 0 标签重叠严重?互斥人群分群的三条规则_缩略图 标签重叠严重?互斥人群分群的三条规则 上周连着开了三个会:市场部要一个“潜客人群包”,运营部要一个“活跃用户包”,销售部要一个“高意向客户包”。三个包都从我这出,听起来不复杂。可等三个包的人数摆到一张表上,问题就来了——加起来8.2万人,我拿去重,真实去重后只有5.1万。也就是说,有3万多人同时躺在两三个包里,被三个部门反复触达,预算也被重复算了一遍。之所以会变成这样,不是哪个同事圈错了,而是从头到尾没人规定过“同一个人到底算谁的”。更直接的后果是,同一个客户一天能收到三条不同部门的推送,体验差到直接取关。一、重叠是怎么自然发生的把三个包的条件摊开看就明白原因了。市场圈“近30天访问过官网”,运营圈“近7天打开过App”,销售圈“... 09 / 30·阅读 0