## Eligible subjects? [Power / Sample Size]

Hi Valiveti,

» » » […] 48 subjects considering ~80% power, ISCV: 23%.
» » » The study was bioequivalent and 90% CI is within 80-125 for both Cmax & AUCt.
» » » Power of Cmax and AUCt are 92% & 66% respectively.
» » In this order? Can you give us their CVs and GMRs?
» CV- Cmax: 27.731; AUCt: 22.678
» GMR-Cmax: 97.76; AUCt: 87.99

Sorry, I forgot to ask for the sample sizes. Hence, I estimated them – which leaves me confused. library(PowerTOST) guess.GMR.0 <- function(GMR) { # function to estimate the assumed GMR   sampleN.TOST(alpha=alpha, CV=CV.0/100, theta0=GMR, theta1=theta1,                theta2=theta2, targetpower=pwr.0/100, design=design,                print=FALSE)[["Sample size"]]-n.0 } guess.n.fin <- function(n) { # function to estimate the final sample size   if (PK == "Cmax") {     CV       <- CV.1/100     GMR      <- GMR.1/100     post.hoc <- post.hoc.1/100 }   if (PK == "AUC") {     CV       <- CV.2/100     GMR      <- GMR.2/100     post.hoc <- post.hoc.2/100 }   round(power.TOST(alpha=alpha, CV=CV, theta0=GMR, theta1=theta1,                    theta2=theta2, n=n, design=design)-post.hoc, 2) } assess <- function(CI, theta1=0.80, theta2=1.25) { # assess for BE   if (CI[["lower"]] > 100*theta2 | CI[["upper"]] < 100*theta1) {     res <- "bioinequivalence proven"   } else {     if (CI[["lower"]] >= 100*theta1 & CI[["upper"]] <= 100*theta2) {       res <- "bioequivalence demonstrated"     } else {       res <- "failed to demonstrated BE (inconclusive)"     }   } } # design: CV and power in percent design     <- "2x2x2" theta1     <- 0.80 # lower BE limit theta2     <- 1.25 # upper BE limit CV.0       <- 23   # assumed CV pwr.0      <- 80   # target (desired) power n.0        <- 48   # initial sample size alpha      <- 0.05 # for 90% CI CI.pct     <- 100*(1-2*alpha) GMR.0      <- round(uniroot(guess.GMR.0, interval=c(theta1+1e-8, 1))$root, 4) pwr.ach <- power.TOST(alpha=alpha, CV=CV.0/100, theta0=GMR.0, theta1=theta1, theta2=theta2, n=n.0, design=design) # study: CV, GMR, and post hoc power in percent PK <- "Cmax" CV.1 <- 27.731 GMR.1 <- 97.76 post.hoc.1 <- 92 n.fin.1 <- round(uniroot(guess.n.fin, interval=c(12, n.0))$root, 0) ph.est.1   <- power.TOST(alpha=alpha, CV=CV.1/100, theta0=GMR.1/100,                          theta1=theta1, theta2=theta2, n=n.fin.1,                          design=design) CI.1       <- round(100*CI.BE(alpha=alpha, pe=GMR.1/100, CV=CV.1/100,                               n=n.fin.1, design=design), 2) concl.1    <- assess(CI=CI.1, theta1=theta1, theta2=theta2) PK         <- "AUC" CV.2       <- 22.678 GMR.2      <- 87.99 post.hoc.2 <- 66 n.fin.2    <- round(uniroot(guess.n.fin, interval=c(12, n.0))\$root, 0) ph.est.2   <- power.TOST(alpha=alpha, CV=CV.2/100, theta0=GMR.2/100,                          theta1=theta1, theta2=theta2, n=n.fin.2,                          design=design) CI.2       <- round(100*CI.BE(alpha=alpha, pe=GMR.2/100, CV=CV.2/100,                               n=n.fin.2, design=design), 2) concl.2    <- assess(CI=CI.2, theta1=theta1, theta2=theta2) cat(design, "design", "\nBE limits:",     sprintf("%5.2f%% \u2013 %6.2f%%", 100*theta1, 100*theta2),     paste0("\nAssumed: CV = ", CV.0, "%, GMR = ", 100*GMR.0,     "%, target power = ", pwr.0, "%"), "\nPlanned: n =", n.0,     sprintf("(achieved power = %.2f%%)", 100*pwr.ach),     paste0("\n", paste0(rep("\u2500", 48), collapse=""), "\nStudy"),     "\nCmax   :",     sprintf("%s %.2f%%, %s %.2f%%", "CV =", CV.1, "GMR =", GMR.1),     "\n         n =", n.fin.1,     sprintf("(post hoc power = %.2f%% ~ %.0f%%)", 100*ph.est.1, post.hoc.1),     sprintf("%s%.2f%% CI:", "\n         ", CI.pct),     sprintf("%6.2f%%", CI.1[["lower"]]), "\u2013",     sprintf("%6.2f%%", CI.1[["upper"]]),     "\n        ", concl.1,     "\nAUC    :",     sprintf("%s %.2f%%, %s %.2f%%", "CV =", CV.2, "GMR =", GMR.2),     "\n         n =", n.fin.2,     sprintf("(post hoc power = %.2f%% ~ %.0f%%)", 100*ph.est.2, post.hoc.2),     sprintf("%s%.2f%% CI:", "\n         ", CI.pct),     sprintf("%6.2f%%", CI.2[["lower"]]), "\u2013",     sprintf("%6.2f%%", CI.2[["upper"]]),     "\n        ", concl.2, "\n")

I got (my confidence intervals might not be exactly yours if sequences were unbalanced, i.e., n1  n2):

2x2x2 design BE limits: 80.00% – 125.00% Assumed: CV = 23%, GMR = 90%, target power = 80% Planned: n = 48 (achieved power = 80.48%) ──────────────────────────────────────────────── Study Cmax   : CV = 27.73%, GMR = 97.76%          n = 38 (post hoc power = 92.04% ~ 92%)          90.00% CI:  87.98% – 108.63%          bioequivalence demonstrated AUC    : CV = 22.68%, GMR = 87.99%          n = 48 (post hoc power = 65.80% ~ 66%)          90.00% CI:  81.49% –  95.01%          bioequivalence demonstrated

Is this correct? If yes, why did you have much less eligible subjects in the data set of Cmax than in the one of AUC?
Generally it is the other way ’round (nAUC ≤ nCmax): If the AUC can’t be reliably estimated (missing samples in the late phase and/or the extrapolated AUC >20% of AUC0–∞) its value is not reported whereas the one of Cmax still is.

Dif-tor heh smusma 🖖 Helmut Schütz The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes  Ing. Helmut Schütz 