## 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