Zelen's Play the Winner Схема рандомизации правил - PullRequest
0 голосов
/ 14 октября 2019

Кто-нибудь знает, как реализовать этот алгоритм в R? У меня есть 100 пациентов, которых нужно рандомизировать, и я хочу знать, какова вероятность более 55% -45% разделения (то есть 45 или менее субъектам будет назначено одно из лечений и 55 или более надругое лечение)? Предполагая, что ответные реакции составляют 0,6 и 0,5 для лечения A и B, соответственно. Мне нужно сделать это, основываясь на 1000 симуляциях Зелена в игре «Правило победителя».

Ключевая идея, лежащая в основе правила Зелена, заключается в том, что вам нужно знать результаты предыдущих пациентов, чтобы назначить следующего пациента, поэтому в основном мыбыло бы что-то вроде этого:

Для первого пациента мы используем 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

1 Ответ

0 голосов
/ 18 октября 2019

Схема испытания, имитирующая реальное поведение, должна быть знакома любому испытателю или специалисту по качеству:

#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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...