`

用户留存率计算

 
阅读更多
    做企业级报表的人经常会遇到留存率的概念。对于不同的项目,留存率的概念也会有所不同。针对我所在的手机应用、手机游戏方向的用户留存率统计,在此做一些简要的说明。

    用户留存率这个概念在网上没有搜到其具体的定义,在此仅对我公司的计算模式进行简要整理:用户留存率是只某一基础用户群在特定的一段时间内使用某一应用(游戏)的比率。需要注意两个概念:

    1、基础用户群:是指按照给定要求规范出的特定群体。例如,我们要统计2月份《二战风云》的日留存,统计的基础用户群是指2月1日全天使用了《二战风云》这一游戏的所有玩家。

    2、特定的一段时间内使用:这个概念对不同的人可能有不同的两种理解。一是连续的时间内,每天都在使用该应用;二是在特定的时间段内,不定期的使用该应用。这里,我们统计采用的是后者。

    现在举例说明该统计所要达到的效果:

            第一天   第二天   第三天  第四天   第五天  第六天  第七天

    访问量   100      110      120     130      140     150     160

    留存量   100       90       80      70       60      50      40
    对于以上数据进行说明:我们以第一天访问的总人数100作为基数统计日留存。可以看到,虽然每天的用户访问量是在递增的,但是用户留存量是递减的(用户留存当然是越来越少喽!)。其计算方法我想大家也就可以看出一二了吧!对,第二天的留存量是指在第一天基数的100人中,有90人第二天又使用了该应用;而第三天的留存量是指在第一天基数的100人中,有80人第三天又使用了该应用,以此类推……

    可能有人会问,第三天的80人为什么不是以第二天的90人作为基数呢?我个人认为第二种方式在统计上是存在弊端的。举例说明:如果一个用户第二天没有使用该应用,但以后的每天都在使用,在这种情况下,我们可以确定的是:该用户是活跃用户;但如果用第二种方法统计的话,该用户就不会在我们统计的数据内。

    现就以上所述方法的统计流程进行简单介绍:

    1、抽取基础数据作为统计基数

    2、抽取第二天访问数据数据,并以该数据与抽取的基础数据做交集,得到第二天留存量

    3、用留存量/基础数据得出第二天的留存率

    4、以上方法每天循环,提取每天的用户留存数据

    一下是用户日留存的存储过程,仅供参考(mysql)

 
CREATE  PROCEDURE `PRO_REMAIN_USER_BY_DAY`(in in_day dateTime)
begin
 declare Ttime datetime;
 declare Tflag int;
 declare TtemFlag int;
 declare TdayFlag2 varchar(20);
 
 declare Tnum int;
 declare Tnum1 int;
    declare Tcount int;
 set in_day=ifnull(in_day,adddate(current_date(),-1));
 
 set Tcount=(select count(1) from remain_user_data where addTime =in_day );
 if Tcount =0 then
   insert into remain_user_data(addTime) values(in_day);
 end if;
 set Tflag=1;
 set TtemFlag=0;
 set Ttime=in_day;
 
 CREATE TEMPORARY TABLE tempTable(id bigint );
 while Tflag<30 do
  
   truncate table tempTable;
 
 #抽取基础数据
  insert into tempTable
  select player_id from day_logout_notify where logout_time>=Ttime and logout_time<adddate(Ttime,1);
 
  
  set Tnum=(select ifnull(count(distinct id),0) from tempTable );
 
     if Tnum>0 then
  #抽取第 Tnum天留存量
  set Tnum1=(select ifnull(count(distinct p.player_id),0) 
        from tempTable t join day_logout_notify p on t.id=p.player_id 
        where p.logout_time>=in_day and logout_time<adddate(in_day,1) );  
        if Tflag=1 then
           set Tnum=1;
        end if;       
  set TdayFlag2=concat( 'data',Tflag);
 
  #计算留存率 并更新
  set @sqlstr=concat('update remain_user_data set ',TdayFlag2,'=',Tnum1/Tnum,' where addTime=',concat('\'',DATE(Ttime),'\'')); 
  prepare stmt from @sqlstr;
  execute stmt;
  end if;
 
       #时间加1,循环
        set Ttime=adddate(Ttime,-1);
        set Tflag=Tflag+1;
 end while;
    drop table tempTable;
end;
 


  该存储过程已经过测试,可以放心使用。 
分享到:
评论
3 楼 owen19891030 2013-12-17  
你好想问下你这个里面remain_user_data 表是需要数据库来构建吗?
2 楼 cpjsjxy 2013-06-28  
sunwt 写道
            第一天   第二天   第三天  第四天   第五天  第六天  第七天

    访问量   100      110      120     130      140     150     160

    留存量   100       90       80      70       60      50      40

按照文中留存量的解释,是不是也会出现以下的留存量数据呢,而不是简答的越来越少

            第一天   第二天   第三天  第四天   第五天  第六天  第七天

    访问量   100      110      120     130      140     150     160

    留存量   100       10       30      40       50      60      70

第二天只有第一天100人中的10人访问
第三天只有第一天100人中的30人访问
以此类推

理论上是有可能的,但实际上不会
1 楼 sunwt 2013-05-22  
            第一天   第二天   第三天  第四天   第五天  第六天  第七天

    访问量   100      110      120     130      140     150     160

    留存量   100       90       80      70       60      50      40

按照文中留存量的解释,是不是也会出现以下的留存量数据呢,而不是简答的越来越少

            第一天   第二天   第三天  第四天   第五天  第六天  第七天

    访问量   100      110      120     130      140     150     160

    留存量   100       10       30      40       50      60      70

第二天只有第一天100人中的10人访问
第三天只有第一天100人中的30人访问
以此类推

相关推荐

    用户留存率计算.pdf

    用户留存率计算.pdf

    Spark机器学习视频第10课.最终获取用户的收藏以及订单转换率

    课时8:Spark统计用户的收藏转换率 课时9:Spark梳理用户的收藏以及订单转换率 课时10:最终获取用户的收藏以及订单转换率 课时11:Spark Pipeline构建随机森林回归预测模型 课时12:Spark 随机森林回归预测结果...

    ZGG2016#knowledgesystem#使用 kylin 计算留存率1

    如果使用 HiveQL 或 Spark SQL 来计算第一天和第二天的留存用户数,写法大致如下:select distinct USER_ID as USER_

    用户留存分析白皮书1

    1、新用户普遍在前几天流失 2、各渠道导入的新用户留存差异巨大,渠道策略有待提升 3、根据留存率计算用户生命周期 4、需要通过同业对比确认是否正常 1、为什么用

    数据运营思维导图

    一般不分析活跃用户留存,而是通过DAU观察活跃用户流失数据 留存是评定游戏综合质量的最佳指标 5、平均使用时长和平均使用次数 可以使用柱状图来展现 两项宏观行为指标可反映出用户对app的依赖程度 如果留存较...

    计算机设计 - 模拟立体翻转效果,非Gallery实现,保证可靠运行,计算机专业可参考,免费资源下载

    模拟立体翻转效果是一种视觉呈现技术,它能够实现图像或界面元素的三维翻转动画,为用户带来生动且富有...这种效果不仅能够提升用户界面的美观度,还能够增加用户的参与度和留存率,为应用或网站带来更好的用户体验。

    2019数据运营思维导图

    可以用来监控大R用户异常变化情况 如果该值异常波动,请进一步看鲸鱼用户数据 4、用户留存 新用户留存 次日、3日、7日、14日、30日留存 次日留存是对玩家“第一游戏体验”的最佳印证 与游戏的类型、题材、玩法、美术...

    R语言游戏数据分析与挖掘

    第8章介绍了留存指标的计算、留存率计算与预测、常用分类算法原理和模型评估;第9章介绍了常用用户指标计算、LTV计算与预测、用户物品购买关联分析、基于用户物品购买智能推荐和社会网络分析;第10章介绍了渠道数据...

    平台数据分析.doc

    数据收集 APP相关数据 用户留存率 用户平均访问时长 订单数据 商家下单数据 直播相关数据(场均观看人数、直播场次情况、直播间转发情况、各直播类 型的数据情况) 用户注册数 用户流失率 3、数据的统计与描述 在...

    UIMetrics:留存分析的指标计算

    用户界面度量假设:一天中用户的 UI_OPEN_COUNT 和 VIDEO_VIEW_COUNT 仅被跟踪一次。 没有加载数据的脚本。 有一种方法可以将 CSV 文件加载到所需的数据结构中。 花费时间:2 天 12 小时。 一种。 9 月份的 Day7 UI ...

    一整套电商数仓的搭建源码+项目说明(包括数据采集平台的搭建).zip

    一整套电商数仓的搭建源码+项目说明(包括数据采集平台的搭建,将用户的行为数据分为四层分别分层搭建,并实现业务数据库的分层搭建,针对数据仓库中的数据进行,留存、转化率、复购率、GMV、活跃等报表分析,采用...

    尚gg大数据项目实战电商数仓系统开发教程.txt

    76_用户行为数仓_用户留存分析.avi 77_用户行为数仓_1、2、3、n日留存用户明细.avi v. ^5 Q1 \ `9 V4 Q 78_用户行为数仓_需求三:ADS层留存用户和留存比率.avi 79_用户行为数仓_新数据准备.avi 80_用户行为数仓_需求...

    一整套电商数仓的搭建完整源码+说明(包括数据采集平台的搭建).zip

    一整套电商数仓的搭建源码+项目说明(包括数据采集平台的搭建,将用户的行为数据分为四层分别分层搭建,并实现业务数据库的分层搭建,针对数据仓库中的数据进行,留存、转化率、复购率、GMV、活跃等报表分析,采用...

    中国人工智能理财分析报告.pptx

    获取 提升 保持 衰退 流失 精 准 识 别 潜 在 用户 策略优化 , 智能客服 , 提升客户贡 优化用户体 献 验 智能预警, 延 长客户存续周 期 个性推荐,增 大留存机率 用户 人工 智能 人工智能理财全生命周期客户服务 ...

    浅析大数据与人工智能的发展.docx

    大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据包括结构...

    猪猪家住宿管理系统 v1.1.zip

    2运营统计:可以统计(日、月、年)的房间数量、总营业额、日均营业额、入住次数、日均入住次数、日均入住率。可以将统计数据导出为excel文件保存到电脑留存资料,也可以打印出来。统计15天的数据可以打印在一张A4纸...

Global site tag (gtag.js) - Google Analytics