EMA: adjusted α [RSABE / ABEL]

posted by Helmut Homepage – Vienna, Austria, 2015-11-18 01:27 (3054 d 15:33 ago) – Posting: # 15646
Views: 9,158

Dear all,

for the ones who are concerned about inflation of the Type I Error with EMA’s ABEL (see this thread) and don’t want to risk my iteratively adjusted α. There I suspected that adjusting to ~0.025 for full replicate designs and ~0.03 for the partial replicate would maintain the TIE at ≤0.05.
I explored CV 30% (maximum inflation of the TIE) and 50% (minimum). Here are the results (T/R 0.90, sample sizes for 80 and 90% power); R-code at the end for the nerds.

      Design   CV     LL     UL  alpha target  n  power     TIE Infl
   RTRT|TRTR 0.30 0.8000 1.2500 0.0500   0.80 34 0.8028 0.08128    *
   RTRT|TRTR 0.30 0.8000 1.2500 0.0250   0.80 44 0.8040 0.04488     
   RTRT|TRTR 0.30 0.8000 1.2500 0.0500   0.90 48 0.9002 0.08226    *
   RTRT|TRTR 0.30 0.8000 1.2500 0.0250   0.90 60 0.9021 0.04552     
   RTRT|TRTR 0.50 0.6984 1.4319 0.0500   0.80 28 0.8143 0.03301     
   RTRT|TRTR 0.50 0.6984 1.4319 0.0250   0.80 34 0.8088 0.01603     
   RTRT|TRTR 0.50 0.6984 1.4319 0.0500   0.90 38 0.9065 0.02928     
   RTRT|TRTR 0.50 0.6984 1.4319 0.0250   0.90 44 0.9021 0.01615     
     RTR|TRT 0.30 0.8000 1.2500 0.0500   0.80 50 0.8016 0.08746    *
     RTR|TRT 0.30 0.8000 1.2500 0.0250   0.80 66 0.8091 0.04942     
     RTR|TRT 0.30 0.8000 1.2500 0.0500   0.90 72 0.9027 0.08861    *
     RTR|TRT 0.30 0.8000 1.2500 0.0250   0.90 90 0.9048 0.05050    *
     RTR|TRT 0.50 0.6984 1.4319 0.0500   0.80 42 0.8035 0.03170     
     RTR|TRT 0.50 0.6984 1.4319 0.0250   0.80 52 0.8061 0.01534     
     RTR|TRT 0.50 0.6984 1.4319 0.0500   0.90 58 0.9022 0.02769     
     RTR|TRT 0.50 0.6984 1.4319 0.0250   0.90 68 0.9020 0.01525     
 RRT|RTR|TRR 0.30 0.8000 1.2500 0.0500   0.80 54 0.8159 0.07155    *
 RRT|RTR|TRR 0.30 0.8000 1.2500 0.0304   0.80 63 0.8061 0.04533     
 RRT|RTR|TRR 0.30 0.8000 1.2500 0.0500   0.90 75 0.9088 0.07243    *
 RRT|RTR|TRR 0.30 0.8000 1.2500 0.0304   0.90 87 0.9068 0.04598     
 RRT|RTR|TRR 0.50 0.6984 1.4319 0.0500   0.80 39 0.8076 0.03390     
 RRT|RTR|TRR 0.50 0.6984 1.4319 0.0304   0.80 48 0.8261 0.01998     
 RRT|RTR|TRR 0.50 0.6984 1.4319 0.0500   0.90 54 0.9097 0.03305     
 RRT|RTR|TRR 0.50 0.6984 1.4319 0.0304   0.90 60 0.9024 0.02028     


Seems to work. Of course the adjustment is more conservative than necessary for all CVs above ~0.4…

I wouldn’t worry too much about the slight inflation of the TIE in RTR|TRT. Ten runs with different seeds:

0.05050 *
0.05032 
0.05027 
0.05052 *
0.05059 *
0.05066 *
0.05025 
0.05016 
0.05044 *
0.05054 *



library(PowerTOST)
theta0   <- 0.90
CV       <- c(0.3, 0.5)
target   <- c(0.8, 0.9)
design   <- c("2x2x4", "2x2x3", "2x3x3")             # PowerTOST
type     <- c("RTRT|TRTR", "RTR|TRT", "RRT|RTR|TRR") # clear words
sig      <- binom.test(x=0.05*1e6, n=1e6, alternative="less",
              conf.level=1-0.05)$conf.int[2]
res      <- matrix(nrow=24, ncol=10, byrow=TRUE, dimnames=list(NULL,
              c("Design", "CV", "LL", "UL", "alpha", "target", "n",
                "power", "TIE", "Infl")))
i        <- 0
for (j in seq_along(design)) {
  for (k in seq_along(CV)) {
    LL <- min(0.80, exp(-0.76*CV2se(CV[k])))          # EMA's ABEL
    UL <- 1/LL
    for (l in seq_along(target)) {
      for (m in 1:2) {
        i <- i + 1
        res[i, 1] <- type[match(design[j], design)]
        res[i, 2] <- sprintf("%.2f", CV[k])
        res[i, 3] <- sprintf("%.4f", LL)
        res[i, 4] <- sprintf("%.4f", UL)
        if (m == 1) {
          alpha <- 0.05       # unadjusted (GL)
        } else {
          if (design[j] == "2x3x3") {
            alpha <- 0.0304   # partial replicate
          } else {
            alpha <- 0.0250   # full replicates
          }
        }
        res[i, 5] <- sprintf("%.4f", alpha)
        res[i, 6] <- sprintf("%.2f", target[l])
        tmp       <- sampleN.scABEL(alpha=alpha, CV=CV[k],
                       theta0=theta0, targetpower=target[l],
                       des=design[j], nsims=1e5, print=F, details=F)
        res[i, 7] <- tmp[, "Sample size"]
        res[i, 8] <- sprintf("%.4f", tmp[, "Achieved power"])
        TIE       <- power.scABEL(alpha=alpha, theta0=LL, CV=CV[k],
                       n=tmp[, "Sample size"], des=design[j], nsims=1e6)
        res[i, 9] <- sprintf("%.5f", TIE)
        res[i, 10] <- ""
        if (TIE > sig) res[i, 10] <- "*"
      }
    }
  }
}
print(as.data.frame(res), row.names=FALSE)


Dif-tor heh smusma 🖖🏼 Довге життя Україна! [image]
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes

Complete thread:

UA Flag
Activity
 Admin contact
22,957 posts in 4,819 threads, 1,636 registered users;
95 visitors (0 registered, 95 guests [including 13 identified bots]).
Forum time: 17:00 CET (Europe/Vienna)

With four parameters I can fit an elephant,
and with five I can make him wiggle his trunk.    John von Neumann

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5