crap [Two-Stage / GS Designs]

posted by Helmut Homepage – Vienna, Austria, 2020-02-16 16:43 (1760 d 21:58 ago) – Posting: # 21173
Views: 8,576

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
23,336 posts in 4,902 threads, 1,669 registered users;
39 visitors (0 registered, 39 guests [including 9 identified bots]).
Forum time: 14:42 CET (Europe/Vienna)

Biostatistician. One who has neither the intellect for mathematics
nor the commitment for medicine but likes to dabble in both.    Stephen Senn

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