Hi Bing,
» Dear Helmut,
▲ Not interested in opinions of other members of the forum?
» Would you evaluate the advantages of two independent 2x2 trials (T vs. R1 and T vs. R2) over the 6x3 crossover design? Actually I have completed the two 2x2 trials. However, someone has challenged me for not conducting it as in 6x3 crossover.
What speaks against a 6×3 trial:
- In the past some (!) agencies didn’t like 6×3 (and 3×3) trials essentially saying “We are not interested in the other reference product”. However, at least for the major agencies (FDA, EMA) these day are gone.
- Sample size is a multiple of 6 instead of 2.
- Larger blood volume and higher chance of dropouts.
- The worst case scenario. T/R1 passes and T/R2 fails. Although you present only the passing part to agency 1, both the analytical and statistical report will still contain the entire data. Doesn’t look good.
#2: Higher sample size (though outweighed by increased power):
CV <- seq(0.15, 0.4, 0.05)
theta0 <- 0.95
target <- 0.80
res <- data.frame(CV = CV, n.2x2 = NA, power.2x2 = NA,
n.6x3 = NA, power.6x3 = NA)
for (j in 1:nrow(res)) {
x <- sampleN.TOST(CV = CV[j], theta0 = theta0,
targetpower = target, print = FALSE,
details = FALSE)
res[j, 2:3] <- x[1, 7:8]
# round up to the next multiple of 6
res[j, 4] <- res[j, 2] + (6 - res[j, 2] %% 6)
res[j, 5] <- power.TOST(CV = CV[j], theta0 = theta0,
n = res[j, 4])
}
print(signif(res, 4), row.names = FALSE)
CV n.2x2 power.2x2 n.6x3 power.6x3
0.15 12 0.8305 18 0.9514
0.20 20 0.8347 24 0.8960
0.25 28 0.8074 30 0.8343
0.30 40 0.8158 42 0.8342
0.35 52 0.8075 54 0.8220
0.40 66 0.8053 72 0.8379
#4 can happen, of course.
library(PowerTOST)
CV <- seq(0.15, 0.4, 0.05)
theta0 <- 0.95
tests <- 1
target <- 0.80 # overall passing test(s)
targetpower <- target^(1/tests)
res <- data.frame(CV = CV, n = NA, risk.1 = NA, risk.2 = NA,
above = "no", stringsAsFactors = FALSE)
for (j in 1:nrow(res)) {
n.2x2 <- sampleN.TOST(CV = CV[j], theta0 = theta0,
targetpower = targetpower,
print = FALSE, details = FALSE)[["Sample size"]]
n.6x3 <- n.2x2 + (6 - n.2x2 %% 6) # round up to the next multiple of 6
res[j, 2] <- n.6x3
res[j, 3] <- 1 - power.TOST(CV = CV[j], theta0 = theta0, n = n.6x3)
res[j, 4] <- 1 - (1 - res[j, 3])^2
}
res$above[which(res$risk.2 > (1 - target))] <- "yes"
names(res)[5] <- ">beta"
res[, 3:4] <- signif(res[, 3:4], 3)
cat("Producer\u2019s \u03B2 = 1 \u2013 power\n");print(res, row.names = FALSE)
Producer’s β = 1 – power
CV n risk.1 risk.2 >beta
0.15 18 0.0486 0.0949 no
0.20 24 0.1040 0.1970 no
0.25 30 0.1660 0.3040 yes
0.30 42 0.1660 0.3040 yes
0.35 54 0.1780 0.3240 yes
0.40 72 0.1620 0.2980 yes
If you want that
both pass, you have to increase the sample size accordingly.
tests <- 2
...
Producer’s β = 1 – power
CV n risk.1 risk.2 >beta
0.15 18 0.0486 0.0949 no
0.20 30 0.0514 0.1000 no
0.25 42 0.0673 0.1300 no
0.30 54 0.0882 0.1690 no
0.35 72 0.0879 0.1680 no
0.40 90 0.0937 0.1790 no
What speaks against two 2×2 trials? Costs.