回馈贴|同期群分析解读用户生命周期,剖析真实用户行为和价值

文章来源:公众号数据万花筒

文章链接:

https://mp.weixin.qq.com/s/tR5iCR5GFCLsLUo2wPtPzgmp.weixin.qq.com


加入我们,每日刷题:

https://link.zhihu.com/?target=https%3A//t.zsxq.com/MbynyB2

漂亮的平均数并不是数据分析的最优解,只是用数据造出来的虚幻景象,会运营决策造成误导。数据不会说谎,只是做数据的人没有做到精准的分析而导致对数据呈现的错误解读。在用户生命周期各个环节中,用户的转化率和留存率是各不相同的,如果是用各个环节转化率的加权平均来代表整个周期的转化率显然是不正确的;当然如果仅对于留存阶段的留存率来说,新用户进入产品的第一、三、七、十四天的留存率也是各不相同的,显然取平均也是不科学的。



面对平均值不是最优解这个问题,前面已经介绍的结构化分析可以根据用户的付费行为等将其分为不同的组别,去统计分析不同组别用户的付费差异;结构化分析也适用于用户生命周期各个阶段转化率的分析,或是用户激活后的第N天的留存率分析。

但对于留存率分析最好的方法还是同期群分析。同期群分析和结构化分析一样同期群分析也属于用户分群里的细分类型,可以对指定时间内具有共同行为特征的用户进行分群,统计不同用户群体在时间周期内某一指标的变化趋势。

1同期群分析是什么

同期群分析(CohortAnalysis)是用户分群的细分类型,是一种横纵结合的分析方法,在横向上分析同期群随着周期推移而发生的变化,在纵向上分析在生命周期相同阶段的群组之间的差异。用户所分的群组可以是同一天注册的用户,也可以是同一天登陆的用户,当然也可以是同一天第一次发生付费行为的用户,要观测的指标可以是这群用户在一定周期内的留存率、付费率等等。举例子来说,分析70后、80后、90后在20岁、30岁、40岁、50岁的收入各是多少;分析每一天的新注册用户在之后N天的留存率等等。

概念很晦涩,我们以某APP新注册用户在注册之后N天的留存率变化为例进行说明。

某APP是需要付费才能注册使用的,为了庆祝3.8妇女节,3.8日向所有用户开放免费注册,我们对3月6日到3月12日之间注册的新用户做一个同期群分析。

我们以每天注册的新用户作为一个群体,即以一天为周期对用户进行分群,观察每一个群体在后续N天的留存变化情况。

横轴是周期,以一天为一个周期,分析从一个周期到七个周期的客户留存率;

纵轴是同期群,以一天来划分不同的分组,每一个日期都确定一个同期群。



有了同期群,我们就可以从横向和纵向比较。从横向上,我们可以看到同一个用户群在之后N天的留存率变化;而在纵向上,我们可以看到不同群组在第N天后的留存率,可以比较个群组用户的粘性。经过分析,我们发现3月8日免费开放注册获客变多了30%左右,但是这一批用户的留存与其他用户比较确实低了10%左右,说明免费注册用户的粘性低,质量不如付费注册的用户。

2做同期群分析的意义

讲完同期群的概念,你肯定已经理解了做同期群分析的意义了。同期群分析的优势可以总结为以下三点:

1.同期群分析实现细分用户,精准运营,是提高用户留存率的关键

同期群分析可以实现对用户的细分,比较不同细分用户在后续一段时间的变化趋势;同时,同期群分析也对处于不同生命周期的用户进行干预和管理,例如,在用户即将流失的节点开展运营活动将用户召回;同期群分析是结构化分析的进一步延伸,最终可以使分析结果更加精确,数据分析结果更能反映事实情况。

2.横纵结合比较,量化同一群体的流失率变化情况以及不同群体的流失率差异

从横向上看,我们可以分析用户行为的生命周期。随着时间周期的增加,用户留存率下降,最终会趋于一个稳定值,达到这个稳定值的周期也就是用户流失周期,这就是著名的拐点理论。这个稳定值就是代表着新进用户留存下来的比例,这些最终留下来的用户无疑就是忠实粉丝了。

纵向上看,我们可以分析不同群体在相同生命周期的留存情况,进而比较不同用户群的留存率,分析用户粘性。如果是买量用户的话,还可以根据已有的用户粘性数据,选择合适的买量用户。

3.监控真实的用户行为、衡量用户价值并针对性的制定营销方案

通过前面的分析我们知道3月8日免费开放注册,用户数量是得到了很大提升,但是的用户留存率低、粘性差;相比之下,付费注册的用户留存率一直很稳定。通过同期群分析,我们就可以清晰地看到真实的用户行为趋势,免费用户一旦用户注册完,之后的留存率、活动参与率就会变低,运营人员就需要针对这一情况,开展一系列的营销活动来促进用户活跃,提升免费用户的留存率!



3 数据分析师如何快速地做同期群分析

