Don’t use FARTSSIE for SABE [Power / Sample Size]
❝ But my point for Bebac user was- He/She shall enhance the limit based on Swr and then calculate the subject size. I am still a fan of Dave's FARTSSIE and uses older version.
See this post and followings. Even if you are a fan of Dave (as I am), that’s not even wrong.
- The partial replicate design is not supported – though I don’t miss it.
- The sample size is estimated for the 2×2×2 design and then adjusted according to the selected design (⅔ for the 3-period full replicate and ½ for the 4-period full replicate).
- But:
- In ABEL the limits are not fixed like in ABE but depend on the (observed, realized) \(\small{\widehat{s}_\textrm{wR}}\) instead of an assumed one. You can only assume a \(\small{\widehat{\sigma}_\textrm{wR}}\) and simulate a reasonable large number of studies with different ones.
Hint: \(\small{\widehat{s}_\textrm{wR}^2}\) follows a \(\small{\chi^2\textsf{-}}\)distribution with \(\small{n-2}\) degrees of freedom and \(\small{\theta_0}\) follows a lognormal distribution.
- Additionally you have to take the upper cap of scaling (50% for the EMA and ≈57.4% for Health Canada) and the PE constraint (within 80.00–125.00%) into account.
library(PowerTOST)
balance <- function(n, seq) {
return(as.integer(seq * (n %/% seq + as.logical(n %% seq))))
}
sampleN.FARTSSIE <- function(CV, theta0, targetpower, design) {
admin <- as.integer(substr(design, 1, 1)) *
as.integer(substr(design, 3, 3)) *
as.integer(substr(design, 5, 5))
LU <- setNames(scABEL(CV), c("theta1", "theta2"))
n.cross <- sampleN.TOST(CV = CV, theta0 = theta0,
theta1 = LU[["theta1"]],
theta2 = LU[["theta2"]],
targetpower = targetpower,
design = "2x2x2",
method = "noncentral",
print = FALSE)[["Sample size"]]
# Note: FARTSSIE leaves rounding up to
# balanced sequences to the user
return(balance(n.cross * 8 / admin,
as.integer(substr(design, 3, 3))))
}
theta0 <- 0.90
targetpower <- 0.80
CV <- seq(0.3, 0.5, 0.05)
# The partial replicate design (TRR|RTR|RRT) is not supported in FARTSSIE
# and Balaam’s design (TR|RT|TT|RR) is not supported in sampleN.scABEL().
res <- data.frame(CV = CV, design = rep(c("2x2x3", "2x2x4"),
each = length(CV)),
n.FARTSSIE = NA_integer_, pwr.FARTSSIE = NA_real_,
n.scABEL = NA_integer_, pwr.scABEL = NA_real_,
pwr.SABE = NA_real_, pwr.PE = NA_real_,
pwr.ABE = NA_real_)
for (j in 1:nrow(res)) {
res$n.FARTSSIE[j] <- sampleN.FARTSSIE(CV = res$CV[j], theta0 = theta0,
targetpower = targetpower,
design = res$design[j])
res$pwr.FARTSSIE[j] <- power.scABEL(CV = res$CV[j], theta0 = theta0,
n = res$n.FARTSSIE[j], design = res$design[j])
tmp <- sampleN.scABEL(CV = res$CV[j], theta0 = theta0,
targetpower = targetpower,
design = res$design[j], details = FALSE,
print = FALSE)
res$n.scABEL[j] <- tmp[["Sample size"]]
res$pwr.scABEL[j] <- tmp[["Achieved power"]]
# retrieve components: pure SABE, PE within constraints, ABE
res[j, 7:9] <- suppressMessages(
power.scABEL(CV = res$CV[j], theta0 = theta0,
design =res$design[j],
n = res$n.scABEL[j],
details = TRUE)[2:4])
}
names(res)[c(4, 6)] <- "power"
res[, 4:9] <- signif(res[, 4:9], 4)
print(res, row.names = FALSE)
CV design n.FARTSSIE power n.scABEL power pwr.SABE pwr.PE pwr.ABE
0.30 2x2x3 54 0.8242 50 0.8016 0.8016 0.9900 0.7450
0.35 2x2x3 44 0.7634 50 0.8037 0.8039 0.9776 0.6351
0.40 2x2x3 36 0.7246 46 0.8073 0.8086 0.9548 0.5164
0.45 2x2x3 34 0.7198 42 0.8002 0.8006 0.9266 0.4127
0.50 2x2x3 32 0.6880 42 0.8035 0.8035 0.9065 0.3484
0.30 2x2x4 40 0.8525 34 0.8028 0.8028 0.9906 0.7517
0.35 2x2x4 32 0.7929 34 0.8118 0.8119 0.9786 0.6424
0.40 2x2x4 28 0.7829 30 0.8066 0.8074 0.9528 0.5069
0.45 2x2x4 26 0.7846 28 0.8112 0.8116 0.9266 0.4107
0.50 2x2x4 24 0.7536 28 0.8143 0.8143 0.9065 0.3476
In your screenshot of FARTSSIE (which version?) I see limits of 75.00–133.33% for CV 35%. That’s not correct for ABEL, where the limits are 77.23–129.48% because $$\small{\eqalign{
s_\textrm{wR}&=\sqrt{\log_{e}(CV_\textrm{wR}^2+1)}\\
\left\{L,U\right\}&=100\exp(\mp 0.760\,\cdot s_\textrm{wR})
}}$$ For the conditions of the Gulf Cooperation Council1 (namely widened limits if \(\small{CV_\textrm{wR}>30\%}\)) you would need …
sampleN.scABEL(CV = 0.35, design = "2x2x3", regulator = "GCC", details = FALSE)
+++++++++++ scaled (widened) ABEL +++++++++++
Sample size estimation
(simulation based on ANOVA evaluation)
---------------------------------------------
Study design: 2x2x3 (3 period full replicate)
log-transformed data (multiplicative model)
1e+05 studies for each step simulated.
alpha = 0.05, target power = 0.8
CVw(T) = 0.35; CVw(R) = 0.35
True ratio = 0.9
ABE limits / PE constraint = 0.8 ... 1.25
Widened limits = 0.75 ... 1.333333
Regulatory settings: GCC
Sample size
n power
42 0.8139
sampleN.TOST(CV = 0.35, theta0 = 0.9, theta1 = 0.75, design = "2x2x3")
+++++++++++ Equivalence test - TOST +++++++++++
Sample size estimation
-----------------------------------------------
Study design: 2x2x3 (3 period full replicate)
log-transformed data (multiplicative model)
alpha = 0.05, target power = 0.8
BE margins = 0.75 ... 1.333333
True ratio = 0.9, CV = 0.35
Sample size (total)
n power
34 0.811011
❝ On the other part, if the assumed PE is 0.9126-1.096, subject size of 40 could still be good considering no dropouts (Using Boss button).
Nope (see above). Let’s be silent about the , please.
- Executive Board of the Health Ministers’ Council for GCC States. The GCC Guidelines for Bioequivalence. May 2021. Online.
- League of Arab States, Higher Technical Committee for Arab Pharmaceutical Industry. Harmonised Arab Guideline on Bioequivalence of Generic Pharmaceutical Products. Cairo. March 2014. Online.
- Medicines Control Council. Registration of Medicines: Biostudies. Pretoria. June 2015. Online.
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 Replicated studies Bebac user 2022-03-23 09:38 [Power / Sample Size]
- Sample size and Replicated studies dshah 2022-03-23 11:30
- Output of sampleN.scABEL() Helmut 2022-03-23 12:43
- Output of sampleN.scABEL() - expanded limits ? d_labes 2022-03-23 16:33
- Output of sampleN.scABEL() - expanded limits ? Helmut 2022-03-23 16:45
- Output of sampleN.scABEL() dshah 2022-03-23 18:08
- Don’t use FARTSSIE for SABEHelmut 2022-03-23 19:42
- Output of sampleN.scABEL() - expanded limits ? d_labes 2022-03-23 16:33
- Output of sampleN.scABEL() Helmut 2022-03-23 12:43
- Sample size larger than clinical capacity Helmut 2022-03-23 11:43
- Sample size and Replicated studies Brus 2022-03-23 14:25
- Sample size and Replicated studies dshah 2022-03-23 11:30