[游戏数据分析]WAU模型简介及WAU预测
声明:本博客中所采用的数据并非真实数据,会对真实数据加以变换,重在讨论游戏数据分析的思路。
这里是参考友盟的WAU模型[文章网址, 演示网址],利用某款游戏(以下称为游戏A)数据进行的分析。
作用:
1. 根据转移矩阵,可以对未来的WAU进行预测;
2. 查看”WAU用户构成”可以发现游戏的问题:新增过少?流失过多?忠诚用户过少?
概念解释:
这里所说的第N周,是往前推的第N周,如下图所示:

- 新增用户:注册时间在该周的用户。
- 本周回流用户:上周未登录游戏,本周有登录游戏的用户。
- 连续活跃N周的用户:在连续N周都有登录,但是在第N+1周没有登录,比如:连续3周,也就是往前推3周都有登录,但是往前的第4周没有登录。
- 忠诚用户:连续5周及以上活跃的用户
- 近期流失用户:连续n周(1<=n<=4)没有登录过游戏的用户(第n+1周启动过),比如:连续4周没有登录过游戏,但是第5周有启动过游戏。
根据上述定义,周活跃用户(WAU)由:新增用户、连续2周活跃用户、连续活跃3周、连续活跃4周、忠诚用户,组成。将每一种用户类型视为一种用户状态,各状态间的转移关系如下:

思路:
1.利用游戏A的活跃用户数据,按周将用户分成上述的各个类型,得到每周各个类型的人数;
2.计算前4周每周之间类型转移概率。得到3个转移概率矩阵,然后对矩阵中每项取平均值,得到如下的转移概率矩阵,用于后面WAU的预测。
注意到最后一行中:“近期流失用户”转换为“本周回流用户”和“近期流失用户”的概率之和不为1,这是前4周没有活跃且第5周有活跃的“近期流失用户”,在新的一周中,如果没有继续活跃,则不算是新的一周中的”近期流失用户“。
3.WAU预测
将前一周的各类型用户数乘以相应的转移概率,得到新一周的预测用户数。这里需要说明的是:新一周中“本周回流用户“是来自于两部分:1.上周的近期流失用户、2.上周的连续5周及以上没有登录的流失用户。对于第1部分的回流用户,直接用”上周的近期流失用户“乘以相应的转移概率即可。对于第2部分的回流用户如何计算呢?通过数据发现,(对于一款稳定的游戏而言)由”上周的近期流失用户“转化而来”回流用户“占总回流用户的比例是变化不大的,因此,计算"上周近期流失用户"转换而来的”本周回流“用户占比,前三周的值,取平均。然后用:近期流失用户*转移概率/该比值,即可得到预测的”本周回流用户“。预测的情况如下,与真实数据比较的误差率为3.6%

其他结论:
1) 由上面的转移矩阵可知:用户连续活跃的周数越多流失的概率也就越低,流失后再回流的概率相对也更高;
2) 由下面,各类型用户在WAU中的占比可以得出:新增用户在WAU中占比最多,而连续活跃2周以上的人数占比较少,说明游戏的用户主要来自于新增用户,而老用户的流失情况较为严重。因此,应主要关注新用户的转化率及老用户的留存流失情况。第二个方面,“回流用户”占比较多,但是“回流用户”转换为“连续2周活跃”的概率较小,说明有很多用户并不是频繁地登录游戏,间隔一周以上会玩一下,但是玩玩后有很快又会流失掉(7天没有登录游戏定义为流失),可以深入地去分析这部分回流用户,是否回流一次之后就再也不回来?如果是这种情况,则需要对这占比很大的“回流用户”采取挽留措施,比如,登录奖励、道具打折之类。还有一个原因,用户对游戏玩法已经感到疲劳,不愿再玩游戏,从而导致老用户的留存率很低,这就需要考虑是否增加新的场景或者角色或者道具来吸引用户。

