使用泊松和/或二项分布分析拆分 (A/B) 检验

数据挖掘 r 测试
2022-03-07 21:24:42

从 Cross Validated 交叉发布:

我以前看过这个问题,但我还没有找到一个明确的来源来回答具体问题:

  • 最适合应用于小型 A/B 测试的统计测试是什么?
  • 分析小型 A/B 测试的 R 代码和解释是什么?

我正在进行一项小型测试,以确定哪些广告效果更好。我有以下结果:

位置一:

variation,impressions,clicks row-1,753,26 row-3,767 7

位置 2:

variation,impressions,clicks row-1,753,16 row-3,767 13

位置 3:

variation,impressions,clicks row-1,753,2 row-3,767 7

我认为可以肯定地说这些数字很小并且可能不是正态分布的。此外,它是点击数据,因此存在点击与否的二元结果,并且试验是独立的。

适当的测试

在分析每个位置的重要性时,我认为与二项式或泊松分布进行比较是最有意义的。

根据OpenIntro Stats(和其他来源)一书,变量遵循泊松分布“......如果所考虑的事件很少,则人口很大,并且事件彼此独立发生。”

相同的来源以大致相同的方式对二项式变量进行分类,加上成功概率相同且试验次数是固定的。

我很欣赏这不是一个非此即彼的决定,并且可以使用这两种分布来完成分析。

鉴于 A/B(拆分)测试是一门已经实践多年的科学,我想有一个规范的测试。但是,环顾互联网,我大多遇到使用标准正态分布的分析。这似乎是错误的:)

是否有规范的测试可用于具有少量点击的 A/B 测试?

解释和R代码

我使用以下 R 代码来测试每个位置的重要性:

位置一:

binom.test(7, 767, p=(26/753))

Exact binomial test

data:  7 and 767
number of successes = 7, number of trials = 767, p-value = 1.077e-05
alternative hypothesis: true probability of success is not equal to 0.03452855
95 percent confidence interval:
 0.003676962 0.018713125
sample estimates:
probability of success 
           0.009126467

我将这个结果解释为:测试组的成功概率确实与对照组不同,95% 的置信区间表明成功概率在 0.368% 和 1.87% 之间

ppois(((26-1)/753), lambda=(7/767), lower.tail = F)
[1] 0.009084947

我将这个结果解释为:给定泊松分布,每 767 次试验的点击率为 7,在同一分布中,每 753 次试验的点击率为 26 或更多的可能性为 0.9%。在广告示例中进行情境化,控制广告实际执行与测试广告相同的可能性为 0.1%。

上述解释正确吗?测试和解释是否随着位置的不同而变化(即泊松测试的结果是否更适合位置 3 给定的小数字)?

3个回答

好的,这是你的数据。

dd <- data.frame(position=rep(1:3, each=2), 
                 variation=rep(c(1,3), 3), 
                 impressions=rep(c(753, 767), 3), 
                 clicks=c(26,7,16,13,2,7))

这是

  position variation impressions clicks
1        1         1         753     26
2        1         3         767      7
3        2         1         753     16
4        2         3         767     13
5        3         1         753      2
6        3         3         767      7

您正在考虑的两个模型假设是二项式

mod.bin <- glm(cbind(clicks, impressions-clicks) ~ variation + position,
               family=binomial, data=dd)

其中因变量被构造为在第一列中包含感兴趣事件的计数,以及泊松

md.pois <- glm(clicks ~ variation + position + offset(log(impressions)), 
               family=poisson, data=dd)

log(impressions)试验次数因观察而异时,偏移量是必要的。这意味着系数可以根据速率变化而不是计数变化来解释,这正是您想要的。

第一个模型将 泛化binom.test到具有协变量的设置,这就是您所拥有的。这可以让您更直接地回答您的问题,并更好地(如果不完美)测量相关的不确定性。

笔记

两种模型都假设变化和位置之间没有相互作用(“独立效应”)。这可能是合理的,也可能是不合理的。您需要更多的复制来正确调查。交换+a*这样做。

在此数据summary中证实了这两个模型给出了相当相似的结果,因此对泊松与二项式的担忧似乎并不重要。

在野外,计数数据通常是过度分散的,即:比您对​​具有恒定点击率的泊松或具有恒定点击概率的二项式的预期变化更大,通常是由于点击率/概率的未建模决定因素。如果是这种情况,那么这些模型的预测间隔将太窄。

正确的模型是二项式的,泊松和正态都只是近似值。二项式 pdf 是在零和试验次数之间的整数上定义的。泊松是在 0 到无穷大之间的整数上定义的,而正常是在 +/- 无穷大之间的所有实变量上定义的。

换句话说:对于泊松,点击次数多于展示次数的概率(可能很小)但非零。对于高斯,你甚至可以有负面点击。当然,特定的参数决定了这有多大的影响......可能值得绘制相应的 pdf

近似 Binomial(k,n,p) ~= Poisson(k,s) (其中 s = n*p)可以在以下假设下显示:
1)n >> k(即 n!/(nk)! ~= n^k),
2) p <<1(即 (1-p)^(nk) ~= (1-p)^n)。
这些是否足够满意取决于您。如果可以快速完成精确的计算,在我看来,很高兴继续这样做。

此外,如果第 3 行样本的概率与第 1 行样本的概率不同,它几乎肯定会在较低的一侧。您最好使用
binom.test(7, 767, p=(26/753), alternative='less') 最终选项,表明您的零假设的替代方案是概率小于 26/ 753,不等于。当然,这只是从 0 到 7 的二项式概率之和(您可以检查自己),解释是是从随机机会中获得最多 7 次掷骰的概率,如果概率真的是 26/753。

请记住最后一句话的解释。当我们知道我们要比较的固有概率是多少时,通常会使用这些类型的测试(例如,查看抛硬币的概率是否与我们期望的公平硬币的 1/2 显着不同) . 在这种情况下,我们不知道我们要比较的概率是多少,我们只是做出非常粗略的猜测,即第 1 行的 26/753 结果反映了真实概率。在这种情况下,它比常规的正态 t 检验要好,但除非您在第 1 行有更大的样本量,否则不要在其中放太多库存。