我是从事A / B测试系统的软件开发人员。我没有扎实的统计背景,但过去几个月一直在学习知识。
典型的测试方案包括比较网站上的两个URL。访客访问LANDING_URL
,然后随机转发给URL_CONTROL
或URL_EXPERIMENTAL
。访客构成一个样本,并且当访客在该站点上执行某些所需的操作时,就会达到胜利的条件。这构成转化,转化率就是转化率(通常表示为百分比)。给定URL的典型转换率在0.01%到0.08%之间。我们运行测试以确定新URL与旧URL的比较。如果URL_EXPERIMENTAL
被证明优于URL_CONTROL
,我们替换URL_CONTROL
用URL_EXPERIMENTAL
。
我们使用简单的假设检验技术开发了一个系统。我在这里使用另一个CrossValidated问题的答案来开发此系统。
测试设置如下:
- 转化率估计
CRE_CONTROL
的URL_CONTROL
使用历史数据来计算。 - 所希望的目标转化率
CRE_EXPERIMENTAL
的URL_EXPERIMENTAL
是集。 - 通常使用0.95的显着性水平。
- 通常使用0.8的幂。
所有这些值一起用于计算所需的样本量。我正在使用R函数power.prop.test
来获取此样本大小。
测试将一直进行到收集所有样品为止。此时,计算CR_CONTROL
和的置信区间 CR_EXPERIMENTAL
。如果它们不重叠,则可以宣布具有0.95的显着性水平和0.8的功效的获胜者。
但是,我们测试的用户有两个主要问题:
1.如果在测试过程中的某个时刻收集了足够的样本以显示明显的获胜者,是否可以停止测试?
2.如果在测试结束时没有宣布优胜者,我们是否可以进行更长的测试以查看是否可以收集足够的样本来找到优胜者?
应该注意的是,存在许多允许他们的用户完全按照我们自己的用户期望做的商业工具。我读到上面有很多谬论,但是我也遇到了停止规则的想法,并想探索在我们自己的系统中使用这种规则的可能性。
我们要考虑以下两种方法:
1.使用power.prop.test
,将当前测得的转换率与当前样本数进行比较,查看是否已收集到足够的样本来宣布获胜者。
示例:已设置测试以查看我们的系统中是否存在以下行为:
CRE_CONTROL
:0.1CRE_EXPERIMENTAL
:0.1 * 1.3- 使用这些参数,样本量
N
为1774。
但是,随着测试的进行并达到325个样本,CRM_CONTROL
(测得的对照转化率)为0.08,CRM_EXPERIMENTAL
为0.15。power.prop.test
是以这些转化率运行的,N
得出的是325。确切地说CRM_EXPERIMENTAL
,要成为赢家,需要的样本数量!在这一点上,我们希望测试能够结束。类似地,如果测试达到1774个样本但未找到获胜者,但随后达到2122个样本,这足以表明结果CRM_CONTROL
0.1和CRM_EXPERIMENTAL
0.128是可以宣布获胜者的结果。
在一个相关的问题中,用户建议这种测试的可信度较低,这是因为鼓励提早停止采样,减少样本数量,而且容易受到估计偏差的影响,并且I型和II型错误的数量增加。有什么方法可以使此停止规则起作用?这是我们的首选方法,因为这对我们意味着更少的编程时间。也许此停止规则可以通过提供某种数值分数或一些分数来衡量测试的可信度而起作用,如果测试应尽早停止呢?
这些测试方法是专门针对我们所处的情况而设计的:我们的用户如何开始测试并以不浪费过多测试时间的方式结束测试?运行测试时间过长,或者必须使用不同的参数重新开始测试。
在上述两种方法中,我更喜欢SPRT,因为数学对我来说更容易理解,并且看起来似乎更容易编程。但是,我不明白如何在这种情况下使用似然函数。如果有人可以构造一个示例,说明如何计算似然比,似然比的累积总和,并继续执行一个示例,说明当某人继续监视,何时接受零假设和替代假设时的情况,这将有助于我们确定SPRT是否是正确的方法。