3) 忠诚用户的数量在这5周中整体呈下降趋势(此处没给出具体数据),这需要引起运营的注意,因为这些App最优质用户的流失是整个App活跃用户规模开始缩水的前兆。
[游戏数据分析]WAU模型简介及WAU预测的更多相关文章
- 基于深度学习方法的dota2游戏数据分析与胜率预测(python3.6+keras框架实现)
很久以前就有想过使用深度学习模型来对dota2的对局数据进行建模分析,以便在英雄选择,出装方面有所指导,帮助自己提升天梯等级,但苦于找不到数据源,该计划搁置了很长时间.直到前些日子,看到社区有老哥提到 ...
- 用python做时间序列预测九:ARIMA模型简介
本篇介绍时间序列预测常用的ARIMA模型,通过了解本篇内容,将可以使用ARIMA预测一个时间序列. 什么是ARIMA? ARIMA是'Auto Regressive Integrated Moving ...
- TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人
简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人. 文章包括一下几个部分: 1.为什么要尝试做这个项目? 2.为 ...
- TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人。
简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人. 文章包括一下几个部分: 1.为什么要尝试做这个项目? 2.为 ...
- 转:概率主题模型简介 --- ---David M. Blei所写的《Introduction to Probabilistic Topic Models》的译文
概率主题模型简介 Introduction to Probabilistic Topic Models 转:http://www.cnblogs.com/siegfang/archive/2 ...
- spring 事件驱动模型简介
事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): ...
- Sequelize 关系模型简介
Sequelize 关系模型简介 先介绍一下本文用到的术语: 源: 调用 sequelize 中关系方法的调用者 目标: 调用 sequelize 中关系方法中的参数 比如, User.hasOne( ...
- jvm-垃圾回收gc简介+jvm内存模型简介
gc是jvm自动执行的,自动清除jvm内存垃圾,无须人为干涉,虽然方便了程序员的开发,但同时增加了开发人员对内存的不可控性. 1.jvm内存模型简介 jvm是在计算机系统上又虚拟出来的一个伪计算机系统 ...
- CSS box-flex属性,然后弹性盒子模型简介
今天做项目的时候发现一个css3的新属性flex 一.什么是flex 它的作用是能够按照设置好的规则来排列容器内的项目,而不必去计算每一个项目的宽度和边距.甚至是在容器的大小发生改变的时候,都可以重新 ...
随机推荐
- openstack horizon 开发第三天
工作流:工作流是带有选项的复杂表单,每个工作流必须包含扩展Workflow, Step和的类Action1. url.py 路由处理 RESOURCE_CLASS = r'^(?P<resour ...
- LeetCode-51.N皇后
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案. 每一种解 ...
- alpha版发布
网站网址:http://doeverying.applinzi.com/
- C#使用结构体,输入5个人的学号,姓名,分数,按照成绩高低排列打印出来
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- linux 常用命令-用户、用户组管理
注:本篇只涉及常用命令,全部命令可以通过help帮助查看. (1)type useradd #查看命令属于内部命令还是外部命令,内部命令是嵌在linux的shell中,外部命令存储在路径中 (2) ...
- Daily Scrum 10.23
(写于10.22周四) 说下现在的人员情况: 康家华请假至下周一,刘彦熙至周五18:00,张启东至周六中午. 其他人正常工作. 然后是现在的进度情况: 已经完成服务器数据库搭建,以及基础的注册登陆功能 ...
- Docker(二十六)-Docker Compose编排容器
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
- [转帖]将改名贯彻到底,Xeon E3系列将改名为Xeon E
将改名贯彻到底,Xeon E3系列将改名为Xeon E 导读: E3 系列改名为 XEON E 系列entry 入门级的含义 E5 1XXX 序列改名为 XEON W 系列 workstatio ...
- Java获取当前运行方法所在的类和方法名
很简单,直接看代码: public void showClassAndMethod() { System.out.println(this.getClass().getSimpleName() + & ...
- springMVC下出现http 400错误
参数绑定过程中类型转换失败 Failed to convert property value of type 'java.lang.String' to required type 'java.uti ...