1. 什么是试验样本预估

当我们的试验方案和观测指标都已经确定后,我们还需要解决一个问题:到底用多少流量是合适的?

在回答这个问题之前,我们需要了解一个公式:

根据以上公式,试验总样本量是和试验的运行时长是强相关的。所以询问试验样本量需要多少才合适?等同于在询问,试验运行多久合适?大多数人第一反应肯定是样本量越大越好,试验时间越长越好。从统计结果可靠性来讲,试验周期更久、样本量更多的A/B测试更严谨且有说服力。

然而在实际业务中,碍于各种原因我们并不能只依据理论行动,因为样本量越小、试验时间越短时,也有3个明显的好处:

  • 迭代速度越快:更小的样本量缩短了试验运行周期。
  • 可做试验越多:更小的样本量可以使在相同时间下做更多的试验。
  • 试错成本越小:更小的样本量减小了试验受众范围,降低了试错成本。

综上所述,我们需要在实践和理论中做一个平衡:既要保证样本量足够,又要把试验控制在更短的时间范围内。在这里,我们将能够帮助我们达成这种平衡的数值称为「试验最小总样本量」。然后,我们再将公式中的另一个要素「每日可获得样本量」进行确定,最终即可确定「试验所需运行时长」。

2. 如何进行试验最小样本量预估

温馨预警:本章将介绍背后的计算原理,如果您只希望知晓最终所需的样本量,可以越过本章节直接阅读「 如何借助神策系统预估试验样本」 。

2.1. 最小试验总样本量预估

我们直接给出「试验每组最小样本量 N 」的预估公式:

以上公式中,熟悉统计学的小伙伴都知道,「5%的Z分数」和「80%的Z分数」是两个固定不变的数值,可以直接使用,如果我们想改变它们也很方便,查表即可得到。

因此,我们需要解决的问题是「评价指标的差值Δ」和「综合方差σ」如何确定。对此,我们需要按核心指标的类型分为「比率类试验」「绝对值类试验」两种情况来处理。

2.1.1. 比率类试验预估

2.1.1.1. 比率类试验的评价指标差值

所谓评价指标的差值就是「试验组转化率」-「对照组转化率」,公式如下:

但是在实际开展试验之前,我们是没有这两个组的数据的,因此,我们会对此公式做一个变化,变更为:

「期望通过优化提升到的转化率水平」-「试验前的转化率」,即为我们期望得到的「转化率提升区间」。

举例:我们在做试验之前某个流程的转化率为10%,通过本次优化,我们期望提升到15%,因此,这个「评价指标的差值Δ」就是「5%」。

2.1.1.2. 比率类类试验的综合方差

由于比率类试验的场景,用户只可能有两种结果,即「转化」或「不转化」,因此,它是符合二项分布。在二项分布的情况下,我们一般认为其方差是已知的,所以综合方差也是已知的,所以可以使用以下公式计算得出:

其中「p1」指的是「试验组转化率」,「p2」指的是「对照组转化率」。当然,和计算差值时一样,我们会遇到实际上并没有两个组数据的问题,因此也会对此公式做一个变化,变更为:

「p1」指的是「期望通过优化提升到的转化率水平」,「p2」指的是「试验前的转化率」。

根据以上方法,我们就确定好了「评价指标的差值」和「综合方差」,也就可以计算出比率类试验每组最小样本量 N 了。

2.1.2. 绝对值类试验预估

2.1.2.1. 绝对值类试验的评价指标差值

通常绝对值类试验的核心指标是一个人均值指标,比如:人均交易金额、人均使用时长等

而所谓评价指标的差值就是「试验组核心指标人均值」-「对照组核心指标人均值」,但是在实际开展试验之前,我们是没有这两个组的数据的,因此,我们会对此公式做一个变化,变更为:

「期望通过优化提升到的核心指标人均值水平」-「试验前的核心指标人均值」,即我们期望得到的「核心指标人均值提升区间」。

