欢迎光临散文网 会员登陆 & 注册

这样做留存分析,提升用户粘性不再难!

2023-06-09 11:42 作者:观远数据官方账号  | 我要投稿

留存分析是一种用来分析用户参与情况以及活跃程度的分析模型。主要考察在某段时间内新使用产品(网站、APP等)的用户,经过一段时间后仍然在使用该产品,即有多少用户留存下来了。


企业可以通过留存分析衡量产品对用户价值的高低,找出增加用户粘性的解决方案。


01 留存分析案例展示

  • 留存率曲线

留存率是留存分析的最核心指标。第N日留存率 = 第1天新增的用户中,第N天还使用产品的用户数/第1天新增的总用户数。使用产品的用户数可以按照业务需求定义,例如访问网站、打开App等。


做留存分析,首先是监控留存率曲线,评估产品对用户的粘性。留存率曲线的纵轴是留存率,横轴是时间。


以案例为例,一天过后,我们拉新获得的 100% 用户只留下 57%;第 7 天变成了15%;然后缓慢下降,到了第 30 天以后达到一个大约 5% 的效果。这个留存率有些低,需要想办法通过某些方面的改进让它逐步提升。



  • 拆解分析问题

可以使用拆解分析法来分析问题所在。影响用户留存的重要因素包括用户属性、产品主线(业务流程)、运营活动、获客渠道等。


例如:将新增用户拆解到是哪个月新增的用户。如果某个月的留存率曲线较之前月份有所下降,那通过拆解分析就可以定位到是哪个月出现了问题。问题原因可能是某个产品功能改动或是某次运营活动。


再例如:将新增用户拆解到获客渠道,可以对比出哪个渠道是优质渠道,可以加强投入。



  • 留存用户画像

想要提高留存曲线,可以改进拆解分析发现的问题,也可以利用用户的基础信息、用户的行为数据(新增用户的关键行为次数:登录次数、信息发送个数、关注人数、分享次数、点赞次数等)进一步对留存用户和流失用户做差异化行为分析。


例如,根据案例中的留存率曲线,我们发现1天内是产品的振荡器,3天是留存拐点,3天内是决策期,7天后是平稳期。我们可以重点关注这些日期的留存率。通过联动功能,获得对应的留存用户列表,做进一步的留存用户的用户画像分析。

 02 ETL中做留存分析数据准备

  • 数据源

数据源包含用户的基础信息(用户ID、来源渠道、年龄、性别),以及用户的注册日期和访问日期。一个用户有多次访问就记录多行。

  • ETL截图

  • 详细步骤

    ◆  筛选数据行:过滤注册日期 大于等于 2021-01-01;

    ◆  添加"SQL输入"操作,并输入以下SQL。使用collect_list函数将每个用户的访问日期拼接为数组,并用array_sort函数对日期进行排序。

        SELECT input1.`用户ID`,input1.`年龄`,input1.`性别`,input1.`来源渠道`,input1.`注册日期`,

        array_sort(collect_list(input1.`访问日期`)) as `访问日期`

        from input1

        group by 1,2,3,4,5

        ——该步骤输出效果为每个用户只有一行数据。


    ◆  添加计算列:

        间隔天数:explode(sequence(1,30))

        ——使用sequence函数创建一个1到30的数组,并用explode函数将数组展开。该步骤输出效果为每个用户有30行数据。总数据量为用户人数*30,请预估数据量并在第一步对用户数做适当的过滤。

        新增用户数:1


    ◆  添加计算列:

        留存日期:DATE_ADD([注册日期],[间隔天数])

          今日:CURRENT_DATE()


    ◆  筛选数据行:留存日期 小于等于 今日;


    ◆  添加计算列:

        留存人数:if(exists([访问日期], x -> x=[留存日期]),1,0)

        ——使用exists函数判断用户是否在对应的日期访问。


    ◆  保存并且运行ETL就可以使用ETL的输出数据集制作案例展示的卡片啦。

  • ETL输出数据集


03 卡片上即席做留存分析

当不需要做留存率曲线,只需要检测重点日期的留存率时,可以直接在卡片上计算留存率。


