crap [Two-Stage / GS Designs]

posted by Helmut Homepage – Vienna, Austria, 2020-02-16 16:43 (1131 d 02:11 ago) – Posting: # 21173
Views: 4,939

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,548 posts in 4,723 threads, 1,606 registered users;
19 visitors (0 registered, 19 guests [including 10 identified bots]).
Forum time: 18:55 CET (Europe/Vienna)

You can’t really say “similar” if it’s the same again you want.
“Similar” means something different.    Anthony Burgess

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