比如,我们在做试验之前,用户在30天内的平均交易金额为100元,通过本次优化,我们期望提升到150元,因此,这个「评价指标的差值」就是「50元」。

2.1.2.2. 绝对值类试验的综合方差

而由于绝对值类试验不是二项分布,因此我们是不知道它的总体方差的,所以需要将每个数据点的表现都记录下来,放入以下公式中计算:

这里的X1i、X2i指的是各组的单个数据点的值,n指的是各组的样本容量,x上加一个杠指的是各组的数据均值。

看到这里,大家就得犯难了,根本还没有进行试验啊,这些数据点是不可能被获得的,所以「绝对值类试验的综合方差」理论上是事前是无法算出来的。正因如此,您也会发现在网络上可以搜到的样本量计算工具,只有比率类试验的计算工具,而并没有绝对值类试验的计算工具。

那么,我们只能退而求其次,用试验前的「核心指标方差」来替代,毕竟,它是所有我们能拿到的数据中,最贴近「综合方差」的指标了。

试验前的核心指标方差公式:

根据以上方法,我们就确定好了「评价指标的差值」和「综合方差(替代品)」,也就可以计算出绝对值类试验每组最小样本量 N 了。

3. 如何借助神策系统预估试验最小样本量

3.1. 最小样本量预估工具

在神策的试验创建流程中,我们为大家提供了样本量的预估工具,可结合历史数据计算出部分数值,帮助我们快速地评估最小样本量。

3.1.1. 比率类最小样本量计算工具

如下图所示,比例类的最小样本量计算器,需要填写4个参数:

计算参数参数含义设置方法可自动填充
核心指标均值

指在做试验前的转化率。

例如试验前,某页面当前的转化率为10%。

由于我们在之前的试验创建步骤中已经设置了核心指标,因此该数值神策系统会基于近七天的数据自动计算得到。如果因历史数据不足导致计算失败或您觉得该口径不够准确,也可以自行到神策的事件分析、漏斗分析中计算出您认为恰当的数值后在本空格中填入。

核心指标目标值

指您期望达到的转化率水平。

例如,某个页面的转化率当前为10%,我们期望做了这次优化后,能够提升到15%

该值是一个主观期望值,是需要您自己填写的。当然为了使您拍脑袋的过程更加科学,我们建议您到事件分析或漏斗分析中了解该数值历史上的波动范围,以避免提出的期望值过低或过高。
统计功效

如果试验组和对照组实际上真的有差异,那么我们能够正确地发现这个差异的概率。

这就意味着如果确实有版本提升的话,我们不会错过这个版本的概率。

一般来说,统计功效默认设为80%。

支持调整为50%、80%、90%、95%、99%

置信水平

如果试验组和对照组实际上没有差异,那么我能够正确地判断他们没有差异的概率。

这就意味着其实两个版本没有效果差别,因此我们不会贸然采纳新版本的概率(毕竟即使效果相同,新版本也可能存在未知的风险)

一般来说,置信水平默认设为95%。

支持调整为80%、85%、90%、95%、99%

最终我们会得到2个数值,第一个是每组所需的最小样本量的数值,第二个是我们通过试验组的个数和流量分配情况,换算出的试验总体所需的样本数量。

3.1.2. 绝对值类最小样本量计算工具

如下图所示,绝对值类的最小样本量计算器,需要填写5个参数:

计算参数参数含义设置方法可自动填充
核心指标均值

指在做试验前的核心指标均值水平。

例如,我们在做试验之前,用户在7天内的人均交易金额为100元。

由于我们在之前的试验创建步骤中已经设置了核心指标,因此该数值神策系统会基于近七天的数据自动计算得到。如果因历史数据不足导致计算失败或您觉得该口径不够准确,也可以自行到神策的事件分析、漏斗分析中计算出您认为恰当的数值后在本空格中填入。

核心指标目标值

指您期望达到的核心指标均值水平。

例如,我们在做试验之前,用户在7天内的人均交易金额为100元。通过本次优化,我们期望提升到150元。

