Sample size and randomization plan [Power / Sample Size]
❝ Thank you for this helpful forum
Welcome!
❝ […] sample size for full replicated study design for sodium valproate bioequivalence study ?
Why do you want to do that? Sodium valproate has an extremely low variability. In the 12 studies I performed the intra-subject CVs were 6.2–14.2% (AUC) and 5.3–16.1% (Cmax). In the European applications I’m aware of, sodium valproate was not classified as a NTID and consequently studies performed as 2×2×2 crossovers. Then ~16 subjects are sufficient to show BE for an assumed T/R-ratio of 0.95 and 80% power. A full replicate does not make sense.
However, the FDA classified it as a NTID and recommends reference-scaling. That’s another cup of tea and requires a 4-period full replicate study indeed. Another obstacle is the additional comparison of \(\sigma_{wT}/\sigma_{wR}\). My data are the CVw, which are pooled from the – unknown – CVwT and CVwR.
If CVwR < CVw the BE limits are downscaled and the sample size has to be increased. You have also to increase the sample size if CVwT > CVwR. Difficult to predict…
Exploring my data: I assumed a nice case (swT = 0.5×swR), equal variances, and a worse case (swT = 2×swR). As usual a conservative T/R-ratio of 0.975 since the FDA requires for NTIDS more strict batch release spec’s.
library(PowerTOST)
var.ratio <- c(0.5, 1, 2)
CV.AUC <- c(0.062, 0.142)
CV.Cmax <- c(0.053, 0.161)
CVw.AUC <- CVw.Cmax <- data.frame(CVwT = rep(NA, 2*length(var.ratio)),
CVwR = NA)
i <- 0
for (j in seq_along(CV.AUC)) {
for (k in seq_along(var.ratio)) { # split variances
i <- i + 1
CVw.AUC[i, 1:2] <- CVp2CV(CV.AUC[j], ratio = var.ratio[k])
CVw.Cmax[i, 1:2] <- CVp2CV(CV.Cmax[j], ratio = var.ratio[k])
}
}
res <- data.frame(metric = c(rep("AUC", length(CV.AUC)*length(var.ratio)),
rep("Cmax", length(CV.AUC)*length(var.ratio))),
CVw = c(rep(CV.AUC, each = length(var.ratio)),
rep(CV.Cmax, each = length(var.ratio))),
CVwT = signif(c(CVw.AUC$CVwT, CVw.Cmax$CVwT), 4),
CVwR = signif(c(CVw.AUC$CVwR, CVw.Cmax$CVwR), 4),
n = NA, power = NA)
for (j in 1:nrow(res)) {
res[j, 5:6] <- sampleN.NTIDFDA(CV = c(res$CVwT[j], res$CVwR[j]),
print=FALSE, details=F)[8:9]
}
print(res, row.names = FALSE)
metric CVw CVwT CVwR n power
AUC 0.062 0.05061 0.07161 18 0.83691
AUC 0.062 0.06200 0.06200 24 0.81550
AUC 0.062 0.07161 0.05061 44 0.81187
AUC 0.142 0.11570 0.16420 12 0.82560
AUC 0.142 0.14200 0.14200 16 0.83656
AUC 0.142 0.16420 0.11570 28 0.83189
Cmax 0.053 0.04326 0.06121 20 0.81502
Cmax 0.053 0.05300 0.05300 30 0.81917
Cmax 0.053 0.06121 0.04326 58 0.80154
Cmax 0.161 0.13120 0.18630 12 0.83440
Cmax 0.161 0.16100 0.16100 16 0.84655
Cmax 0.161 0.18630 0.13120 26 0.80828
❝ My second question is how can i generate a randomization plan with william's design using SAS software ?
No idea about SAS. I recommend Detlew’s package
randomizeBE
for .Dif-tor heh smusma 🖖🏼 Довге життя Україна!
Helmut Schütz
The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes
Complete thread:
- Sample size and randomization plan Ibrahim Komeil 2019-10-06 11:56 [Power / Sample Size]
- Sample size and randomization planHelmut 2019-10-06 18:00