使用Python进行数据科学的A / B测试-数据科学家必读指南
统计分析是预测我们的成果我们的最佳工具不知道,用我们所知道的信息。
想象一下这种情况–您最近对网站进行了某些更改。不幸的是,您无法完全准确地知道接下来访问您网站的100
这似乎是Catch-22的经典情况!
这是数据科学家可以控制的地方。数据科学家收集并研究可用数据,以帮助优化网站以获得更好的消费者体验。因此,必须知道如何使用各种统计工具,尤其是A / B测试的概念。
A / B测试
如今,A / B测试是大多数行业中广泛使用的概念,并且数据科学家处在实现这一概念的最前沿。在本文中,我将深入解释A / B测试以及数据科学家如何利用它来建议产品的更改。
目录:
什么是A / B测试?
A / B测试如何工作?
测试的统计意义
在进行A / B测试时必须避免的错误
何时使用A / B测试
什么是A / B测试?
A / B测试是一项基本的随机对照实验。这是比较变量的两个版本以找出在受控环境中性能更好的一种方法。
例如,假设您拥有一家公司并希望增加产品的销量。在这里,您可以使用随机实验,也可以应用科学和统计方法。A / B测试是最著名且使用最广泛的统计工具之一。
在上述情况下,您可以将产品分为A和B两部分。在您对B的包装进行重大更改时,A将保持不变。现在,根据分别使用A和B的客户组的响应,您尝试确定哪个性能更好。
A / B测试
资源
这是一种假设的测试方法,用于根据样本统计信息做出估计种群参数的决策。的人口是指所有的客户购买产品,而样本是指参与测试的客户数量。
A / B测试如何工作?
大问题!
在本节中,让我们通过示例了解A / B测试概念背后的逻辑和方法。
假设有一家电子商务公司XYZ。它希望对其通讯格式进行一些更改,以增加其网站上的访问量。它采用原始时事通讯并将其标记为A,并对A的语言进行一些更改,然后将其称为B。否则,两个时事通讯的颜色,标题和格式都相同。
A / B测试
目的
我们的目标是检查哪个新闻通讯会带来更高的网站访问量,即转化率。我们将使用A / B测试并收集数据来分析哪个时事通讯效果更好。
1.假设
在做出假设之前,让我们首先了解什么是假设。
假设是对自然世界的初步了解。一个尚未验证但如果为真的概念将解释某些事实或现象。
这是对您周围世界中某些事物的有根据的猜测。它应该可以通过实验或观察来测试。在我们的示例中,假设可以是“通过更改新闻通讯的语言,我们可以在网站上获得更多流量”。
在假设检验中,我们必须做出两个假设,即空假设和替代假设。让我们看看两者。
空假设或H 0:
该零假设是指出,样本观测值从纯粹偶然产生的一个。从A / B检验的角度来看,原假设表明对照组和变异组之间没有差异。它指出了要测试的默认位置或当前的状况,即现状。在这里,我们的H 0为“收到时事通讯A和B的客户的转换率没有差??异”。
替代假设或H 0:
替代假设挑战了原假设,并且基本上是研究人员认为是真实的假设。另一种假设是您可能希望您的A / B测试证明是正确的。
在我们的示例中,H a为““时事通讯B的转化率高于那些收到时事通讯A的转化率”。
现在,我们必须通过测试收集足够的证据来拒绝原假设。
2.创建控制组和测试组
一旦我们准备好了原假设和替代假设,下一步就是确定将参与测试的客户组。在这里,我们有两个组–对照组和测试(变量)组。
控制组是将接收通讯A的组,测试组是将接收通讯B的组。
在此实验中,我们随机选择1000个客户-对照组和测试组每个500个。
从总体中随机选择样本称为随机抽样。这是一种技术,可以选择总体中的每个样本的机会均等。随机抽样在假设检验中很重要,因为它消除了抽样偏差,而消除偏差也很重要,因为您希望A / B检验的结果能够代表整个总体,而不是样本本身。
我们必须注意的另一个重要方面是样本大小。要求我们在进行A / B测试之前确定最小样本量,以便消除覆盖不足的偏见。这是由于采样太少而产生的偏差。
3.进行A / B测试并收集数据
进行测试的一种方法是计算治疗组和对照组的每日转化率。由于某天某组中的转化率代表一个数据点,因此样本量实际上是天数。因此,我们将测试整个测试期间每个组的每日转化率平均值之间的差异。
当我们进行一个月的实验时,我们注意到对照组的平均转化率为16%,而测试组的平均转化率为19%。
测试的统计意义
现在,主要问题是–我们可以从这里得出结论,即测试组比对照组工作得更好吗?
答案很简单!为了拒绝我们的零假设,我们必须证明检验的统计意义。
在我们的假设检验中可能会发生两种类型的错误:
类型I错误:当原假设成立时,我们拒绝原假设。也就是说,当变体B的表现不比A更好时,我们接受它
II型错误:如果无效假设为假,我们将无法拒绝它。这意味着我们得出结论,变体B的表现不如A差
为了避免这些错误,我们必须计算测试的统计显着性。
当我们有足够的证据证明样本中看到的结果也存在于总体中时,则认为该实验具有统计学意义。
这意味着您的控制版本和测试版本之间的差异不是由于某些错误或随机机会引起的。为了证明我们实验的统计意义,我们可以使用两样本T检验。
的2 -样本t -试验是最常用的一种使用假设检验。它用于比较两组之间的平均差异。
A / B测试
资源
要理解这一点,我们必须熟悉一些术语:
显着性水平(alpha):显着性水平,也表示为alpha或α,是在原假设成立时拒绝原假设的概率。通常,我们使用0.05的显着性值
P值:这是两个值之间的差异仅仅是由于随机机会而引起的概率。P值是反对原假设的证据。p值越小,拒绝H 0的机会就越大。对于0.05的显着性水平,如果p值小于它,那么我们可以拒绝原假设
置信区间:置信区间是给定百分比的测试结果落入的观察范围。在测试开始时,我们手动选择所需的置信度。通常,我们采用95%的置信区间
接下来,我们可以使用以下公式计算t统计量:
让我们在Python中实现重要性测试
让我们看一下重要性测试的python实现。在这里,我们有一个虚拟数据,具有30天A / B测试的实验结果。现在,我们将使用Python对数据进行两个样本的t检验,以确保数据的统计意义。
将熊猫作为pd导入
将numpy导入为np
将seaborn导入为sns
将scipy.stats导入为ss
数据= pd.read_csv(“ ab_test.csv”)
您可以在此处下载示例数据。
让我们看一下数据:
data.head(10)
让我们绘制目标和对照组的分布:
sns.distplot(data.Conversion_A)
sns.distplot(data.Conversion_B)
最后,我们将执行t检验:
t_stat,p_val = ss.ttest_ind(data.Conversion_B,data.Conversion_A)
统计值
(3.78736793091929,0.000363796012828762)
对于我们的示例,观察值,即测试组的平均值为0.19。假设值(对照组的平均值)为0.16。在计算t分数时,我们得到的t分数为.3787。并且p值为0.00036。
那么这对我们的A / B测试意味着什么?
在这里,我们的p值小于显着性水平,即0.05。因此,我们可以拒绝原假设。这意味着,在我们的A / B测试中,新闻通讯B的性能要优于新闻通讯A。因此,我们的建议是将现有新闻通讯替换为B,以增加网站流量。
进行A / B测试时应避免哪些错误?
我见过数据科学专业人员犯的一些关键错误。让我在这里为您澄清它们:
无效的假设:整个实验取决于一件事,即假设。应该改变什么?为什么要更改它,预期结果是什么等等?如果您以错误的假设开始,则测试成功的可能性会降低
一起测试太多元素:行业专家告诫不要同时运行太多测试。一起测试太多元素,很难确定影响成功或失败的元素。因此,成功进行A / B测试必不可少的是确定测试的优先级
忽略统计意义:您对测试的感觉并不重要。无论测试是成功还是失败,无论一切如何,都可以使其贯穿整个过程,从而达到其统计意义
不考虑外部因素:测试应在可比较的时期内进行以产生有意义的结果。例如,由于销售或假期等外部因素,将网站流量最高的日子与流量最低的日子进行比较是不公平的。
我们什么时候应该使用A / B测试?
当测试增量更改(例如UX更改,新功能,排名和页面加载时间)时,A / B测试效果最好。在这里,您可以比较修改前和修改后的结果,以确定更改是否按预期进行。
在测试新产品,新品牌或全新用户体验等重大变化时,A / B测试无法很好地进行。在这些情况下,可能会产生比正常参与或情绪反应更高的效果,可能导致用户以不同的方式表现。
题库