【问题标题】:Zelen's Play the Winner Rule Randomization SchemeZelen 的获胜者规则随机化方案
【发布时间】:2020-02-11 09:45:27
【问题描述】:

有人知道如何在 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。

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

【问题讨论】:

    标签: r random simulation


    【解决方案1】:

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

    #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
    

    【讨论】:

      猜你喜欢
      • 2014-06-16
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 2021-02-13
      • 2015-08-17
      • 1970-01-01
      相关资源
      最近更新 更多