Confusion from Russian expert organization [Regulatives / Guidelines]

posted by Helmut Homepage – Vienna, Austria, 2019-12-03 13:19 (1577 d 17:57 ago) – Posting: # 20908
Views: 3,920

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


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,957 posts in 4,819 threads, 1,636 registered users;
102 visitors (1 registered, 101 guests [including 9 identified bots]).
Forum time: 07:16 CET (Europe/Vienna)

With four parameters I can fit an elephant,
and with five I can make him wiggle his trunk.    John von Neumann

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