同期群分析是数据分析中常用的方法,Python、Excel、SQL等工具都可以实现同期群分析,但在实际工作当中同期群分析经常是以报表的形式呈现,实现对业务指标的监控。

这里呢,我们就用SQL来实现同期群分析。

同样地,我们以某付费APP的新注册用户为例做同期群分析实例讲解。该APP新注册用户的数据都放在了register注册表中,登录数据放在了login表中,两张表字段及数据结构如下:



为了实现同期群的分析,我们需要将注册表register和登录表login进行关联,并且计算出注册时间和登陆时间之间相差的天数,最终的形成一张这样子的中间表。



在关联表格的时候,我们以注册表register作为主表,登录表login作为副表进行关联,选取account_id作为关联的条件。另外为了提高SQL的运行效率,我们只选择注册后七日内的登录数据,这也是我们的关联条件之一。我们这里使用Hive SQL的语法。

SELECT a.*,
       b.login_dt,
       datediff(to_date(b.login_dt,"yyyyMMdd"),to_date(a.register_dt,"yyyyMMdd")) AS sub_date
FROM
  (SELECT *
   FROM register)a
LEFT JOIN
  (SELECT account_id,
          login_dt) b ONa.account_id=b.account_id
ANDdatediff(to_date(b.login_dt,"yyyyMMdd"),to_date(a.register_dt,"yyyyMMdd"))<=7

有了中间表之后,我们就可以在中间表的基础上制作同期群的分析了。这里我们通过count()函数和case when函数嵌套使用统计注册第N天后留存下来的用户数量。当然这里也可以直接计算第N天的留存率,以注册当天的新用户数量作为分母,注册N天后留存下来的用户数量作为分子。这里为了方便大家查阅和理解代码,就直接放一个数量值,不再计算留存率。

SELECT register_dt,
       region,
     count(DISTINCT account_id) register_count,

       count(DISTINCT CASE
                          WHEN sub_date=1 THENaccount_id
                          ELSE NULL
                      END) after_day1_count,
       count(DISTINCT CASE
                          WHEN sub_date=2 THENaccount_id
                          ELSE NULL
                      END) after_day2_count,
       count(DISTINCT CASE
                          WHEN sub_date=3 THENaccount_id
                          ELSE NULL
                      END) after_day3_count,
       count(DISTINCT CASE
                          WHEN sub_date=4 THENaccount_id
                          ELSE NULL
                      END) after_day4_count,
       count(DISTINCT CASE
                          WHEN sub_date=5 THENaccount_id
                          ELSE NULL
                      END) after_day5_count,
       count(DISTINCT CASE
                          WHEN sub_date=6 THENaccount_id
                          ELSE NULL
                      END) after_day6_count,
       count(DISTINCT CASE
                          WHEN sub_date=7 THENaccount_id
                          ELSE NULL
                      END) after_day7_count
FROM
  (SELECT a.*,
          b.login_dt,
         datediff(to_date(b.login_dt,"yyyyMMdd"),to_date(a.register_dt,"yyyyMMdd")) AS sub_date
   FROM
     (SELECT *
      FROM register)a
   LEFT JOIN
     (SELECT account_id,
             login_dt) b ONa.account_id=b.account_id
   ANDdatediff(to_date(b.login_dt,"yyyyMMdd"),to_date(a.register_dt,"yyyyMMdd"))<=7)

GROUPBY register_dt,
                   region

这样同期群分析的监控报表就基本成型了,数据分析师只需要配置报表调度即可实现报表每天定时更新,实现同期群用户留存率的实时监控,以便在第一时间发现业务问题。

4 总结

同期群分析是用户分群的细分,有利于数据分析师更深层次地分析用户行为,并揭示总体衡量指标所掩盖的问题。同期群分析在用户生命周期的分析中占有重要地位,数据分析师可以运用同期群分析的方法将数据指标细化,实现横向和纵向地比较,更有利于运营精准地对产品发展趋势进行预测,对用户行为进行及时的干预。而同期群分析的实现也是极为简单的,数据分析师几行代码就可以搞定一张报表,实现对用户行为的监控。

https://zhuanlan.zhihu.com/p/36779577

https://zhuanlan.Zhihu.com/p/297978972(同期群实战分析)

https://www.cnblogs.com/ljhdo/p/5613750.html

http://www.woshipm.com/data-analysis/849738.html

https://mp.weixin.qq.com/s/3wLPRQPsCxcz5x7HWvRzZQ

如果您觉得我们的文章还不错,请分享,点赞,再看,一键三连!!!

END

数据分析求职面试相关资讯持续分享,尽请关注数据万花筒和极数特攻

加入数据万花筒的知识星球,每日分享数据分析笔试面试题

https://t.zsxq.com/MbynyB2t.zsxq.com


#数据分析师##学习路径#
全部评论

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
accaacc:2到4k,不是2k到4k,所以年薪是30块
点赞 评论 收藏
分享
评论
1
18
分享
牛客网
牛客企业服务