Firebase Revenue AB 测试算法

Firebase Revenue AB testing algorithm

我们在 firebase 进行了 运行 AB 测试,结果如下:

我也在构建自己的贝叶斯 AB 测试套件,想知道他们是如何得出这些结论的。

我正在做的是为控制组和变体 C 查询此测试的数据:

我的算法基于这个工具:https://vidogreg.shinyapps.io/bayes-arpu-test/。当我输入这些输入时,我得到以下结果:

这个工具似乎更有信心变体 C 比对照组和 Firebase 更好。似乎每个用户的收入的 Firebase 分布是倾斜的,而贝叶斯 ARPU 工具具有非常对称的分布。

贝叶斯 ARPU 工具的代码可用。他们根据本文使用共轭先验得出这些结论:

https://cdn2.hubspot.net/hubfs/310840/VWO_SmartStats_technical_whitepaper.pdf

谁能帮我看看哪个结果最好?

我发现我的问题是什么了。

第一个问题就是要分成两步。由于它是免费增值应用程序,因此大多数用户不付费。这意味着这些用户不会为分发提供额外的信息。

所以, 我们首先需要找到付款人百分比的后验分布。这可以按照我提到的论文中的解释来完成。在 Python 中,后验分布的函数是这样的:

def binomial_rvar(successs, samples):
    rvar = np.random.beta(1 + successes, 1 + (total - successes), samples)
    return rvar

其次,在所有付款人中,我们希望获得收入。论文也描述了如何做收入,但是他们假设收入是指数分布的。我们的应用程序不是这种情况。我们有一些用户在这个应用程序上花费了大量的钱。如果这个用户属于其中一个组,这个方法会立即认为它是最好的。

我们可以做的是获取帕累托分布样本的对数,这会将帕累托分布转换为指数分布。我们首先获取用户收入的日志,然后将所有这些加在一起创建“logsum”并从它有多少用户来计算。然后我们可以使用与论文相同的方法。在 Python 中,这将是这样的:

def get_exponential_rvars(total_sum, users, samples):
    r_var = 1. / np.random.gamma(users, 1 / (1 + total_sum), samples)
    return r_var

我们现在可以将这两个 r_var 结果相乘,得出每个用户收入的最终分配。