Replicate designs based on information of 2×2×2 design [Design Issues]
❝ I had performed a 2X2 crossover study […] The results showed a very high unexpected intra-subject variability as following:
❝ Cmax: 73.8451%, AUCt: 67.6524%
❝
❝ Therefore, a sequential two stage study won't be applicable in that condition.
Correct. Such a method does not exist.
❝ My question is: If i repeat the aforementioned study again, shall i follow a partial replicated cross over design or full replicated cross over design?
I recommend a full replicate design. If you want to have only three periods, opt for TRT|RTR or TRR|RTT. The partial replicate is nasty when it comes to heteroscedasticity (CVwT ≠ CVwR).
It’s a little bit tricky because the CVw of the 2×2×2 is actually pooled from the (unknown) intra-subject variabilities of T and R (CVwT and CVwR). If you naïvely use the CVw in the sample size estimation (assuming that CVwT = CVwR), beware of these possibilities:
- CVwT ≈ CVwR: All is good.
- CVwT < CVwR: Study may be ‘overpowered’, money lost.
- CVwT > CVwR: Study may be ‘underpowered’, risky.
Results with your values, variance ratios (s2wT / s2wR = 0.5 … 2), assumed T/R-ratio 0.9 (don’t use a ‘better’ one for a HVD), target power 80%, the EMA’s Average Bioequivalence with Expanding Limits (ABEL) if CVwR of Cmax > 30%, conventional ABE for AUC, various designs.
2x2x3 is a 2-sequence 3-period full replicate design (TRT|RTR or TRR|RTT),
2x2x4 is a 2-sequence 4-period full replicate design (TRTR|RTRT, TRRT|RTTR, or TTRR|RRTT),
2x3x3 is the 3-sequence 3-period partial replicate design (TRR|RTR|RRT).
regulator Cmax cap AUC cap
EMA ABEL 50.00% ABE <NA>
2x2x3 design
Cmax
CVwT CVwR var.ratio method n power
0.5802 0.8869 0.5000 ABEL 64 0.8008
0.6454 0.8282 0.6667 ABEL 64 0.8007
0.7385 0.7385 1.0000 ABEL 64 0.8001
0.8282 0.6454 1.5000 ABEL 66 0.8088
0.8869 0.5802 2.0000 ABEL 68 0.8099
AUC
CVw method n power
0.676524 ABE 254 0.8019
regulator Cmax cap AUC cap
EMA ABEL 50.00% ABE <NA>
2x2x4 design
Cmax
CVwT CVwR var.ratio method n power
0.5802 0.8869 0.5000 ABEL 44 0.8123
0.6454 0.8282 0.6667 ABEL 44 0.8124
0.7385 0.7385 1.0000 ABEL 44 0.8122
0.8282 0.6454 1.5000 ABEL 44 0.8107
0.8869 0.5802 2.0000 ABEL 44 0.8035
AUC
CVw method n power
0.676524 ABE 170 0.8033
regulator Cmax cap AUC cap
EMA ABEL 50.00% ABE <NA>
2x3x3 design
Cmax
CVwT CVwR var.ratio method n power
0.5802 0.8869 0.5000 ABEL 72 0.8324
0.6454 0.8282 0.6667 ABEL 69 0.8224
0.7385 0.7385 1.0000 ABEL 66 0.8119
0.8282 0.6454 1.5000 ABEL 63 0.8020
0.8869 0.5802 2.0000 ABEL 63 0.8035
Lessons learned: With such high variability you are far above the EMA’s upper cap of scaling (50%) and you may expand the limits only to 69.84–143.19%. Here different variabilities don’t count that much because the procedure behaves similar to the TOST (apart from the point estimate constraint).
AUC is the shown-stopper. For the EMA (and acc. to the Egyptian guideline) you are not allowed to expand the limits and have to go with ABE.
❝ My second: Shall i follow RASBE or unscaled BE limits ?
It depends on your ‘target’ jurisdiction.
- ASEAN states, Australia, the East African Community, Egypt, EMA, the Eurasian Economic Union, New Zealand, Chile, Brazil:
ABEL for Cmax, ABE for AUC.
- Health Canada:
ABEL for AUC, point estimate of Cmax within 80.0–125.0%.
- WHO:
ABEL for Cmax and AUC; full replicate design mandatory for the latter.
- FDA, China:
RSABE for Cmax and AUC.
regulator <- "FDA"
or "WHO"
or "HC"
. Since in those jurisdictions you are allowed to scale AUC, doable. regulator Cmax cap AUC cap
FDA RSABE <NA> RSABE <NA>
2x2x4 design
Cmax
CVwT CVwR var.ratio method n power
0.5802 0.8869 0.5000 RSABE 26 0.8114
0.6454 0.8282 0.6667 RSABE 26 0.8102
0.7385 0.7385 1.0000 RSABE 26 0.8047
0.8282 0.6454 1.5000 RSABE 28 0.8045
0.8869 0.5802 2.0000 RSABE 32 0.8154
AUC
CVwT CVwR var.ratio method n power
0.5344 0.8080 0.5000 RSABE 22 0.8023
0.5932 0.7562 0.6667 RSABE 24 0.8146
0.6765 0.6765 1.0000 RSABE 24 0.8029
0.7562 0.5932 1.5000 RSABE 28 0.8158
0.8080 0.5344 2.0000 RSABE 30 0.8036
regulator Cmax cap AUC cap
WHO ABEL 50.00% ABEL 50.00%
2x2x4 design
Cmax
CVwT CVwR var.ratio method n power
0.5802 0.8869 0.5000 ABEL 44 0.8123
0.6454 0.8282 0.6667 ABEL 44 0.8124
0.7385 0.7385 1.0000 ABEL 44 0.8122
0.8282 0.6454 1.5000 ABEL 44 0.8107
0.8869 0.5802 2.0000 ABEL 44 0.8035
AUC
CVwT CVwR var.ratio method n power
0.5344 0.8080 0.5000 ABEL 38 0.8096
0.5932 0.7562 0.6667 ABEL 38 0.8092
0.6765 0.6765 1.0000 ABEL 38 0.8080
0.7562 0.5932 1.5000 ABEL 38 0.8016
0.8080 0.5344 2.0000 ABEL 40 0.8003
regulator Cmax cap AUC cap
HC PE <NA> ABEL 57.38%
2x2x4 design
Cmax
CVw method n power
0.738451 PE 24 0.8018
AUC
CVwT CVwR var.ratio method n power
0.5344 0.8080 0.5000 ABEL 30 0.8159
0.5932 0.7562 0.6667 ABEL 30 0.8137
0.6765 0.6765 1.0000 ABEL 30 0.8040
0.7562 0.5932 1.5000 ABEL 34 0.8151
0.8080 0.5344 2.0000 ABEL 38 0.8067
library(PowerTOST)
CV.p.Cmax <- 0.738451 # CVw of 2x2x2 study (pooled from unknown CVwT and CVwR)
CV.p.AUC <- 0.676524 # CVw of 2x2x2 study (pooled from unknown CVwT and CVwR)
regulator <- "EMA" # select from "EMA", "HC" (Health Canada),
# "GCC" (Gulf Cooperation Council), "WHO", "FDA"
theta0 <- 0.90 # assumed T/R-ratio
target <- 0.80 # target (desired) power
design <- "2x2x3" # 2-sequence 3-period full replicate design
# alternatively:
# "2x2x4" 2-sequence 4-period full replicate design
# "2x3x3" 2-sequence 3-period partial replicate design
ratio <- unique(sort(c(1/seq(1, 2, 0.5), seq(1, 2, 0.5))))
# assumed variance ratios: s2wT / s2wR
# CVwT and CVwR
CV.Cmax <- CVp2CV(CV = CV.p.Cmax, ratio = ratio)
CV.AUC <- CVp2CV(CV = CV.p.AUC, ratio = ratio)
if (regulator == "HC") {
res.Cmax <- data.frame(CVw = CV.p.Cmax, method = "PE", n = NA,
power = NA, stringsAsFactors = FALSE)
} else {
res.Cmax <- data.frame(CVwT = CV.Cmax[, 1], CVwR = CV.Cmax[, 2],
var.ratio = ratio, method = NA, n = NA,
power = NA, stringsAsFactors = FALSE)
}
if (regulator %in% c("HC", "WHO", "FDA")) {
res.AUC <- data.frame(CVwT = CV.AUC[, 1], CVwR = CV.AUC[, 2],
var.ratio = ratio, method = NA, n = NA,
power = NA, stringsAsFactors = FALSE)
} else {
res.AUC <- data.frame(CVw = CV.p.AUC, method = "ABE", n = NA,
power = NA, stringsAsFactors = FALSE)
}
cond <- data.frame(regulator = c("EMA", "WHO", "GCC", "HC", "FDA"),
Cmax = c(rep("ABEL", 3), "PE", "RSABE"),
V1 = c(rep(sprintf("%.2f%%",
100*reg_const(regulator = "EMA")$CVcap), 2),
NA, NA, NA),
AUC = c("ABE", "ABEL", "ABE", "ABEL", "RSABE"),
V2 = c(NA, sprintf("%.2f%%",
100*reg_const(regulator = "EMA")$CVcap),
NA, sprintf("%.2f%%",
100*reg_const(regulator = "HC")$CVcap), NA))
names(cond)[c(3, 5)] <- "cap"
pb <- txtProgressBar(0, 1, 0, char = "\u2588", width = NA, style = 3)
i <- 0
for (j in 1:nrow(res.Cmax)) {
i <- i + 1
if (regulator == "HC") { # only PE within 80.0-125.0%
res.Cmax[j, 3:4] <- sampleN.TOST(alpha = 0.5, CV = CV.p.Cmax,
theta0 = theta0, targetpower = target,
design = design, print = FALSE)[7:8]
} else { # others
CV <- as.numeric(c(res.Cmax[j, 1:2]))
if (!regulator == "FDA") { # all but the FDA
res.Cmax$method[j] <- "ABEL"
if (!design == "2x3x3" & (res.Cmax[j, 1] > res.Cmax[j, 2])) {
res.Cmax[j, 5:6] <- sampleN.scABEL(CV = CV, theta0 = theta0,
targetpower = target,
design = design, details = FALSE,
print = FALSE)[8:9]
} else { # if partial replicate and CVwT > CVwR: subject simulations
res.Cmax[j, 5:6] <- sampleN.scABEL.sdsims(CV = CV, theta0 = theta0,
targetpower = target,
design = design,
details = FALSE, print = FALSE,
progress = FALSE)[8:9]
}
} else { # FDA (subject simulations not implemented)
res.Cmax$method[j] <- "RSABE"
res.Cmax[j, 5:6] <- sampleN.RSABE(CV = CV, theta0 = theta0,
targetpower = target, design = design,
details = FALSE, print = FALSE)[8:9]
}
}
setTxtProgressBar(pb, i/(nrow(res.Cmax)+nrow(res.AUC)))
} # estimating results for Cmax
if (regulator == "WHO") reg <- "EMA"
for (j in 1:nrow(res.AUC)) {
i <- i + 1
if (regulator %in% c("EMA", "GCC")) { # ABE
res.AUC[j, 3:4] <- sampleN.TOST(CV = CV.p.AUC, theta0 = theta0,
targetpower = target, design = design,
details = FALSE, print = FALSE)[7:8]
} else { # others
CV <- as.numeric(c(res.AUC[j, 1:2]))
if (!regulator == "FDA") { # all but the FDA
res.AUC$method[j] <- "ABEL"
if (!design == "2x3x3" & (res.AUC[j, 1] <= res.AUC[j, 2]) | reg == "HC") {
res.AUC[j, 5:6] <- sampleN.scABEL(CV = CV, theta0 = theta0,
targetpower = target, design = design,
regulator = reg, details = FALSE,
print = FALSE)[8:9]
} else { # if partial replicate and CVwT > CVwR: subject simulations
res.AUC[j, 5:6] <- sampleN.scABEL.sdsims(CV = CV, theta0 = theta0,
targetpower = target,
design = design,
regulator = reg,
details = FALSE,
print = FALSE,
progress = FALSE)[8:9]
}
} else { # FDA (subject simulations not implemented)
res.AUC$method[j] <- "RSABE"
res.AUC[j, 5:6] <- sampleN.RSABE(CV = CV, theta0 = theta0,
targetpower = target, design = design,
details = FALSE, print = FALSE)[8:9]
}
}
setTxtProgressBar(pb, i/(nrow(res.Cmax)+nrow(res.AUC)))
} # estimating results for AUC
close(pb)
if (regulator == "HC") {
res.Cmax[, 4] <- signif(res.Cmax[, 4], 4)
} else {
res.Cmax[, c(1:3, 6)] <- signif(res.Cmax[, c(1:3, 6)], 4)
}
if (!regulator %in% c("EMA", "GCC")) {
res.AUC[, c(1:3, 6)] <- signif(res.AUC[, c(1:3, 6)], 4)
} else {
res.AUC[, 4] <- signif(res.AUC[, 4], 4)
}
info <- paste(design, "design", "\n Cmax\n")
print(cond[cond$regulator == regulator, ], row.names = FALSE);cat(info);print(res.Cmax, row.names = FALSE);cat(" AUC\n"); print(res.AUC, row.names = FALSE)
Dif-tor heh smusma 🖖🏼 Довге життя Україна!
![[image]](https://static.bebac.at/pics/Blue_and_yellow_ribbon_UA.png)
Helmut Schütz
![[image]](https://static.bebac.at/img/CC by.png)
The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes
Complete thread:
- Bioequivalence of mirabegron 50 mg extended release Tablet Ibrahim Komeil 2021-02-20 11:36 [Design Issues]
- Replicate designs based on information of 2×2×2 designHelmut 2021-02-20 14:50
- Replicate designs based on information of 2×2×2 design Ibrahim Komeil 2021-02-20 18:34
- Assumption of authority? Helmut 2021-02-20 20:50
- Replicate designs based on information of 2×2×2 design Ibrahim Komeil 2021-02-20 18:34
- Bioequivalence of mirabegron 50 mg extended release Tablet jishnu 2022-08-04 09:09
- Bioequivalence of mirabegron 50 mg extended release Tablet qualityassurance 2022-08-04 15:47
- Replicate designs based on information of 2×2×2 designHelmut 2021-02-20 14:50