If it is real: results [RSABE / ABEL]

posted by Helmut Homepage – Vienna, Austria, 2013-03-29 00:20 (4017 d 18:07 ago) – Posting: # 10305
Views: 20,073

Hi Martin!

❝ IMHO: yes as this is a constant and should not dependent on the number of simulation runs.


Oh yes, sure. Sorry for my stupidity.

❝ Ps.: ... and yes its the same guy who is famous for publicly calling some approaches “bullshit” :-D


I always thought he should work on his social skills.

Here the results of my sim’s for target α 0.05. Partial and full replicate designs, n=24/48.

[image]

[image]

The FDA’s method would lead to a large α-inflation (as presented by Detlew above) for CVWR ≤30%. This could be corrected by adjusting α. However, since scaling is only allowed for CVWR >30% nothing has to be done. Like the conventional TOST the test gets more con­ser­vative with increasing CV (and n).

[image]

[image]

The EMA’s method is another cup of tea. α-inflation is seen up to 45%! The test is closer to the nominal level than the FDA’s.
Interesting the behavior of the partial replicate with n=24. :confused:


Code (10–25 iterations to reach convergence, runtime on my machine 15–45 seconds depending on design, n, CV):
require(PowerTOST)
reg   <- "EMA"   # "EMA" for ABEL or "FDA" for scABE
CV    <- 0.300   # intra-subject CV of reference
n     <- 24      # total sample size
                 # in case of imbalanced sequences use a vector:
                 # e.g., c(n1,n2,n3)
des   <- "2x3x3" # partial: "2x3x3" full: "2x2x4"
                 # for others see known.designs()
print <- TRUE    # intermediate results
if (reg == "EMA") { # scABEL
  ifelse (CV <= 0.5, GMR <- exp(0.7601283*CV2se(CV)),
                     GMR <- exp(0.7601283*CV2se(0.5)))
  if (CV <= 0.3) GMR <- 1.25
  } else {          # RSABE
  ifelse (CV > 0.3, GMR <- exp(0.8925742*CV2se(CV)),
                    GMR <- 1.25)
}
nsims <- 1e6
prec  <- 1e-8    # precision of bisection algo
x     <- 0.05    # target alpha
nom   <- c(0.001, x)                # from conservative to target alpha
lower <- min(nom); upper <- max(nom)
delta <- upper - lower              # interval
ptm   <- proc.time()                # start timer
iter  <- 0
while (abs(delta) > prec) {         # until precision reached
  iter  <- iter + 1
  x.new <- (lower+upper)/2          # bisection
  if (reg == "EMA") {
    pBE <- power.scABEL(alpha=x.new, theta0=GMR, CV=CV,
                        n=n, design=des, nsims=nsims)
    } else {
    pBE <- power.RSABE(alpha=x.new, theta0=GMR, CV=CV,
                       n=n, design=des, nsims=nsims)
  }
  if (print) {                      # show progress
    if (iter == 1) cat(" i  adj. alpha       pBE\n")
    cat(format(iter, digits=2, width=2),
        format(x.new, digits=6, width=11, nsmall=7),
        format(pBE, digits=6, width=9, nsmall=6), "\n")
    if (.Platform$OS.type == "windows") flush.console()
  }
  if (abs(pBE - x) <= prec) break   # precision reached
  if (pBE > x) upper <- x.new       # move upper limit downwards
  if (pBE < x) lower <- x.new       # move lower limit upwards
  delta <- upper - lower            # new interval
}
if (print) cat("run-time:", round((proc.time()[3]-ptm[3]), 1),
               "seconds  iterations:", iter, "\n")
cat("regulator:", reg, " CV:", CV, " n:", n, " design:", des,
    "\ntarget alpha:", x, " adjusted alpha:", x.new,
    " pBE:", pBE, "(empiric alpha)\n")

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,638 registered users;
81 visitors (0 registered, 81 guests [including 8 identified bots]).
Forum time: 18:28 CET (Europe/Vienna)

Nothing shows a lack of mathematical education more
than an overly precise calculation.    Carl Friedrich Gauß

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