EMA: adjusted α [RSABE / ABEL]

posted by Helmut Homepage – Vienna, Austria, 2015-11-18 01:27 (3075 d 10:13 ago) – Posting: # 15646
Views: 9,221

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,987 posts in 4,824 threads, 1,661 registered users;
82 visitors (0 registered, 82 guests [including 4 identified bots]).
Forum time: 12:40 CEST (Europe/Vienna)

The only way to comprehend what mathematicians mean by Infinity
is to contemplate the extent of human stupidity.    Voltaire

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