该值是一个主观期望值,是需要您自己填写的。当然为了使您拍脑袋的过程更加科学,我们建议您到事件分析或漏斗分析中了解该数值历史上的波动范围,以避免提出的期望值过低或过高。
核心指标标准差

上个小节我们提到,我们需要将综合方差带入公式中进行计算,但由于实际上我们得不到综合方差,所以使用核心指标近一段时间的标准差带入计算。

其公式为:

由于我们在之前的创建步骤中已经设置了核心指标,因此该数值我们会基于近七天的数据自动计算得到。如果因历史数据不足或者您觉得该口径不够准确,也可以通过其他方式,如SQL查询等方式计算,并将计算得到的数据在本空格中填入。
统计功效

如果试验组和对照组实际上真的有差异,那么我们能够正确地发现这个差异的概率。

这就意味着如果确实有版本提升的话,我们不会错过这个版本的概率。

一般来说,统计功效默认设为80%。

支持调整为50%、80%、90%、95%、99%

置信水平

如果试验组和对照组实际上没有差异,那么我能够正确地判断他们没有差异的概率。

这就意味着若实际上两个版本没有效果差别,我们不会贸然采纳新版本的概率(毕竟即使效果相同,新版本也可能存在未知的风险)

一般来说,置信水平默认设为95%。

支持调整为80%、85%、90%、95%、99%

最终我们会得到2个数值,第一个是每组所需的最小样本量的数值,第二个是我们通过试验组的个数和流量分配情况,换算出的试验总体所需的样本数量。

4. 如何借助神策系统预估试验每日可获得样本量

4.1. 可获得样本量预估工具(事件分析)

通常我们的试验场所都是在某个页面进行的,因此如果事先已有较完善的埋点,就可以通过神策数据的事件分析模型计算「每日可获得样本」。

假设我们希望在「充值页面」进行试验,那么我们应该去计算一下「充值页面浏览人数」指标在一段时间内的累计情况,以下将以本场景为例,为大家讲解配置步骤和计算方法:

(1)在事件分析中设置事件为「充值页面浏览」,设置指标为「用户数」,根据过往经验,我们可能会做一个月左右的试验,那么我们可以将观察周期设为近30天。

(2)等待查询计算完成后,我们可以得出每日的趋势以及近30天的合计值(模拟数据),并得出以下结论:

  • 该事件的每日UV为2000人左右
  • 该事件近30天的总UV为31000左右

看到这里,小伙伴可能会注意到,实际上每日的UV加起来是要高于近30天总UV的,那是因为很多用户会在一段时间内重复访问,因此,我们在计算每日可获得样本时,通常是取一段长时间内的去重UV,而不直接使用日UV,具体的去重周期可以尽可能长,但总体上只要符合我们一般做试验的周期长度即可。

(3)计算我们的每日可获得样本

每日可获得样本 =近30日总UV / 30日 = 31376 / 30 ≈ 1000 人左右

5. 如何确定试验运行周期

实际上,当我们预估得到了「试验最小总样本量」和「每天可获得样本量」之后,我们做一个简单的除法就可以得到「试验所需的运行时长」。

但是,我们还需要提醒大家注意以下两点:

  • 当心其他试验的截流:也许您的试验层中还有其他试验,您的可获得样本量并不是全部的流量,所以可获得的样本量还需要乘以一个分配比例
  • 注意覆盖完整的周期:假设我们的流量十分充沛,通过公式计算出来我们也许只需要1~2天即可保证95%置信区间的显著性,但是如果我们在周末实施试验,这么短的周期内的试验效果也是不可取的,因为这些周末访问的用户并不一定能代表全体用户的情况,因此至少要跑满一整个行为表现的周期(如一整个自然周、自然月)来保证参与试验的样本对用户整体是有较高的代表性的。

6. 常见问题列表

6.1. 如何准确理解置信水平、统计功效,他们的实质业务意义是什么?

