Confusion from Russian expert organization [Regulatives / Guidelines]

posted by Helmut Homepage – Vienna, Austria, 2019-12-03 12:19  – Posting: # 20908
Views: 229

Hi Beholder,

following the previous article another one* was published yesterday.

Regrettably designs of studies are again not given (I thought from the other article that the Telmisartan studies were performed in 2×2×2 crossovers). I guess there is a typo in the paper. I could reproduce the pooled CV only when using CV 55.34% of study #7 (and not with the 31.51% of this paper).
Seems that the studies were performed in 4-period full replicates (Candesartan in different designs?). I think that in some cases naïve pooling (and “officially” recommending a sample size based on the upper CL of the pooled CV) is not a good idea. Do you trust in a CV of Cmax of Losartan of 6.84% (5/27 studies had <10%)? I doubt it.
Similar Valsartan: Two studies with 7.54% and 8.07% (gimme a break), when the median of the 16 others is already 32.8%.

What I like (p. 681, first paragraph):

The factors contributing to the observed variation that were included in the ANOVA were the sequence, subjects, period, and drug.

(my emphasis)
Hey, no stupid nested subject(sequence)! ElMaestro will be happy.

Since the article is behind Springer’s pay-wall see the R-code at the end.

I’m not worried about differences in the 3rd decimal figure. The authors used Excel 2016. Hence, it might be a rounding issue (commercial in Excel and scientific in R).
Perhaps there are other typos? Can one of the Russian friends check the original publication?




There would be mismatch for Candesartan when assuming the same design in all studies. Hence I bootstrapped the design (note: other patterns of designs would work as well).

library(PowerTOST)
# Try to guess the Candesartan-designs. Seemingly different ones were used.
# Note: If a 3-period full replicate ("2x2x3") wouldn't matter because the
# same degrees of freedom like the partial replicate "2x3x3"
# Caution: Not a unique (i.e., the 'true') solution!

design      <- c("2x2x2", "2x3x3", "2x2x4")
CV.reported <- 0.230
CL.reported <- 0.238
CVdata <- data.frame(CV = c(24.91, 16.98,  7.92, 15.85, 23.14, 18.45,
                            22.87, 25.37,  7.24, 30.14)/100,
                     n = c(40, 35, 18, 30, 24, 18, 24, 24, 18, 37))
set.seed(123) # uncomment for full random resampling
repeat {
  CVdata$design <- sample(design, nrow(CVdata), replace = TRUE) # bootstrap designs
  x         <- unlist(CVpooled(CVdata = CVdata, alpha = 0.1))
  CV.pooled <- signif(x[["CV"]], 3)
  CV.CL     <- signif(x[["CVupper"]], 3)
  if (abs(CV.pooled - CV.reported) <= 5e-3 &
      abs(CV.CL - CL.reported) <= 1e-3) {
    break # both the pooled CV and its CL are sufficiently close to the reported ones
  }
}
drug  <- c("Losartan", "Valsartan", "Candesartan", "Telmisartan", "Irbesartan")
study <- c(27, 18, 10, 7, 5)
Cmax  <- data.frame(drug = c(rep(drug[1], study[1]), rep(drug[2], study[2]),
                             rep(drug[3], study[3]), rep(drug[4], study[4]),
                             rep(drug[5], study[5])),
                    CV = c(c( 7.39,  7.28, 46.41, 33.67, 10.16, 47.87,
                             37.67, 31.07, 40.28, 28.11, 33.67, 35.37,
                             41.42, 23.07, 40.44,  7.02, 19.51, 23.38,
                              6.84,  8.59, 23.03, 28.26, 41.80, 39.65,
                             22.71, 36.22, 25.43),
                           c(12.79, 32.61, 35.65, 38.41, 36.04, 24.65,
                             31.51, 44.09,  8.07,  7.54, 24.01, 30.54,
                             34.60, 33.02, 28.83, 33.86, 30.73, 35.79),
                           CVdata$CV*100,
                           c(43.27, 32.72, 33.67, 48.35, 49.45, 34.12,
                             55.34), # last CV given in this paper with 31.51%
                           c(20.20, 24.67, 25.12, 15.38, 15.56))/100,
                    n = c(c(24, 24, 40, 18, 18, 24, 26, 44, 72, 30, 18,
                            56, 36, 24, 48, 24, 18, 24, 24, 18, 24, 24,
                            54, 18, 24, 24, 24),
                          c(18, 70, 39, 56, 53, 38, 44, 36, 40, 40, 18,
                            24, 40, 28, 34, 34, 44, 45),
                          CVdata$n,
                          c(85, 36, 40, 59, 60, 50, 40),
                          c(27, 32, 18, 22, 24)),
                   design = c(rep("2x2x4", study[1]), rep("2x2x4", study[2]),
                              CVdata$design,
                              rep("2x2x4", study[4]), rep("2x2x4", study[5])))
# print(Cmax, row.names = FALSE) # uncomment to see the data
res <- data.frame(drug = drug,
                  CV.reported = c(0.327, 0.314, 0.230, 0.435, 0.207),
                  CL.reported = c(0.334, 0.320, 0.238, 0.448, 0.217),
                  CV.pooled = NA, CV.CL = NA)
for (j in seq_along(drug)) {
  x                <- unlist(CVpooled(CVdata = Cmax[Cmax$drug == drug[j], 2:4],
                                      alpha = 0.1))
  res$CV.pooled[j] <- signif(x[["CV"]], 3)
  res$CV.CL[j]     <- signif(x[["CVupper"]], 3)
}
print(res, row.names = FALSE)

Gives:

        drug CV.reported CL.reported CV.pooled CV.CL
    Losartan       0.327       0.334     0.327 0.334
   Valsartan       0.314       0.320     0.314 0.321
 Candesartan       0.230       0.238     0.229 0.238
 Telmisartan       0.435       0.448     0.436 0.449
  Irbesartan       0.207       0.217     0.207 0.218


Cheers,
Helmut Schütz
[image]

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

Complete thread:

Activity
 Admin contact
20,130 posts in 4,245 threads, 1,384 registered users;
online 11 (1 registered, 10 guests [including 3 identified bots]).
Forum time (Europe/Vienna): 12:13 CET

Be very, very careful what you put into that head,
because you will never, ever get it out.    Thomas Wolsey

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