具有潜在趋势的 A/B 测试的配对与独立 t 检验

机器算法验证 假设检验 统计学意义 t检验 精确检验
2022-04-09 02:59:51

有一个具有自然循环模式的度量。我们想通过 A/B 测试来衡量对这个指标的影响。

例子:

  1. 指标是冰淇淋车的日收入,工作日低,周末高;A/B 测试检查 2 种音乐中的哪一种会带来更高的收入。每辆卡车被随机分配到治疗中。每天我们都会得到 2 个数据点——治疗 A 和 B 中每辆卡车的平均收入。零假设是两种音乐对收入的影响相同。
  1. 指标是电子商务网站的收入,工作日低,周末高;A/B 测试以检查 2 个站点布局中的哪一个会带来更高的收入。该网站的访问者被随机分配到治疗。每天我们都会得到 2 个数据点——处理 A 和 B 中每位访客的平均收入。零假设是两种布局对收入的影响相同。

度量上的潜在循环模式违反了正常假设,并在假设样本为独立同分布时导致高 SD 这反过来导致用于测量小提升的样本量非常大。配对 t 检验在一定程度上缓解了这种情况。但所有配对的 t 检验示例似乎都围绕“同一主题的多次测量”的想法。

我的理解是,独立样本 t 检验是错误的,仅仅是因为样本不是 iid(WRT 时间的均值偏移)——这忽略了大多数测试;即使是不假设已知分布的置换检验。配对 t 检验似乎是一个合理的想法,但到目前为止还没有遇到类似的建议。

  1. 有没有可以在这里应用的简单测试?
  2. 或者我们是否需要采用“趋势去除”技术——然后应用 t 检验?

这是python中的一个综合示例(运行代码):

import numpy as np
from scipy import stats

x_data = np.linspace(0,1,101)
num_period = 3
treatment1 = np.sin(num_period*2*np.pi*x_data) + 1  # cyclic data
treatment2 = treatment1 + np.random.normal(0.05,0.05,len(treatment1))   # T1 + N(0.05,0.05)

stats.ttest_ind(treatment1,treatment2)
# Ttest_indResult(statistic=-0.5252661250185608, pvalue=0.5999800249755889)
stats.ttest_rel(treatment1,treatment2)
# Ttest_relResult(statistic=-10.13042526535737, pvalue=5.12638080641741e-17)
```
2个回答

某种配对似乎至关重要,因为您想比较周三的卡车 A 和周三的卡车 B。但是,正如您所说,循环销售模式可能往往是不正常的(但请参阅最后的注释)。为了在不担心正态性的情况下进行配对,您可以使用配对 Wilcoxon 检验。这似乎特别合适,因为两辆卡车的每周分配模式相似。

仅一周的假数据和配对的 Wilcoxon 检验,在 R 中:

x1 = c(120, 75, 80, 70, 85, 82, 130)
x2 = c(130, 89, 91, 79, 93, 99, 142)  # consistently higher
wilcox.test(x1,x2, pair=T)

         Wilcoxon signed rank test

data:  x1 and x2
V = 0, p-value = 0.01563
alternative hypothesis: 
  true location shift is not equal to 0

两辆卡车销量相似的零假设被 P 值 0.016 < 0.05 拒绝,即使周日和周六的每周销量都呈上升趋势。

没有配对的双样本 Wilcoxon 测试不会检测到第二辆卡车的销量始终较高。[有一条关于平局的警告信息(此处未显示),因此 P 值可能不完全正确。]

wilcox.test(x1,x2)$p.val
[1] 0.1792339

注意:在判断配对 t 检验的正态性时 ,应检验配对差异的正态性。他们可能不像单辆卡车的销售那样表现出积极的每周模式。

一种方法可能是使用混合模型,其中包含一天的指标 + 卡车 ID 的随机效应。这样,您可以考虑任何卡车水平变化并通过指标评估处理的效果。这听起来是可行的,特别是如果您有大量数据来弥补指标使用的自由度。

这是如何执行此操作的示例。我有 10 辆卡车,每辆卡车的销售额都是在一周内衡量的。我们假设每辆卡车由于司机的不同而存在一些差异(或者其他原因,也许一辆卡车比旧的卡车更新并且更具吸引力,谁知道呢)。假设的干预使销售额增加了 2 个单位。这是一个数据图,其中每条线代表特定卡车,颜色表示治疗组。

在此处输入图像描述

此数据的线性混合效应模型可能看起来像


model = lmer(sales ~ factor(ndays) + trt + (1|truck), data = design )

trt假设您假设附加效应(每天的销售额增加相同的数量,而不仅仅是周末),您对变量的测试进行了测试。这是每辆卡车的模型图,其中数据绘制在模型上,并带有不透明度。

在此处输入图像描述

最后,我确信有一种方法可以在没有混合效果模型的情况下做到这一点。在我自己看来,回归是考虑这类比较的一种自然方式,但巧妙计算的 t 检验可能能够完成同样的事情。认为这种方法是最直接的(就它直接考虑生成过程而言),但可能不是最简单甚至最好的。