以后文章更新会先在微信公众号(公众号名:输出ING),欢迎大家来关注。

This image has an empty alt attribute; its file name is 公众号二维码_0.5meter-150x150.jpg

一、背景

在很多公司,每到年底或年初,领导层就会给产品制定新的一年里要达到的DAU目标,而负责产品DAU增长的同学需要算好要达到这个DAU,需要做出哪些努力和得到怎样的支持,比如需要多大新增量,对应多少预算支持;需要怎样的留存水平,做些什么样的事情去提高留存。预算下拨通常年初就会确定下来,为了让预算下拨的数额能足以支持产品达成DAU目标所需的新增,也不与实际所需的预算相差过大,我们就需要一种方法来估算下产品达成目标DAU所需新增量。

本文介绍一种基于新用户数和次日留存率来预估DAU的方法,整个操作直接在Excel就可以完成,同时可以根据已经过去的那些天的数据,不断更新接下来所需的新增和次留率,最终使年底达到目标DAU。

二、基本思路

在已经过去的时间里,选取一天作为基准日,比如选取2018.1.25作为基准日。要预估年底的DAU,这里将年底2018.12.31称作目标日,可以这样考虑:目标日的DAU由两部分构成,一部分是基准日之后每天的新增用户在目标日的留存,这里称为新用户留存;另一部分就是基准日当天及基准日之前的用户在目标日的留存,这里称为老用户留存。

说明:一般来说,当天的新增用户数都会在当天的日活里,因此以下涉及到0下标的均表示当天新增量,也即当天新增对当天日活的贡献。

新用户留存计算

新用户留存怎么算呢,我们知道新用户留存实际上就是在此之前每天新增量在目标日当天的留存累积的和,即新用户留存=目标日当天的新增用户+目标日前1天(即2018.12.30)新增用户的次留量+目标日前2天(2018.12.29)新增用户的2日留存量+……+目标日前339天(即2018.1.26)新增用户的339日留存量

为了便于大家看清楚这个的形式,特此简化下:假设目标日前第n天对应的新增量为Nn,第n日留存率为Retn ,上边等式右边新用户留存为RNU,也就是:

RNU = N0 + N1*Ret1 + N2*Ret2 + ……… + N339*Ret339       -----------------------------------------①

老用户留存计算

基准日和基准日之前的老用户可能非常多,该如何估算这些用户在目标日的留存量呢。考虑这样一个问题,对于某天新增来的用户,会随着时间推移,慢慢地还在继续活跃的数量会越来越少,而且基本上只要距离新增日期越远,留下来的用户数量就越少。那么,对于基准日之前每天的新增用户,如果还有留存,那么必然他们留存量会体现在基准日当天的日活用户中。

假设基准日之前第n天的新增用户在基准日当天还活跃的用户数为dlun ,基准日当天的日活用户数为DLU,而且基准日当天的日活用户,每一个都可以找到其对应的新增日期,那么就有:

DLU = dlu0 + dlu1 + dlu2 + dlu3 + …… ,这里的dlu0即表示基准日当天的新增用户数,dlu1 表示基准日之前第1天在基准日的留存量

这里需要考虑的就是上边这些老用户代表的对应新增日期的用户在目标日还会有多少留存下来,留存下来的这个量跟dlu这个量会有什么关系?

假设基准日之前第m天有Nm个新用户,经过m天之后在基准日当天留存的用户数,我们上边知道,是dlum , 到目标日那天,距离新增时候已经是M天了,原来的Nm个新用户会留存下来多少呢(假设为ym个)?沿用上边新用户留存率的表示,有:

Nm * Retm = dlum
Nm * RetM = ym
联立这两个式子,有:ym  = dlum * (RetM / Retm)     --------------------②

类似的,基准日当天日活用户对应的新增日期的用户在目标日的留存也可以这样计算,那么基准日之前(包括基准日)的用户在目标日的留存量,用DOU表示,就有:

DOU = y0 + y1 + y2 + ……        ----------------------------------③
其中y0 即表示基准日前第0天的新用户(即基准日当天新增用户)将在目标日的留存量,y1 即表示基准日前第1天的新增用户将在目标日的留存量。

从而,目标日的DAU  = RNU + DOU,所以关键是计算上边的RNU 和 DOU的大小。

三、计算方法

一个假定

在计算上边RNU和DOU之前,先给出一个假定:

在产品型态稳定的条件下,新用户多日留存率会随新用户次日留存率的变动而等比例变动。举例说,如果新用户次日留存率初始为40%,2日留存率为34.82%,那么当新用户次日留存率提升到50%时,对应的2日留存率将会是34.82% * 50% / 40% = 43.53%,在此假定下对应的多日留存率变动类似如下图所示趋势:

曲线拟合

基于上边的假定,我们知道:如果我们选定距离新增的第n天,不管次日留存率如何变化,那么第n日留存率Retn / 次日留存率Ret1 这个比值保持稳定,即Retn = Ret1 * f(n),其中f(n)是一个只与n有关的函数,这里称f(n)为留存衰减系数。

实际计算f(n)时,我们可以选取产品历史数据(比如最近3个月),得到前n日留存率,如果将n日留存率再除以次日留存率,然后绘制n与Retn / Ret1的散点图,利用Excel图表的添加趋势线的功能,可以拟合得到一条曲线,并可以显示拟合得到的曲线方程和决定系数R2,类似如下图所示:

图上显示出了拟合得到的曲线,即Retn / Ret1 = 1.0016 * n-0.226 ,即留存衰减系数f(n) = 1.0016 * n-0.226 ,这里得到的系数将用于后续计算RNU和DOU。

