自适应随机化算法

时间:2015-06-02 21:56:29

标签: javascript algorithm random

要点:

我正在寻找一种随机化算法,可以针对每个受试者,查看所有先前的测量,确定受试者是否会落入高端或低端,然后确保这些组中的大约一半被分配到实验条件。

详细信息:

我正在构建一个有两个独立变量的研究应用程序。一个是我可以分配的实验性操作。我们称之为X(实验)和C(控制)。另一种是具有两种分类类型的个人特征,通过量表来衡量。我们将这些称为P1(类型1)和P2(类型2)。

所以它基本上是2x2,我有4个条件(P1X,P1C,P2X,P2C)。我正在招募大约120个科目,所以理想情况下我会分配30个科目。

我有三个问题。

1)根据文献,我预计样本中P1和P2特征之间会有50/50的自然分离。但是,我无法确定,因为我的人口不是我所考虑的普通人口,而这是一个分裂估计来源的地方。

2)X或C操作的简单随机化不一定能保证均等分布。这加剧了第一个问题,就像我看到的那样P1 40%和P2 60%分裂,50%(X或C)48分给我24人。当然,情况可能会更糟。如果对于这个较小的子样本,实验操作的随机分配最终小于50%,那么再次,它可能更糟。令人担心的是,我可能会留下太少的样本来进行分析。

3)另一个复杂因素是P1和P2类别有时不太明确且相对较多。通常我们只是通过中位数分割P1和P2。它是根据几个尺度测量的总值确定的(总范围0-20)。但是,在我的样本中,我们可能会看到一些偏向某一端。在这种情况下,我可能需要进行相对比较。在这种情况下,我不知道分割样本的中位数。但无论中位数如何变化,我都会说“这些人比P2更多P1”,反之亦然。但我不知道我的样本的平均值或标准差是多少。

我在实验中可以做些什么:

我可以做的是在分配给X或C之前测量人的P1 / P2类型。我无法在分配前预先测试每个人所以我只会知道更大的图片1一次受试者,直到它有足够的样本稳定。

问题:

所以简而言之,问题是,是否存在可以适应这些未知数的随机化算法,因为我从一个实验到下一个实验都知道更多?

基本上我想测量受试者的P1 / P2测量值,将其与整个样本进行比较直到该点,并找出他们是或多或少可能在上半部分朝向P2或下半部分朝向P1。然后在我想出这个之后,我想以一种确保比简单随机更好的方式将它们分配给X或C,我将在每种条件下获得相同数量的参与者。

我不确定这是否是正确的问题,也许Stack Stack-Validated?无论如何,如果你有一些建议,请提前谢谢。

额外注意事项:

应用程序完全用Javascript编程。

1 个答案:

答案 0 :(得分:1)

第一招,你需要一个优先级队列。谷歌为我提供https://github.com/adamhooper/js-priority-queue JavaScript。其实你需要两个。一个给你最小的P2,另一个给你最大的P1。

完成后,您需要为4组保留4个计数器。

第一个人被随机分配到控制或实验。第二个分配给另一个,然后将两个分配给P1和P2。然后将计数器初始化为1和0。

对于您遇到的每个后续人员,您将它们与P2中的最大值进行比较,最小值为P1,并确定它们进入哪个组以及是否需要在组之间移动某个人。如果您需要移动某人,请执行此操作并更新计数器。然后将它们分配给治疗或控制,基于它们在Pi中不太常见,打破其他Pi中不太常见的关系,随机打破任何进一步的关系。

这不能保证均匀分裂,但它确实能够真诚地生成一个。