最后需要注意,做新增用户30日留存曲线时,需要对新增用户的注册日期进行过滤,确保留存率计算中的分母(新增用户数)从注册日期开始算已经超过30日。例如今天是2022-09-15,若某个用户的注册日期为2022-09-01,统计用户30日留存曲线时需要排除该用户,因为该用户注册至今还不满30日。

  • 图表1:留存漏斗图

    ◆ 展示随日期变化的留存人数和留存率。



    ◆  使用数据源数据集新建卡片,并新建计算字段:

      间隔天数:DATEDIFF([访问日期],[注册日期])

        新增用户数:COUNT(DISTINCT([用户ID]))

        1日留存人数:COUNT(DISTINCT(if([间隔天数]=1,[用户ID],null)))

        3日留存人数:COUNT(DISTINCT(if([间隔天数]=3,[用户ID],null)))

        7日留存人数:COUNT(DISTINCT(if([间隔天数]=7,[用户ID],null)))

        30日留存人数:COUNT(DISTINCT(if([间隔天数]=1,[用户ID],null)))


    ◆  选择可视化类型为漏斗图,将新增用户数、1日留存人数、3日留存人数、7日留存人数、30日留存人数拖入数值栏,即可得到左侧图形;


    ◆  也可以直接新建计算字段来计算留存率:

        1日留存率:[1日留存人数]/[新增用户数]

        3日留存率:[3日留存人数]/[新增用户数]

        ...

  • 图表2:留存分析手枪图

在月份维度计算月用户留存率。Y轴为新用户注册的月份,X轴为过去了几个月,单元格内可展示留存人数或者留存率。



◆  例如注册月份2022-04对应的0月是2022-04当月,1月是2022-05,2月是2022-06,并以此类推。假设某个用户在2022-04-15首次注册,则在2022-04对应的0月记为1人;若该用户在2022-05-01到2022-05-31期间登录过,则在2022-04对应的1月记1人;并以此类推。


◆  使用数据源数据集新建卡片,并新建计算字段:

        注册月份:DATE_TRUNC('month',[注册日期])

        1月后:ADD_MONTHS([注册月份],1)

        2月后:ADD_MONTHS([注册月份],2)

        3月后:ADD_MONTHS([注册月份],3)

        4月后:ADD_MONTHS([注册月份],4)

        5月后:ADD_MONTHS([注册月份],5)

        6月后:ADD_MONTHS([注册月份],6)


◆  新建计算字段来计算留存人数:

        0月新增用户数:COUNT(DISTINCT([用户ID]))

        1月留存人数:COUNT(DISTINCT(if([访问日期]>=[1个月后] AND [访问日期]<[2个月后],[用户ID],null)))

        2月留存人数:COUNT(DISTINCT(if([访问日期]>=[2个月后] AND [访问日期]<[3个月后],[用户ID],null)))

        3月留存人数:COUNT(DISTINCT(if([访问日期]>=[3个月后] AND [访问日期]<[4个月后],[用户ID],null))))

        4月留存人数:COUNT(DISTINCT(if([访问日期]>=[4个月后] AND [访问日期]<[5个月后],[用户ID],null)))

        5月留存人数:COUNT(DISTINCT(if([访问日期]>=[5个月后] AND [访问日期]<[6个月后],[用户ID],null)))


◆  新建计算字段来计算留存率:

        0月:[0月新增用户数]/[0月新增用户数]

        1月:[1月留存人数]/[0月新增用户数]

        2月:[2月留存人数]/[0月新增用户数]

        3月:[3月留存人数]/[0月新增用户数]

        4月:[4月留存人数]/[0月新增用户数]

        5月:[5月留存人数]/[0月新增用户数]


◆  选择可视化类型为表格,将注册日期(月)拖入维度栏,留存人数或者留存率的指标拖入数值栏;


◆  设置条件格式 > 列规则:例如留存率≥25%的显示为橙色,其他显示为蓝绿色。



这样做留存分析,提升用户粘性不再难!的评论 (共 条)

分享到微博请遵守国家法律