在随机分配治疗分配之前如何分组?

机器算法验证 多重回归 实验设计 因果关系
2022-04-22 00:44:17

考虑以下示例。您想评估新课程相对于旧课程对教育成果的影响。您已经招募了名受试者进行随机对照试验,并获得了他们每个人先前技能的衡量标准(例如,通过在注册时进行的测试)。N

你的任务是提供一个实验设计,该设计包含一个协议,用于 1. 将科目分类到教室和 2. 将生成的教室分配给新的或旧的程序。C

什么是最优实验设计?

我的第一个解决方案是将科目随机分配到类中(形成大小为的类),然后将一半的类随机分配给新程序,其余的分配给旧程序。Cs=N/C

我能做得更好吗?如何使用基线技能度量来改进我的解决方案?

4个回答

一种合理的方法是使用块随机化,您可以创建非随机的受试者块,将类似受试者分组在一起(例如,通过先前的技能变量),然后通过将块中的人随机分配到不同的治疗中来创建随机组团体。这为您提供了随机的治疗组,但它也减少了治疗组与先前技能变量之间的共线性,这在您通过回归方法分析模型时具有以后的优势。

为简单起见,假设您有科目,其中(即,假设您的科目数是所需组大小的精确倍数),并假设每个科目都有一个协变量代表他们先验技能。在这种情况下,您将通过按分数对主题进行排序,然后在这些分数上取连续的块块。因此,您将有一组科目得分最低,另一组科目得分次之,等等。然后您将科目的每个块分配给N=sCsNzisCCCCC随机治疗组(通过随机排列)。对于您具有所需组大小的精确倍数的简单情况,您可以R按如下方式实现:

#Generate mock data containing ID and Score for each subject
N    <- 400;
DATA <- data.frame(ID = 1:N, Score = ceiling(runif(N)*100));

#Allocated blocks to subjects
S    <- 40;
C    <- N/S;
BBB  <- rep(1:S, each = C);
RRR  <- rank(DATA$Score, ties = 'first');
DATA$Block <- BBB[RRR];

#Randomise into treatments
set.seed(12345);
TTT  <- rep(0, N);
for (s in 1:S) { TTT[((s-1)*C+1):(s*C)] <- order(runif(C)); }
DATA$Treat <- TTT[RRR];

您希望在各个班级之间平衡先前的技能,因为它们可能会影响结果并混淆结果。这类似于需要控制已知影响预后的协变量的临床试验。这是通过分层随机化https://www.statisticshowto.datasciencecentral.com/stratified-randomization/)在分配级别完成的。

在您的情况下,这将包括将基线测量的样本划分为个分位数。然后,个学生子组中的每一个被随机但均匀地分配到个班级。一个好的值将取决于kkCkNC

好的是,无论您如何将学生分配到班级,只要您将班级随机分配到治疗中,您的效果估计就不会混淆。但是,理想情况下,您希望各治疗组之间的班级构成平均相同(即,基线技能在治疗教室之间的分布与在对照教室之间的分布相同)。这是您可以执行此操作的一种方法:

就基线技能对学生进行匹配。这意味着对于每个学生,找到一个具有相似基线技能的学生并将他们配对。您可以尝试最小化一些成对不平衡的全局度量,以确保没有人与与他们相差太大的人配对。例如,如果您要使用贪心算法,第一个配对的学生将与离他们最近的学生配对,而最后配对的学生将必须与剩下的任何人配对,谁可能不是那么近. 最佳匹配算法可能会产生一组对,其中每个成员之间的距离平均较小,而较大的距离会受到惩罚。每对中的一名成员最终将接受治疗,另一名成员进行控制。这种类型的匹配(即,在分配治疗之前)称为非二分匹配。有一些软件包可以做到这一点。我发现的一个是nbpMatchingR 包。我相信designmatchR 包也可以做到这一点。

一旦您有了匹配的配对,我们希望将配对分配到教室块中。如何做到这一点并不重要,因为无论如何治疗效果都是公正的,但是为了减少课堂内治疗效果的变异性,您可以根据平均成对基线技能创建对的层,然后制作每个层(或随机将地层的块)切成教室块。这样,每个教室块将包含基本技能水平大致相同的配对。在每个教室区块内,随机分配每对中的一名成员进行治疗,另一名进行控制。被处理的学生成为他们自己的教室,而被控制的学生成为他们自己的教室(即,每个教室块分成两个教室,一个被处理,另一个被控制)。

这种设计的价值在于它广泛使用了配对和分层。学生被交叉分类为学生对和教室。由于配对中的学生彼此相似,因此在分析中以配对成员为条件将大大提高效果估计的精度。同样,由于教室街区内的教室彼此相似,因此以教室街区成员身份为条件将提高估计的精确度。允许治疗效果在课堂上有所不同还可以让您评估平均课堂水平的基线技能可能会改变治疗效果的程度。

您的最终分析可能是一个多层次模型,结果是学生表现,学生对的随机效应,课堂的固定或随机效应,课堂块的固定效应,以及课堂块交互的处理。整体治疗效果可以计算为特定教室区块的治疗效果的平均值,您可以使用特定教室区块的治疗效果来评估不同平均水平的教室之间治疗效果的变化程度基础技能。如果这看起来太多了,您可以单独运行一个 GEE 或回归模型的治疗结果(或具有一些固定效应),该模型使用集群稳健标准误差来解释教室和教室块内的配对和嵌套。无论您执行何种分析,只要你是比较治疗组的均值,你的效果估计就会是无偏的。所有这些设计内容只是提高精度和增加解释优势的问题。

您可以通过在学生级别随机化处理然后确定性地形成班级来做得更好。考虑以下过程。

1)根据基线技能和您想要包括的任何其他重要协变量(例如性别、种族等)匹配N个学生。这将形成N/2 个学生对。下面是有关如何执行此操作的参考。

2) 随机分配每对学生中的一名学生接受治疗 A,另一名学生接受治疗 B。

随机化现已完成。您的下一步是组建教室。以下形式的教室平衡了基线技能。

3) 创建标记为 (1-A, 1-B), (2-A, 2B), ..., (C/2-A, C/2-B) 的 C/2 类对

4) 按每对学生的平均基线技能分数对学生对进行排序。不要按个人技能分数或任何个人变量排序。仅按每对中的对的平均值排序。

5) 将排名最高的一对学生放在班级 1 中,随机分配到 A 的学生进入 1-A,随机分配到 B 的学生进入 1-B。将下一个排名最高的对放入班级 2。重复直到所有 C/2 班级对有 1 名学生。然后从第 1 班重新开始,为下一个排名最高的学生配对。

您现在拥有C/2类,它们在基线技能上彼此之间相当平衡。但是,这对您的推断并不重要。重要的是您在学生级别上的治疗 A 和 B 非常平衡,并且您的随机化已经发生在学生级别。

如果您将类随机分配到 A 和 B,则您有一个整群随机试验,并且应该对其进行分析。在这里,您有一个学生随机试验,其中干预是分组进行的。这使得更容易证明更广泛的分析方法的合理性。

我真的很喜欢诺亚在这个帖子中的回答。我们的想法非常相似。我也推荐阅读他的帖子。

参考:

1)随机化前的最优多元匹配: https ://www.ncbi.nlm.nih.gov/pubmed/15054030

2)最优非二分匹配及其统计应用: https ://www.ncbi.nlm.nih.gov/pmc/articles/PMC3501247/

3)nbpMatching: https ://cran.r-project.org/web/packages/nbpMatching/nbpMatching.pdf

4)教程: http ://biostat.mc.vanderbilt.edu/MatchedRandomization