A/B 测试排序算法

A/B testing sorting algorithm

我想制作一个算法,使 A/B 能够对可变数量的受试者进行测试,每个受试者具有可变数量的属性。

比如我有1000个人,有以下属性:他们来自两个部门,有的是经理,有的是女性等。这些属性可能increase/decrease视情况而定。

我想制作一种算法,将人口一分为二,并在所有属性的 A 和 B 中尽可能最好地表示。所以我想要两组 500 人,两个部门的人数相等,经理人数相等,女性人数相等。更具体地说,我想保持 A 和 B 中每个 属性 的比例。因此,如果我们有 10% 的经理,我希望 10% 的样本 A 和样本 B 是经理。

关于从哪里开始的任何指示?我很确定存在这样的算法。我有一种直觉,在某些情况下这可能无法解决,因为经理和女性和部门 1 的数量可能是奇数。

列出所有 a/b 变量的排列。

 Dept1,Manager,Male
 Dept1,Manager,Female
 Dept1,Junior,Male
 ...
 Dept2,Junior,Female

遍历所有人并将他们分配给各自的排列。也许首先随机化人员的顺序只是为了确保他们被添加到每个排列的顺序没有偏差。

 Dept1,Manager,Male-> Person1, Person16, Person143...
 Dept1,Manager,Female-> Person7, Person10, Person83...

有第二个过程,通过每个排列并将一半的人分配给一个测试组,另一半分配给另一个测试组。您将需要考虑组中的奇数人数,但这应该很容易考虑在内,显然更大的样本量会减少这个奇数对最终结果的影响。

分组的算法很简单 - 将所有维度都相同的每一组人分配给治疗组,一半分配给对照组。您无需担心人数奇数,无论您使用何种统计测试都会解决这一问题。如果某些维度如此倾斜(即,整个样本中只有 2 名女性),则明智的做法是将维度丢弃。

简单的 A/B 检验通常使用 t 检验或 g 检验,但在您的情况下,您最好使用 ANOVA 来确定每个处理的显着性各个维度。