javascript - 自适应随机化算法

标签 javascript algorithm random

要点:

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

详细信息:

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

所以它本质上是一个 2x2,其中我有 4 个条件(P1X、P1C、P2X、P2C)。我正在招募大约 120 个受试者,因此理想情况下我会在每个条件下分配 30 个受试者。

我有三个问题。

1) 根据文献,我预计我的样本中 P1 和 P2 特征之间的自然比例为 50/50。但是,我不能确定,因为我的人口不是我认为的一般人口,而一般人口是 split 估计的来源。

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

3) 另一个复杂的问题是类别 P1 和 P2 有时不太明确,而更相关。通常我们只是通过中位数拆分 P1 和 P2。它是根据几个刻度测量值(总范围 0-20)的总和确定的。然而,在我的样本中,我们可能会看到一些偏向于某一端的情况。在这种情况下,我可能不得不做一个相对比较。在这种情况下,我不知道分割样本的中位数在哪里。但无论中位数变成什么,我都会说,“这些人比 P2 更多 P1”,反之亦然。但我不知道我的样本的平均值或标准差是多少。

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

我能做的是在将人们分配给 X 或 C 之前测量他们的 P1/P2 类型。我无法在分配之前预先测试每个人,所以我只知道大局 1一次受试者,直到它用足够的样本稳定下来。

问题:

因此,简而言之,是否存在一种随机化算法可以适应这些未知数,因为我从一个实验到下一个实验了解更多?

基本上,我想测量受试者的 P1/P2 测量值,将其与截至该点的整个样本进行比较,看看他们是或多或少地处于 P2 的上半部分还是 P2 的下半部分P1。然后,在我弄清楚这一点之后,我想以一种比简单随机更好的方式将它们分配给 X 或 C,这样我将在每种情况下获得相同数量的参与者。

我不确定这是不是该问的地方,也许 Stack Cross-Validated?无论如何,如果您有任何建议,请提前致谢。

额外说明:

应用程序完全用 Javascript 编程。

最佳答案

第一个技巧,您需要一个优先级队列。谷歌给我https://github.com/adamhooper/js-priority-queue对于 JavaScript。其实你需要两个。一个给你 P2 中最小的,另一个给你 P1 中最大的。

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

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

对于你随后遇到的每个人,你将他们与 P2 中最大的人、P1 中最小的人进行比较,然后决定他们进入哪个组以及你是否需要在组之间移动某人。如果您需要移动某人,请这样做并更新计数器。然后根据他们所在的 Pi 中较不常见的情况将它们分配给治疗或控制,打破在另一个 Pi 中较不常见的联系,随机打破任何进一步的联系。

这不能保证平均分配,但它确实做出了诚意的努力来产生一个。

关于javascript - 自适应随机化算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30607316/

相关文章:

javascript - 从不同的 javascript/Jquery 函数调用 Angularjs 函数

javascript - div 高度和宽度在旋转木马 slider 中不固定

algorithm - 为什么基于排名的推荐使用 NDCG?

random - 有没有办法让 MsTest/Coded UI 测试每次都以新的随机顺序运行?

javascript - 如果页面上存在字符串则执行函数

knockout.js - 如何在 knockout js 中将值从一个 View 模型传递到另一个 View 模型?

python - Python 2.7 中的字符串替换

算法设计: Image quantization for most prominent colors

c# - 我们可以使用 OrderBy(Random) 吗?

mysql - 获取随机行,但不使用 ORDER BY RAND() MariaDB