## Two 2x2 and one 6x3 crossover design [Design Issues]

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:
1. 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.
2. Sample size is a multiple of 6 instead of 2.
3. Larger blood volume and higher chance of dropouts.
4. 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.

Dif-tor heh smusma 🖖🏼 Довге життя Україна!
Helmut Schütz

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes