有人知道如何在R中实现此算法吗?我共有100名患者需要随机分组,我想知道大于55%-45%的分裂机会是什么(即,将45个或更少的受试者分配为一种治疗方法,将55个或更多的受试者分配为一种治疗方法)其他治疗)?假设治疗A和B的缓解率分别为0.6和0.5。我需要根据Zelen的“打赢者规则”进行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
答案 0 :(得分:0)
任何现实主义者或质量专家必须熟悉模仿现实生活行为的试验设计:
#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