从抖音月活用户到某小程序3个月掉一半 用3个真实产品案例讲透日留存周留存月留存率怎么算 新手和产品经理都能看懂的留存指标公式
我最近跟一个做小程序的朋友喝酒,他苦着脸跟我说:”我们小程序上线三个月,用户直接从50万掉到了20多万,到底哪里出了问题?”
我问他:”你们算过留存率吗?”
他说:”算了……但不知道怎么算,也不知道怎么解读。”
你看,这就是很多产品经理(尤其是刚入行的)遇到的问题:留存这个指标, everyone 都会提,但真正会算、会用的人不多。
今天我就用三个真实的产品案例,把日留存、周留存、月留存率彻底讲清楚。保证你看完之后,不仅能自己算,还能从数据里看出问题、找到方向。
案例一:抖音——月活10亿,但”月留存”可能只有你想象的那么高
先说抖音,这个大家都知道吧?日活6亿+,月活10亿+,听起来很猛对吧。
但我要问你一个问题:一个用户如果一个月只用了一次抖音,算不算月活?
答案是:算。
这就引出了留存率计算里的第一个关键概念——分母是什么?
日留存率的计算公式
日留存率 = 当天新增的用户中,在第1天(也就是当天)还活跃的用户数 ÷ 当天新增用户总数 × 100%
等等,这好像有点问题。如果”当天新增”的用户,当天就活跃了,那日留存率岂不是100%?
没错,这就是日留存率计算的常见误区。
正确的日留存率计算应该是这样:
日留存率 = N天后的次日留存,比如:
- 次日留存:今天新增的用户,明天还来的人数 ÷ 今天新增的总人数
- 7日留存:今天新增的用户,7天后还来的人数 ÷ 今天新增的总人数
- 30日留存:今天新增的用户,30天后还来的人数 ÷ 今天新增的总人数
举个例子:
假设抖音1月1日新增了100万个用户。
- 1月2日,其中30万人还打开了抖音 → 次日留存 = 30%
- 1月8日(7天后),其中20万人还打开了抖音 → 7日留存 = 20%
- 1月31日(30天后),其中15万人还打开了抖音 → 30日留存 = 15%
这就是日留存率的标准算法。核心逻辑是:以”新增用户”为分母,跟踪这批人”之后哪天还在用”。
周留存率和月留存率
周留存率和月留存率的计算逻辑完全一样,只是时间维度不同:
- 周留存率:跟踪新增用户在1周后、2周后、3周后……的活跃情况
- 月留存率:跟踪新增用户在1个月后、2个月后、3个月后……的活跃情况
以抖音为例:
假设1月新增用户中,有15%的人在1个月后的2月还在用,这就是1月新增用户的月留存率15%。
但这里有个问题——10亿月活和15%月留存率并不矛盾。
因为月活用户 ≠ 新增用户。10亿月活用户里,有的是昨天刚注册的,有的是半年前注册的。月留存率只看”新增用户”这群人的后续表现。
所以抖音虽然月活10亿,但单月留存率可能也就30%-40%(这是行业平均水平,具体数据官方未公开)。这意味着每个月都有大量用户流失,但同时又有大量新用户涌入。
理解这一点很重要:月活高不代表留存好,只能说明获客能力强。
案例二:某教育小程序——3个月用户掉一半,问题出在哪里?
这个就是我开头说的那个朋友的产品。
他们的数据是这样的:
| 月份 | 新增用户 | 次日留存 | 7日留存 | 30日留存 |
|---|---|---|---|---|
| 第1个月 | 50,000 | 25% | 12% | 8% |
| 第2个月 | 40,000 | 22% | 10% | 6% |
| 第3个月 | 30,000 | 18% | 8% | 4% |
你看,每个月的新增用户在下滑,而且留存率也在逐月下降。
这说明什么?说明产品本身在变差,或者推广渠道在变差(引来了更多”非目标用户”)。
如何判断问题出在哪?
有一个方法叫 “留存曲线对比”。
我把这三个月的新增用户,放在一起看他们的30日留存曲线:
- 第1个月新增用户,第30天还有4000人(8%留存)
- 第2个月新增用户,第30天还有2400人(6%留存)
- 第3个月新增用户,第30天还有1200人(4%留存)
曲线在往下掉,说明产品在变差。
但如果反过来——比如第1个月新增用户第30天还有4000人,第2个月新增用户第30天还有5000人(12.5%留存)——那就说明产品在变好,只是获客出了问题。
这个案例给我们的启示
- 留存率不能只看绝对值,要看趋势。 8%留存看似不高,但如果每个月都在涨,说明产品还在进步。
- 日留存、周留存、月留存要综合看。 如果次日留存正常,但7日留存很差,说明用户”来了就走”,可能是核心功能体验不好;如果次日留存就差,说明连第一步都没留住,可能是推广渠道或注册流程有问题。
- 3个月掉一半用户,核心问题不是”没新用户”,而是”留不住老用户”。 要优先解决留存问题,再考虑增长。
案例三:某健身APP——用留存数据找到了产品突破口
这个案例比较有意思,是一个真实的产品经理分享的故事。
他们是一款在线健身APP,上线初期数据很好,日活涨得很快,但半年后增长停滞了。
第一步:算出各渠道的留存率
他们把用户按来源渠道分组,计算了各渠道的30日留存:
| 渠道 | 30日留存率 |
|---|---|
| 朋友圈广告 | 5% |
| 抖音信息流 | 8% |
| 自然搜索 | 22% |
| 老用户邀请 | 35% |
| 合作健身房推荐 | 28% |
第二步:发现问题
老用户邀请的留存率是最高的35%,但贡献的用户量最小。 这意味着产品本身是好的,用户愿意用,但传播不够。
朋友圈广告的留存率最低只有5%,但量很大。 这意味着渠道质量差,虽然带来了大量用户,但大部分来了就走。
第三步:调整策略
产品经理做了两个调整:
- 砍掉朋友圈广告的大部分预算,转向抖音和自然搜索优化。
- 启动”邀请好友”功能,给老用户推荐奖励。
3个月后,数据变成这样:
| 渠道 | 30日留存率 |
|---|---|
| 朋友圈广告 | 4%(几乎没投了) |
| 抖音信息流 | 12%(优化了素材) |
| 自然搜索 | 25% |
| 老用户邀请 | 40%(功能上线后) |
| 合作健身房推荐 | 32% |
结论:留存率的提升,直接带来了用户增长。 不是因为新用户更多了,而是因为留下来的更持久了。
留存率计算的常见误区(新手必看)
讲完案例,我来总结一下新手最容易踩的坑:
误区一:混淆”月活”和”月留存率”
月活(MAU)是”这个月有打开过的总人数”,月留存率是”上个月新增的用户,这个月还在用的比例”。
一个是存量,一个是增量追踪。 完全不一样。
误区二:用”总活跃用户”做分母算留存
比如有人说:”我们日留存率是50%,因为今天有100万活跃,昨天有200万活跃。”
这是错的。日留存率应该是:
昨日新增的用户中,今天还活跃的 / 昨日新增的总数
不是用总活跃数来算。
误区三:只看一个时间维度的留存
有些产品只看次日留存,有些只看30日留存。
正确的做法是多维度看:
- 次日留存:看”第一印象”好不好
- 7日留存:看”短期价值”有没有兑现
- 30日留存:看”长期价值”如何
如果次日留存高但7日留存低,说明用户被吸引了,但没有找到持续使用的理由。
误区四:忽略渠道差异
不同渠道来的用户,留存率可能天差地别。如果不分渠道看整体留存,会被平均值误导。
就像健身APP的案例,整体留存可能是15%,但老用户邀请渠道是35%,朋友圈广告只有5%。只看平均值,永远发现不了问题。
实战:如何用Python快速计算留存率
如果你的数据量很大,手动算肯定不现实。下面用Python举个例子:
import pandas as pd
# 假设你有一份用户活跃日志,包含用户ID和活跃日期
# 数据格式:user_id, active_date
# 1. 读取数据
df = pd.read_csv('user_activity.csv')
# 2. 找出每天的新增用户(首次出现日期)
new_users = df.groupby('user_id')['active_date'].min().reset_index()
new_users.columns = ['user_id', 'reg_date']
# 3. 合并到活跃日志
df_merged = df.merge(new_users, on='user_id', how='left')
# 4. 计算每个用户活跃日期距离注册日期的天数
df_merged['active_date'] = pd.to_datetime(df_merged['active_date'])
df_merged['reg_date'] = pd.to_datetime(df_merged['reg_date'])
df_merged['days_since_reg'] = (df_merged['active_date'] - df_merged['reg_date']).dt.days
# 5. 计算留存率
# 以2024-01-01这批新增用户为例
cohort_date = '2024-01-01'
cohort_users = new_users[new_users['reg_date'] == cohort_date]['user_id']
retention = df_merged[df_merged['user_id'].isin(cohort_users)].groupby('days_since_reg').size()
retention_rate = (retention / len(cohort_users) * 100).round(2)
print(retention_rate)
运行这段代码,你会得到类似这样的输出:
days_since_reg
0 100.00 # 次日留存(第0天就是注册当天)
1 45.20 # 次日留存(第1天)
2 32.10
3 25.80
4 22.30
5 19.50
6 17.20
7 15.80 # 7日留存
...
30 8.50 # 30日留存
这样你就能快速算出任意一批新增用户的留存曲线了。
给产品经理的留存分析 Checklist
最后,我给你整理了一个实用的留存分析检查清单,每次做留存分析时都可以对照:
- [ ] 算出次日留存、7日留存、30日留存,三个维度都要看
- [ ] 按渠道拆分,不要只看整体平均
- [ ] 按月对比,看留存曲线是上升还是下降
- [ ] 找出流失节点,是在第几天集中流失的
- [ ] 对比竞品,行业平均水平是多少(社交类次日留存一般30%-40%,工具类10%-20%,游戏类20%-30%)
- [ ] 关联业务指标,留存率高是否带来了更高的LTV(用户生命周期价值)
回到开头那个小程序朋友的问题。他后来用我说的方法重新算了留存曲线,发现:
- 他们的次日留存只有15%(行业平均25%-30%),说明注册后体验有问题
- 第3天流失最严重,说明核心功能没有在第1-2天让用户感受到价值
- 自然流量渠道的留存是广告渠道的2倍,说明广告引来的不是目标用户
他调整了注册流程和新手引导,把次日留存提升到了28%,三个月后用户不再下跌了。
留存率不是冷冰冰的数字,它是用户用脚投票的结果。 看懂留存,才能看懂用户真正想要什么。
希望这篇文章能帮到你。如果还有疑问,随时来找我聊。
