crap [Two-Stage / GS Designs]

posted by Helmut Homepage – Vienna, Austria, 2020-02-16 15:43 (864 d 20:05 ago) – Posting: # 21173
Views: 4,639

Hi Mauricio,

» » If I’m in the right mood I’ll write letter to ANVISA. :-D
»
» PLEASE!!!!!:ok:
»
» Or make your official contribution on the website:
» http://formsus.datasus.gov.br/site/formulario.php?id_aplicacao=52824

No promises…

I played around around with published (and unpublished) methods. I used the noncentral t-distribution, whereas in the papers the shifted central t-distribution was used for speed reasons. One degree less in the sample size estimation because the stage-term is used in the pooled analysis. 100,000 simulations for the average total sample size E[N] and 1 mio for the empiric Type I Error. Narrow grid for CV (10–80%, step 2%), and n1 (12–72, step 2). The power/TIE surfaces are highly nonlinear; generally the maximum inflation is observed at a combination of low CV and small n1. The TIE is given for these locations (in the papers a wider grid with step sizes of 10% and 12 was used).
In the original methods no minimum stage 2 size; for the ANVISA I forced it to ≥ 50% n1. SLF refers to a manuscript by the usual Simul-Ants (Schütz, Labes, Fuglsang) we didn’t finish (rests in peace in my “dead dogs”-folder)…
$$\small{\begin{matrix}
\textsf{Name} & \textsf{Method} & \textsf{Type} & GMR & \pi & \alpha & CV & n_1 & E[N] & \text{TIE} & n_{2,min} & E[N] & \textsf{ANVISA} & \textsf{comp}\\\hline
\textsf{SLF} & \textsf{B} & 1 & 0.90 & 0.8 & 0.0272 & 0.20 & 12 & 40.8 & 0.04997 & 6 & 40.8 & 0.04999 & \textsf{higher}\\
\textsf{SLF} & \textsf{B} & 1 & 0.90 & 0.9 & 0.0268 & 0.22 & 16 & 60.3 & 0.04985 & 8 & 60.3 & 0.04977 & \textsf{lower}\\
\textsf{Potvin} & \textsf{B} & 1 & 0.95 & 0.8 & 0.0294 & 0.24 & 12 & 29.8 & 0.04876 & 6 & 29.9 & 0.04879 & \textsf{higher}\\
\textsf{Potvin-SLF} & \textsf{B} & 1 & 0.95 & 0.8 & 0.0302 & 0.24 & 12 & 29.5 & 0.04999 & 6 & 29.6 & 0.05020 & \textsf{higher}\\
\textsf{Fuglsang} & \textsf{B} & 1 & 0.95 & 0.9 & 0.0284 & 0.22 & 12 & 31.7 & 0.04960 & 6 & 31.7 & 0.04958 & \textsf{lower}\\
\textsf{Fuglsang-SLF} & \textsf{B} & 1 & 0.95 & 0.9 & 0.0286 & 0.22 & 12 & 31.6 & 0.04999 & 6 & 31.6 & 0.05032 & \textsf{higher}\\
\textsf{Montague} & \textsf{D} & 2 & 0.90 & 0.8 & 0.0280 & 0.20 & 12 & 40.3 & \color{Red}{0.05180} & 6 & 40.3 & \color{Red}{0.05181} & \textsf{higher}\\
\textsf{Montague-SLF} & \textsf{D} & 2 & 0.90 & 0.8 & 0.0268 & 0.18 & 12 & 32.7 & 0.04998 & 6 & 32.7 & 0.04980 & \textsf{lower}\\
\textsf{Fuglsang} & \textsf{C/D} & 2 & 0.90 & 0.9 & 0.0269 & 0.18 & 12 & 41.8 & 0.05021 & 6 & 41.8 & 0.05011 & \textsf{lower}\\
\textsf{Fuglsang-SLF} & \textsf{C/D} & 2 & 0.90 & 0.9 & 0.0266 & 0.18 & 12 & 42.0 & 0.04995 & 6 & 42.0 & 0.04967 & \textsf{lower}\\
\textsf{Potvin} & \textsf{C} & 2 & 0.95 & 0.8 & 0.0294 & 0.22 & 12 & 24.9 & \color{Red}{0.05143} & 6 & 24.9 & \color{Red}{0.05136} & \textsf{lower}\\
\textsf{Potvin-SLF} & \textsf{C} & 2 & 0.95 & 0.8 & 0.0282 & 0.10 & 16 & 16.0 & 0.05010 & 8 & 16.0 & 0.05010 & \textsf{equal}\\
\textsf{Fuglsang} & \textsf{C/D} & 2 & 0.95 & 0.9 & 0.0274 & 0.10 & 16 & 16.0 & 0.05010 & 8 & 16.0 & 0.05010 & \textsf{equal}\\
\textsf{Fuglsang-SLF} & \textsf{C/D} & 2 & 0.95 & 0.9 & 0.0275 & 0.20 & 12 & 25.8 & 0.04962 & 6 & 25.8 & 0.04985 & \textsf{higher}
\end{matrix}}$$ TIE which is significantly >0.05 in red (limit of the binomial test 0.05036). I don’t understand why in some scenarios the TIE is lower with a minimum n2.
Counterintuitive. :confused:


