Zelen 的 Play the Winner Rule 随机方案

Zelen's Play the Winner Rule Randomization Scheme

有人知道如何在 R 中实现这个算法吗?我总共有 100 名患者需要随机分组,我想知道大于 55%-45% 的机会是多少(即 45 名或更少的受试者将被分配到一种治疗方法,55 名或更多的受试者将被分配到另一种治疗方法)其他治疗)?假设治疗 A 和 B 的响应率分别为 0.6 和 0.5。我需要根据 Zelen 的 Play The Winner Rule 的 1000 次模拟来执行此操作。

Zelen 规则背后的关键思想是您需要知道之前患者的结果才能分配下一位患者,所以基本上我们会有这样的事情:

对于第一个患者,我们使用 rbinom (1,1,1/2)(以相同的概率将他分配给 A 或 B),然后对于 A 组,我们知道响应率为 0.6,因此 rbinom(1 ,1,0.6) 查看患者是否有反应;如果他有反应,我们将下一位患者分配给 A,否则分配给 B

同样,对于 B 组,我们知道响应率为 0.5,因此 rbinom(1,1,0.5) 用于查看患者是否响应。如果他有回应,那么下一个病人就会被分配到 B;否则为 A.

如果split大于55-45%则计为1;否则为0。最后模拟1000次统计大于55-45的分裂次数,然后计算这个事件发生的概率:n/1000

任何试验者或质量专家都必须熟悉模拟真实行为的试验设计:

#play the winner

nsamples <- 1000
sample.size <- 100
split <- 0

for (i in 1:nsamples) {
  a <- rbinom(sample.size,1,0.6)
  b <- rbinom(sample.size,1,0.5)
  df <- data.frame (a,b)
  alt <- c(2,1)

  y = sample(c(1,2),1)
  tx <- NULL

    for (j in 1:sample.size) {
      tx[j] <- y
      x <- df[j,y]
      if (x == 1) {
        next 
        } 
          y <<-  alt[y]
      }

  split[i] <- sum(tx == 1)/sample.size
}

split.45.55 <- sum(split < 0.45 | split > 0.55)/nsamples
hist(split)
split.45.55