crap [Two-Stage / GS Designs]

posted by Helmut Homepage – Vienna, Austria, 2020-02-16 16:43 (1525 d 03:57 ago) – Posting: # 21173
Views: 6,071

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,988 posts in 4,825 threads, 1,655 registered users;
27 visitors (0 registered, 27 guests [including 9 identified bots]).
Forum time: 21:41 CEST (Europe/Vienna)

The whole purpose of education is
to turn mirrors into windows.    Sydney J. Harris

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