R-code:
library(Power2Stage)
even.n2 <- function(n1, pct) {
  ceiling(n1 * (1 + pct/100) / 2) * 2 - n1
}
alpha0 <- 0.05 # for type 2 designs
# locations of TIE (narrow grid)
CV     <- c(0.24, 0.24, 0.22, 0.10, 0.22, 0.22, 0.10, 0.20, 0.20,
            0.22, 0.20, 0.18, 0.18, 0.18)
n1     <- c(12, 12, 12, 16, 12, 12, 16, 12, 12, 16, 12, 12, 12, 12)
min.n2 <- even.n2(n1, 50)
cond   <- data.frame(Name = c(rep(c("Potvin", "Potvin-SLF"), 2),
                              rep(c("Fuglsang", "Fuglsang-SLF"), 2),
                              rep("SLF", 2), "Montague", "Montague-SLF",
                              "Fuglsang", "Fuglsang-SLF"),
                     Method = c(rep("B", 2), rep("C", 2), rep("B", 2),
                                rep("C/D", 2), rep("B", 2), rep("D", 2),
                                rep("C/D", 2)),
                     Type = c(rep(1, 2), rep(2, 2), rep(1, 2), rep(2, 2),
                              rep(1, 2), rep(2, 2), rep(2, 2)),
                     GMR = c(rep(0.95, 8), 0.90, 0.90, rep(0.90, 2),
                             rep(0.90, 2)),
                     power = c(rep(0.80, 4), rep(0.90, 4), 0.80, 0.90,
                               rep(0.80, 2), rep(0.90, 2)),
                     alpha = c(0.0294, 0.0302, 0.0294, 0.0282, 0.0284, 0.0286,
                               0.0274, 0.0275, 0.0272, 0.0268, 0.0280, 0.0268,
                               0.0269, 0.0266),
                     CV = CV, n1 = n1, stringsAsFactors = FALSE)
res    <- cbind(cond, ASN = NA, TIE = NA, min.n2 = min.n2, ASN.1 = NA,
                ANVISA = NA, comp = "equal", stringsAsFactors = FALSE)
for (j in 1:nrow(cond)) {
  ifelse (cond$Type[j] == 1, method <- "B", method <- "C")
  x1 <- power.tsd(method = method, alpha0 = alpha0,
                  alpha = rep(cond$alpha[j], 2), n1 = cond$n1[j],
                  GMR = cond$GMR[j], CV = cond$CV[j],
                  targetpower = cond$power[j])
  x2 <- power.tsd(method = method, alpha0 = alpha0,
                  alpha = rep(cond$alpha[j], 2), n1 = cond$n1[j],
                  GMR = cond$GMR[j], CV = cond$CV[j],
                  targetpower = cond$power[j], theta0 = 1.25)
  res$ASN[j] <- round(x1$nmean, 1)
  res$TIE[j] <- signif(x2$pBE, 4)
  y1 <- power.tsd(method = method, alpha0 = alpha0,
                  alpha = rep(cond$alpha[j], 2), n1 = cond$n1[j],
                  GMR = cond$GMR[j], CV = cond$CV[j],
                  targetpower = cond$power[j], min.n2 = res$min.n2[j])
  y2 <- power.tsd(method = method, alpha0 = alpha0,
                  alpha = rep(cond$alpha[j], 2), n1 = cond$n1[j],
                  GMR = cond$GMR[j], CV = cond$CV[j],
                  targetpower = cond$power[j], min.n2 = res$min.n2[j],
                  theta0 = 1.25)
  res$ASN.1[j]  <- round(y1$nmean, 1)
  res$ANVISA[j] <- signif(y2$pBE, 4)
}
names(res)[c(9, 12)] <- rep("E[N]", 2)
res$comp[which(res$ANVISA > res$TIE)] <- "higher"
res$comp[which(res$ANVISA < res$TIE)] <- "lower"
print(res[order(res$Type, res$GMR, res$power, res$Name, res$Method,
                decreasing = c(FALSE, FALSE, TRUE, FALSE, TRUE)), ],
      row.names = FALSE)

Dif-tor heh smusma 🖖 [image]
Helmut Schütz
[image]

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

Complete thread:

UA Flag
Activity
 Admin contact
22,181 posts in 4,647 threads, 1,572 registered users;
online 15 (1 registered, 14 guests [including 5 identified bots]).
Forum time: Thursday 12:49 CEST (Europe/Vienna)

The only way to comprehend what mathematicians mean by Infinity
is to contemplate the extent of human stupidity.    Voltaire

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5