此外值得一提的是,Android和iOS 衰减速率一般不太一样,为了使预估更加准确,建议针对Android和iOS分别拟合,得到各自衰减系数。拟合的曲线时选择乘幂或对数拟合可能比较合适。

计算DOU

要计算DOU,我们先取到基准日当天的日活用户,并找到每个日活用户对应的新增日期,这样也就有了式②中dlu的值,得到数据类似如下所示:

②式中RetM / Retm = Ret1 * f(M) / Ret1 * f(m) = f(M) / f(m) ,M和m为距离新增的天数,日期相减即可得到。留存率比例值根据前面得到的衰减系数代入M和m即可得到。

这样,②式结果也就有了,把日活用户中每个新增日期对应的②式结果加和,即可得到③式的值,即DOU就求出来了。

计算RNU

根据①式,我们可以知道RNU取决于新增数和留存率,而根据我们的假定,留存衰减系数稳定,可以认为多日留存率取决于次日留存率和距离新增的天数。因此,基准日之后每天新增和次留率大小,将直接影响RNU的大小,进而也直接影响目标日的DAU。

因此实际操作拆解时,我们可以调整目标日之后新增和次留率,并且根据历史数据不断迭代(使用新的基准日和新的基准日之后新增、次留率计划),进而使年底达到目标DAU。

实际Excel操作时,可以设置一个Sheet,专门存放输入项,包括新增和次留率数据,按照业务实际情况,可能是分月或者分周甚至分天粒度的日均新增和次留率数据。另外设置一个Sheet,专门存放参数,主要是留存衰减曲线拟合中的参数。

类似如下图所示:

如此RNU就可以在Excel中用公式算出,DAU等于对应的RNU+DOU,因此每个月月底的DAU自然也就有了。

四、一些tips

  1. 因为某些原因,你取到的日活用户中可能有一定量用户找不到对应的新增日期,如果这些用户占比不算很大,可以将他们新增日期统一设置为你能找到的新增日期的最远天的前一天;
  2. Excel这里的公式可能涉及到if、vlookup、hlookup、offset、eomonth、mod、column、sumproduct等函数,有些单元格里逻辑还比较复杂,一定要足够细心,公式写好后不要急着复制到其他尚未写公式的单元格,验证数据没问题之后再复制,复制完之后尽量再挑几个验证下数据确实OK。
  3. 最好将Android和iOS留存衰减曲线分别拟合,因为如果不加区分只拟合一条曲线,很可能之后新增结构(Android和iOS占比)变化,导致基于历史数据得到的留存衰减系数与实际数据偏差很大,造成预估偏差很大,不具实际应用价值。
  4. 为了保证假定基本可用,建议至少每三个月更新一次参数,保证预估使用的参数与实际衰减趋势不至于偏差很大。
  5. 考虑到有些产品留存在新用户来第N天之后衰减速率变得很慢,甚至不再衰减,可以考虑分段拟合,即前N天仍然使用前面的方法拟合,而N天之后乘以一个等比函数(如0.99n)或者直接使用一个常数作为留存率。

22 Thoughts on “DAU预估和拆解的一种方法

  1. 感谢答主的精彩回答,答主有没有现成的模板,输入变量自动计算那种,对于运营而言上述的操作很多没看懂,也做不来,分享后会打赏以表诚意。

  2. 这里的n日留存算的是第n日留存还是连续n日留存呀

  3. 这里的n日留存算的是第n日留存率还是连续n日留存率

  4. 克里夫小兰 on 2019 年 3 月 28 日 at 下午 10:59 said:

    大神能不能把文中的excel表分享一下,感激不尽。

  5. 您好,看了您的分析思路,感觉很好,但是有两点疑惑,还望有空帮解答一下,谢谢!
    1. 实际业务中,是否需要区分自然新增和推广新增,因为自然新增的质量(留存)一般会比推广新增质量好,但难点是如果估算自然新增的量级,这里是不是需要计算自然和买量新增之间的关系;
    2. 在计算DOU的时候,您只关注了基准日当天的老用户在未来的留存,那么是否还需要关注下基准日前的老用户回流呢?比如基准日前一天的老用户在基准日当天并未活跃,但并不代表以后不活跃,估计这部分量级也很大; 按照您的思路我估算了一下自己公司产品的DAU,与近期均值相差巨大(估值量级小很多),推测是因为没有考虑回流导致;

    还望大神回复,谢谢

  6. 感谢分享,但是有点我没看明白,dou计算中,dlu如何确认呢?如何将基准日的dau拆分到基准日前各新增日的dnu?

  7. 为什么是留存率而不是回访率,留存不会重复吗,比如基准日3天前的留存和基准日4天前的留存里面不会重复吗?

  8. 那么,对于基准日之前每天的新增用户,如果还有留存,那么必然他们留存量会体现在基准日当天的日活用户中。

    最大的问题出在这里,我相信对于大多数app,非连续登陆还是很常见的。做了这个假设之后,预测周期越长,偏差就越大。。

    • 非连续登陆是当然存在的。但是留存率本质上描述的总体的留存情况,或者说是单个用户留存概率大小的问题。
      单个用户或者说一批用户非连续登陆并不会影响留存衰减趋势的判断,也不会影响预估准确性,因为拟合出来的留存衰减本身就包含了你说的非连续登陆等的情况。

  9. 估算的逻辑还是很赞的

  10. 请问下拟合曲线时拿的数据是一天数据的n日留存吗

  11. 高防服务器 on 2018 年 8 月 13 日 at 上午 9:57 said:

    公式看上去比较复杂。

  12. 您好,请问您这里用于计算这些表格?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Post Navigation