Cookie Cats 是什么?
"Cookie Cats" 是一款移动游戏,由 Tactile Entertainment 开发和发布。在这款游戏中,玩家需要通过消除具有相同颜色的相邻方块来解谜,同时帮助一群可爱的猫咪吃到他们心爱的饼干。游戏的玩法类似于其他消除类游戏,但有着自己独特的故事背景和可爱的游戏角色。
当玩家玩游戏时,可能会碰到一些阻碍,比如需要等待一段时间才能继续游戏,或者需要花钱购买道具才能过关。比如,假设你在玩一款手机游戏,游戏中有一些关卡需要等待一段时间才能解锁,或者需要购买特殊道具才能过关。
在这个项目中,我们要分析的是一个A/B测试的结果。A/B测试是一种常用的实验设计方法,其中一组人(组A)会体验到一种情况,另一组人(组B)会体验到另一种情况。在这个例子中,我们将Cookie Cats游戏中的第一个门槛从30级移到40级,然后分析这个改变对玩家的影响。
我们主要关注两个方面:玩家的留存率和游戏轮次。
留存率指的是玩家在游戏中的持续参与程度,即他们是否会在一段时间后继续玩游戏。
游戏轮次指的是玩家在游戏中进行的游戏回合或关卡。通过分析这些数据,我们可以了解改变关卡位置对玩家的行为产生了什么影响。
完成这个项目需要一些基本技能:
使用 pandas DataFrames:Pandas 是一个流行的 Python 库,用于数据处理和分析。DataFrames 是 Pandas 中的一种数据结构,类似于 Excel 表格,可以方便地存储和操作数据。比如,你可以使用 Pandas 从 CSV 文件中加载数据,并对数据进行筛选、分组、排序等操作。例子:假设你有一个包含学生成绩的 CSV 文件,你可以使用 Pandas 将其加载到 DataFrame 中,并通过 DataFrame 的方法计算平均成绩、筛选出及格的学生等。
使用 pandas plot 方法:Pandas 还提供了简单的绘图功能,可以使用 DataFrame 的 plot 方法绘制各种图表,如折线图、柱状图等。这使得数据可视化变得简单快捷。例子:你可以使用 Pandas 的 plot 方法绘制学生成绩的折线图,以便直观地查看学生成绩的变化趋势。
了解假设检验和 bootstrap 分析:假设检验是一种统计学方法,用于判断某个假设是否成立。Bootstrap 分析是一种重抽样方法,用于估计样本的统计量的分布。例子:假设你想要比较两组学生的平均成绩是否有显著差异,你可以使用假设检验来判断这种差异是否真实存在。另外,如果你想要估计某个统计量的置信区间,你可以使用 Bootstrap 方法来进行估计。
数据集是从某个正在运行 A/B 测试的游戏中收集的,共有 90,189 名玩家在进行 A/B 测试期间安装了游戏。
userid:每个玩家的唯一标识号,用来区分不同的玩家。
例子:假设有玩家A、玩家B和玩家C,他们的userid分别是123、456和789。
version:玩家所属的实验组,控制组或测试组。
gate_30:表示玩家被分配到了实验组,他们在游戏中的第一个关卡在30级。
gate_40:表示玩家被分配到了测试组,他们在游戏中的第一个关卡在40级。
例子:玩家A被分配到了gate_30组,而玩家B被分配到了gate_40组。
sum_gamerounds:玩家在安装游戏后的第一个星期内玩了多少个游戏回合。
例子:玩家A在第一个星期玩了10个游戏回合,而玩家B玩了20个游戏回合。
retention_1:玩家在安装游戏后的第一天是否再次登陆游戏。
1:表示玩家在第一天再次登陆游戏。
0:表示玩家在第一天没有再次登陆游戏。
例子:玩家A在第一天没有再次登陆游戏,而玩家B再次登陆了游戏。
retention_7:玩家在安装游戏后的第七天是否再次登陆游戏。
1:表示玩家在第七天再次登陆游戏。
0:表示玩家在第七天没有再次登陆游戏。
例子:玩家A在第七天再次登陆了游戏,而玩家B没有再次登陆游戏。
数据清洗
x251# 数据已导入!
2# ------------------------------------
3
4# 维度 -------------------------
5观测数量: 90189 列数量: 5
6
7# 数据类型 -----------------------------
8对象变量:
9变量数量: 1
10['version']
11
12整数变量:
13变量数量: 2
14['userid', 'sum_gamerounds']
15
16布尔变量:
17变量数量: 2
18['retention_1', 'retention_7']
19
20# 缺失值 ---------------------
21是否存在缺失值?
22没有缺失值!
23
24# 内存使用情况 ----------------------
252.2+ MB
userid | version | sum_gamerounds | retention_1 | retention_7 | |
---|---|---|---|---|---|
0 | 116 | gate_30 | 3 | False | False |
1 | 337 | gate_30 | 38 | True | False |
2 | 377 | gate_40 | 165 | True | False |
3 | 483 | gate_40 | 1 | False | False |
4 | 488 | gate_40 | 179 | True | True |
数据分布探索
一个完整的A/B test主要包括如下几部分:
1、分析现状,建立假设:分析业务,确定最高优先级的改进点,作出假设,提出优化建议。
2、设定指标:设置主要指标来衡量版本的优劣;设置辅助指标来评估其他影响。
3、设计与开发:设计优化版本的原型并完成开发。
4、确定测试时长:确定测试进行的时长。
5、确定分流方案:确定每个测试版本的分流比例及其他分流细节。
6、采集并分析数据:收集实验数据,进行有效性和效果判断。
7、给出结论:①确定发布新版本;②调整分流比例继续测试;③优化迭代方案重新开发,回到步骤1。
假设:
检查正态性
如果符合正态分布,检查齐性
步骤:
分割和定义控制组与测试组
应用 Shapiro 检验检查正态性
如果参数满足,应用 Levene 检验检查方差齐性
如果参数满足且方差齐性,应用 T-检验
如果参数满足但方差不齐,应用 Welch 检验
如果不符合参数要求,直接应用 Mann-Whitney U 检验
注意点:
测试时长:测试的时长不宜过短,否则参与试验的用户几乎都是产品的高频用户。
分流(或者说抽样):应该保证同时性、同质性、唯一性、均匀性。
①同时性:分流应该是同时的,测试的进行也应该是同时的。
②同质性:也可以说是相似性,是要求分出的用户群,在各维度的特征都相似。可以基于用户的设备特征(例如手机机型、操作系统版本号、手机语言等)和用户的其他标签(例如性别、年龄、新老用户、会员等级等)进行分群,每一个A/B测试试验都可以选定特定的用户群进行试验。
思考:如何判断是不是真的同质?可以采用AAB测试。抽出两份流量进行A版本的测试,进行AA测试,并分别与B版本进行AB测试。通过考察A1和A2组是否存在显著性差异,就可以确定试验的分流是否同质了。
③唯一性:即要求用户不被重复计入测试。
④均匀性:要求各组流量是均匀的。Hash算法。现在一般由专用的A/B测试工具负责。也有看到一篇文章写了python实现,大体的思路是对用户id添加Salt值,对其散列,并据此算出一个0-1之间的浮点数,同设定好的阈值比大小,从而分组。有兴趣的可以看看,该作者的思路很清晰: 随机分配里的Why and How。(统计学原理上,我没有找到均匀性这一要求的依据,其实双样本的假设检验并不要求两个样本的数量相等或相近。当然从直观上是可以理解,希望分出的用户组越相近越好,包括人数的相近。)
为什么判断是不是正态?
判断数据是否符合正态分布是因为很多统计方法(如t检验)在数据符合正态分布时具有更高的准确性和可靠性。正态性检验是为了确认所采用的统计方法是否适用于数据,以避免在假设检验中得出错误的结论。
如果数据符合正态分布,那么可以使用参数统计方法(如t检验)进行假设检验,这样可以更准确地估计总体参数(如总体均值)的差异。而如果数据不符合正态分布,使用参数统计方法可能会导致偏差或错误的结论。
在A/B测试中,我们通常希望使用正态性检验来验证我们所采用的统计方法是否适用于数据,以确保我们得出的结论是可靠和准确的。如果数据不符合正态分布,我们可以选择使用非参数统计方法(如Mann-Whitney U检验)来进行假设检验,这些方法对数据的分布情况不做任何假设,因此更加灵活和适用于不同类型的数据。
不是正态怎么办?
可以考虑使用非参数统计方法进行假设检验,这样可以避免假设数据符合正态分布的前提。非参数统计方法不依赖于数据的分布情况,因此更加灵活和适用于不同类型的数据。
常用的非参数统计方法包括:
Mann-Whitney U检验:用于比较两个独立样本的中位数差异。
Wilcoxon符号秩检验:用于比较两个相关样本的中位数差异。
Kruskal-Wallis检验:用于比较多个独立样本的中位数差异。
Friedmann检验:用于比较多个相关样本的中位数差异。
为什么要进行方差齐性检验?
确保在进行独立双样本t检验等参数统计方法时,所采用的假设检验结果的可靠性和准确性。方差齐性检验用于检验两个或多个组的样本方差是否相等,即各组数据的方差是否相似。如果各组数据的方差相似,则称为方差齐性。
如果数据符合正态分布且方差齐性检验通过,则使用独立双样本t检验(ttest_ind函数)进行参数检验,以检验两组之间的均值差异。如果数据不符合正态分布或方差齐性检验未通过,则使用Mann-Whitney U检验(mannwhitneyu函数)进行非参数检验。
xxxxxxxxxx
11# A/B 测试假设
2H0: A == B
3H1: A != B
4
5是否满足正态性假设?
6A组: False, B组: False
7
8是否满足方差齐性假设: True
根据实验结果,我们进行了一项非参数测试,测试了Cookie Cats游戏中将第一个门槛从30级移到40级对玩家留存率和游戏轮次的影响。通过Levene检验,我们确认了两组数据的方差齐性,这表明了实验的可靠性。
在备择假设为双侧(Two-sided)的情况下,我们得到了一个p值为0.0509。根据通常的显著水平(α = 0.05),我们无法拒绝零假设,即我们没有足够的证据来表明A组和B组之间存在显著差异。
因此,综合考虑实验结果,我们得出结论:在我们的实验条件下,将第一个门槛从30级移到40级对玩家留存率和游戏轮次没有产生显著影响。也意味着玩家在游戏体验方面可能不会因为门槛的移动而受到影响。