答:我们以工作场景出发来讲解这些概念:首先我们有一个原始版本,但希望对该版本进行优化,使指标有所提升,因此我们开发了一个新版本。一般情况下,如果新版本没有显著的提升我们是不可以贸然接受新版本的,因为总可能存在些未知风险甚至BUG。

此时我们通常会定一个原假设:新版本相比旧版本并「没有显著提升」。

接下来我们会进行观测 ,只要后续实际表现是提升的不够多,少到我们认为大概率(95%)只是出于偶然的波动,那么就应该维持原版本不动。但若后续实际表象是提升的幅度很大,达到我们认为这几乎不可能发生,因为其发生概率实在太小了(5%)。因此只要发生,可以认为其不是偶然,是我们的优化所造成的,我们可以接受新版本。以上为背景,我们接下来解释置信水平和统计功效:

置信水平:假设我们使用上帝之眼知道真实情况是「新版本和旧版本没有差别」,那么我们靠实际观测的数值可以正确的不发现差别的概率,即为置信水平。一般设置为95%,即想要让我们认为各组数值有差别是非常难的,除非他们差别非常非常大。但仍然有5%的可能实际上没差别却在数值上发生了巨大差异,导致我们错误的认为新版本更好并且接受了它,我们不但没得到收益还承担了未知风险

统计功效:假设我们使用上帝之眼知道真实情况是「新版本比旧版本确有差别」,那么我们靠实际观测的数值可以正确的发现差别的概率,即为统计功效。一般是设置为80%,为什么会比置信水平低呢?因为犯错误的代价没那么糟糕,如果我们犯错误了(20%的可能性两组试验数值非常接近,使我们认为他们没差别),无非是保持原版本而已

一句话总结:

  • 若现在我们按正常的规矩做决策,置信水平是我们不会平白无故承担新版本未知风险的概率,统计功效是我们不会错过一个好的新版本的概率。

6.2. 如果我们发现一个指标长时间不显著时该如何决策?

答:首先我们从发现差异的敏感度的角度来聊聊这个问题,从本质上来说,试验样本越多,能够帮助我们检验出的指标差异就越细微。

举连个例子:(假设置信水平95%,统计功效80%)

  • 检验10%转化率是否显著提升到15%,只需要683样本(每组)
  • 检验10%转化率是否显著提升到11%,却需要14749样本(每组)

样本量越多,仅仅是检测得越细微!但不并不是意味着做的越久,指标就会慢慢变高,比如做2周时提升了1%,做3个月数值就能变成5%,这几乎是不可能的,显著和不显著时都仅仅是1%上下小波动而已。如上所说,如果一个优化带来提升的幅度非常小,小到难以用那么多样本量来侦测,那么即使它最后显著了,对我们业务的意义也是非常小的!

因此,我们提倡做试验前先人为提出期望提升范围(即新方案的预期指标值与当前指标值的差值)

接下来用人话解释,做试验前先想好整体业务目标和期望收益,比如「我们期望在这个指标上提升2%,不提升2%我们的整体月度目标就完不成!」如果这个试验做了2星期,我们发现它的提升量级这段时间的提升量级也就在维持在0.1%左右,那就不用再等它显著了,一般两周到一个月就可以停止试验,也许等3个月它真会显著,但从我们的期望出发,它根本不重要了。

这时,我们可以做的事情:

  1. 观测统计功效:当一个试验版本有所提升但不显著,导致难以决策时,实际上我们是在担心会不会错过一个好版本。如果此时,我们能知道错过好版本的概率,也可以帮助我们决策。因此我们可以观察统计功效是否已经大于80%,若已经大于80%,也就意味着我们错过好版本的概率已经低于20%,那就可以坦然放弃这个新版本了。
  2. 放宽置信区间:如果我们的试验只是做些小改动,如改个样式之类,并不涉及底层运行逻辑,那么它潜在BUG的可能性会比较低。此时,80%置信水平也足以,若80%也可以显著就接受新版本吧。当然,倘若新版本发生bug可能性还是存在的,就请直接放弃新版本。最终,我们需要聚焦回业务KPI,赶快开始策划更多新试验。