Consider allowing JavaScript. Otherwise, you have to be proficient in reading LaTeX since formulas will not be rendered. Furthermore, the table of contents in the left column for navigation will not be available and code-folding not supported. Sorry for the inconvenience.

Scripts were run on a Xeon E3-1245v3 @ 3.40GHz (1/4 cores) 16GB RAM with R 4.2.0 on Win­dows 7 build 7601, Service Pack 1, Universal C Runtime 10.0.10240.16390.

  • The right-hand badges give the respective section’s ‘level’.
    
  1. Basics about Pharmacokinetics (PK) – requiring no or only limited expertise.
    
  1. The most important sections. They are – hopefully – easily comprehensible even for novices.
    
  1. A higher knowledge of PK and/or R is required. Sorry, there is no free lunch.
    
  1. An advanced knowledge of PK and/or R is required. Not recommended for beginners in particular.
    
  1. If you are not a neRd or PK afficionado, skipping is recommended. Suggested for experts but might be confusing for others.
  • Click to show / hide R code.

Introduction

    

Which method should we use to demonstrate achievement of steady state?

First of all, design the study based on a worst-case half life (not an average).
Especially for prolonged (aka controlled, sustained, extended, long-acting) release formulations consider flip-flop Pharmacokinetics.

You can’t fix by analysis what you bungled by design.
Richard J. Light et al. (1990)1
  • Short answer:
    • Present subjects’ pre-dose concentrations, spaghetti plots,2 3 and plots of the geometric mean.
    • Use common sense.
  • Long answer:
    • Continue reading.

Background

    

For a comparative bioavailability studies we have essentially two design options:

  1. Single dose
  2. Multiple dose

The former is recommended in all guidelines for comparing immediate release formulations because it is more sen­sitive in detecting potential differences in formulations (esp. of the rate of absorption \(\small{C_\textrm{max}}\) / \(\small{t_\textrm{max}}\)). Only in rare cases (e.g., an auto-inducer like carbamazepine4) studies after multiple doses are more sensitive than after a single dose.

The latter is required in studies in patients, where the treatment cannot be interrupted with washout phases (e.g., in oncology). It is mandatory for the EMA when comparing prolonged release formulations – additionaly to the single dose study.

Guidelines

    

Past

In steady-state studies, wash-out of the last dose of the previous treatment can overlap with the build-up of the second treatment, provided the build-up period is sufficiently long (at least three times the dominating half-life).
EC (1991)5
Whenever multiple dose studies are performed it should be demonstrated that steady state has been reached.
EMEA (1999)6
In steady-state studies wash out of the previous treatment last dose can overlap with the build-up of the second treatment, provided the build-up period is sufficiently long (at least three times the terminal half-life).
EMEA (2001)7

A similar wording is used by the WHO,8 only that ‘at least five times the terminal half-life’ are recommended.

Health Canada required 1992 – 2011 multiple dose studies for drugs which accumulated, i.e., if the extrapolated \(\small{AUC}\) after a single dose was > 20% of \(\small{AUC_{0-\infty}}\).

7.6.2 Evidence of Steady State
For steady-state studies of drugs with uncomplicated characteristics, at least three consecutive pre-dose concentration levels (Cpd) are required to provide evidence of steady state. Generally, observations of Cpd for the test and reference products should be recorded at the same time of the day. One of these measurements could be taken based on the first sample of the study day in which a profile over the dosing interval is being established. Steady state is usually achieved when repeated doses of a formulation are administered over a period that exceeds five disposition half-lives of the modified-release form.

Health Canada (1996)9
    

‘Evidence of steady state’ had to be assessed by a repeated measures analysis with an amazing number of 11 (eleven‼) factors. If you want to give it a try, download the data compiled from the guidance’s Table 12-A (Ran­do­mization), Table 12-G (Test), and Table 12-H (Reference).

data     <- read.csv("https://bebac.at/downloads/HC1996-TABLE-12.csv",
                     colClasses = c(rep("factor", 5), "integer"))
geo.mean <- function(x) {
  t  <- as.numeric(unlist(unique(x[1])))
  n  <- as.integer(unlist(unique(x[2])))
  gm <- NA_real_
  for (i in seq_along(t)) {
    y <- x[x[1] == t[i], ]
    if (sum(y$C <= 0) > 0) {
      y <- y[-which(y$C <= 0), ]
    }
    if (nrow(y) > 0) {
      gm[i] <- exp(mean(log(y$C), na.rm = TRUE))
    }
  }
  return(gm)
}
Subject <- unique(as.character(data$Subject))
Form    <- unique(as.character(data$Formulation))
slopes  <- data.frame(Formulation = rep(Form, each = length(Subject)),
                      Subject = Subject, slope = NA_real_,
                      lower.CL = NA_real_, upper.CL = NA_real_,
                      sig = FALSE)
t       <- data$Time
t       <- as.numeric(levels(t))[t]
ylim    <- range(data$C.pd)
xlim    <- range(t)
cols    <- c("blue", "red")
col     <- colorRampPalette(cols)(length(Subject))
col     <- paste0(col, "80")
op      <- par(no.readonly=TRUE)
par(mar = c(4.1, 4, 0.2, 0.2), cex.axis = 0.9)
split.screen(c(2, 1))
for (i in seq_along(Form)) {
  screen(i)
  ifelse (i == 1, xlab  <- "", xlab <- "Time (day)")
  plot(xlim, ylim, type = "n", las = 1, xlab = xlab,
       ylab = paste0("C.pd  (", Form[i], ")"))
  grid()
  x <- data.frame(t = t,
                  C = data[data$Formulation == Form[i], 6])
  lines(unique(t), geo.mean(x), lwd = 2)
  for (j in seq_along(Subject)) {
    t  <- data$Time[data$Formulation == Form[i] &
                    data$Subject == Subject[j]]
    t  <- as.numeric(levels(t))[t]
    C  <- data$C.pd[data$Formulation == Form[i] &
                    data$Subject == Subject[j]]
    points(t, C, pch = 16, cex = 1.1, col = col[j])
    x  <- data.frame(t = t, C = C)
    x  <- tail(x, 3)
    m  <- lm(C ~ t, data = x)
    lines(x$t, predict(m), col = substr(col[j], 1, 7))
    slopes$slope[slopes$Formulation == Form[i] &
                 slopes$Subject == Subject[j]] <- coef(m)[2]
    ci <- suppressWarnings(confint(m, "t"))
    slopes[slopes$Formulation == Form[i] &
           slopes$Subject == Subject[j], 4:5] <- sprintf("%+.4f", ci)
    if (sign(ci[1]) == sign(ci[2]))
      slopes$sig[slopes$Formulation == Form[i] &
                 slopes$Subject == Subject[j]] <- TRUE
  }
}
close.screen(all = TRUE)
par(op)
slopes$slope     <- sprintf("%+5.1f", slopes$slope)
names(slopes)[6] <- "sign # 0"
last.3 <- data[as.numeric(as.character(data$Time)) >= 6, ]
muddle <- lm(log(C.pd) ~ Sequence + Subject * Sequence + Period +
                         Formulation + Subject * Formulation * Sequence + 
                         Time + Time * Sequence + Time * Subject * Sequence +
                         Time * Period + Time * Period +
                         Time * Formulation * Subject * Sequence,
                         data = last.3)
print(slopes, row.names = FALSE); anova(muddle) # Oops!
Of main importance in this analysis is the time and time*form interaction. The error term to test time is the time*ID(Seq). The error term to test time*form is time*form*ID(Seq). Should either the time or time*form effects be significant, the study may not have been at steady state for one or both formulations.
Health Canada (1996)9

Back in the day I failed to reproduce the results given in Table 12-I.
In R I got …

Analysis of Variance Table
Response: log(C.pd)
                         Df  Sum Sq  Mean Sq F value Pr(>F)
Sequence                  1 0.01326 0.013260     NaN    NaN
Subject                  10 1.22059 0.122059     NaN    NaN
Period                    1 0.01825 0.018249     NaN    NaN
Formulation               1 0.22069 0.220686     NaN    NaN
Time                      2 0.11935 0.059675     NaN    NaN
Subject:Formulation      10 0.56173 0.056173     NaN    NaN
Sequence:Time             2 0.13041 0.065204     NaN    NaN
Subject:Time             20 0.71386 0.035693     NaN    NaN
Period:Time               2 0.06441 0.032204     NaN    NaN
Formulation:Time          2 0.05961 0.029804     NaN    NaN
Subject:Formulation:Time 20 0.60824 0.030412     NaN    NaN
Residuals                 0 0.00000      NaN               
Warning message:
In anova.lm(m) : ANOVA F-tests on an essentially perfect fit are unreliable

… and in Phoenix WinNonlin (all effects fixed):

ERROR 11068: There are no degrees of freedom for residual. No tests are possible.

When I specified all subject-related effects as random:

      Hypothesis    Numer_DF    Denom_DF      F_stat      P_value
-----------------------------------------------------------------
             int           1          60     4446.56       0.0000
        Sequence           1          60        0.0609162  0.8059
     Formulation           1          60        3.04158    0.0863
            Time           2          60        1.00778    0.3711
   Time*Sequence           2          60        1.19822    0.3088
     Time*Period           3          60        1.59434    0.2002
Time*Formulation           2          60        1.64308    0.2020

\[\small{\text{TABLE 12-I }\textsf{(in all of its doubtful beauty)}}\] \[\small{\begin{array}{lrcccc} \hline\text{Source} & \text{df} & \text{SS} & \text{MS} & \text{F} & \text{PR > F}\\\hline \text{Seq} & 1 & 0.01500416 & 0.01500416 & 0.12 & 0.7313\\ \text{ID(Seq)} & 10 & 1.20256303 & 1.20256303 & 2.11 & 0.1278\\ \text{Period} & 1 & 0.04556284 & 0.04556284 & 0.80 & 0.3926\\ \text{Form} & 1 & 0.22620312 & 0.22620312 & 3.96 & 0.0745\\ \text{ID*Form(Seq)} & 10 & 0.57066567 & 0.0570666\phantom{0} & - & -\\ \text{Time} & 2 & 0.11182757 & 0.05591378 & 1.60 & 0.2274\\ \text{Time*Seq} & 10 & 0.13927056 & 0.06963528 & 1.99 & 0.1631\\ \text{Time*ID(Seq)} & 20 & 0.70058566 & 0.03502928 & - & -\\ \text{Time*Period} & 2 & 0.07672565 & 0.03836282 & 1.24 & 0.3110\\ \text{Time*Form} & 2 & 0.06390201 & 0.03195101 & 1.03 & 0.3746\\ \text{Time*Form*ID(Seq)} & 20 & 0.61937447 & 0.03096872 & - & -\\ \text{Corrected Total} & 71 & 3.74093818 & - & - & -\\\hline \end{array}}\] Maybe you are equipped with Harry Potter’s magic wand. If you succeed in reproducing this table, drop me a note how you did it. I’m always eager to learn.

However, the outcome of such an analysis is dichotomous (pass | fail), risking to discard the entire [sic] study. The Family-wise Error Rate for two simultaneous tests at level \(\small{\alpha}\) is given by \[FWER=1-(1-\alpha)^2 \tag{1}\] or 9.75% for \(\small{\alpha=0.05}\). That means, following this method you may have to trash almost one of ten studies although steady state was achieved.
Given, that is only of historical interest.

Current

    

The requirement of performing multiple dose studies was lifted in 2012 by Health Canada. If such studies are performed, the pre-dose concentrations have to be reported.10

Because single-dose studies are considered more sensitive in addressing the primary question of BE (e.g., release of the drug substance from the drug product into the systemic circulation), mul­tiple-dose studies are generally not recommended.
FDA (2014)11
Whenever multiple dose studies are performed it should be demonstrated that steady state has been reached. Achievement of steady-state is assessed by comparing at least three pre-dose concentrations for each formulation, unless otherwise justified.
EMA (2014)12

Since the EMA’s guideline is adopted in Australia, the same story Down Under.13

    

In Europe regularly a linear regression of the last three pre-dose concentrations was performed, allowing to exclude subjects who are not in steady state. The idea behind is based on elementary pharmacokinetics. By definition in steady state the rate of inflow equals the rate of outflow. Hence, in all dosing intervals the pre-dose concentrations (\(\small{C_{\textrm{pd}}}\)) are expected to be similar. Therefore, a linear regression should give a slope close to zero.

    

Recall the accumulation index \(\small{R=1/(1-2^{-\tau\,/\,t_{1/2}}\,)}\). \(\small{R}\) is strictly valid for intravenous doses and approximate for extravascular administrations in a one-compartment model if \(\small{k_{01}\gg k_{10}}\).
An example with \(\small{\tau=t_{1/2}\;(R=2)}\), where \(\small{C_\textrm{pd}}\) is the pre-dose concentration and \(\small{C_\tau}\) is the concentration at the end of the dosing interval. Values ‘by definition’ are denoted by \(\small{\ast}\). \[\small{ \begin{array}{rrrrrr} \text{dose} & \text{time} & C_\textrm{pd}\phantom{00000} & \text{% change} & \text{moving slope} & C_\tau\phantom{000000}\\ \hline 1 & 0 & 0\phantom{.000000}\phantom{0} & - & - & 50\phantom{.00000000}\\ 2 & 24 & 50\phantom{.0000000} & 50\phantom{.0000000} & - & 75\phantom{.00000000}\\ 3 & 48 & 75\phantom{.0000000} & 16.6666667 & 0.78125 & 87.5\phantom{0000000}\\ 4 & 72 & 87.5\phantom{000000} & 7.1428571 & 0.39063 & 93.75\phantom{000000}\\ 5 & 96 & 93.75\phantom{00000} & 3.3333333 & 0.19531 & 96.875\phantom{00000}\\ 6 & 120 & 96.875\phantom{0000} & 1.6129032 & 0.09766 & 98.4375\phantom{0000}\\ 7 & 144 & 98.4375\phantom{000} & 0.7936508 & 0.04883 & 99.21875\phantom{000}\\ 8 & 168 & 99.21875\phantom{00} & 0.3937008 & 0.02441 & 99.609375\phantom{00}\\ 9 & 192 & 99.609375\phantom{0} & 0.1960784 & 0.01221 & 99.8046875\phantom{0}\\ 10 & 216 & 99.8046875 & 0.0978474 & 0.00610 & 99.90234375\\ \infty & \infty & 100\phantom{.0000000} & 0\ast\phantom{.00000} & 0\ast\phantom{.000} & 100\;(=C_\textrm{pd})\phantom{0}\\ \hline \end{array}}\]

    

Regression Analyses

While appealing,14 a regression approach is problematic.

  1. In any regression approach it is assumed that responses are independent. However, in PK clearly this is not the case – pre-dose concentrations are highly correlated.
  2. If there is low to intermediate within-subject variability, it is quite likely that some subjects show a slope which is statistically significant different from zero (or alternatively, its confidence interval (CI) does not contain zero).
    One will – falsely – conclude that the respective subjects are not in steady-state.
  3. If the within-subject variability is high, one will find no significant difference of the slope to zero (i.e., the CI contains zero) – although some subjects are still in the build-up phase.
    One will – falsely – conclude that steady-state is achieved.
    

Linear model

For every subject a linear model is set up \[Y=a+bX+\epsilon, \tag{2}\] where \(\small{Y}\) is the vector of responses (here the pre-dose concentrations), \(\small{X}\) the vector of predictors (here the pre-dose sampling time points), and \(\epsilon\) the unexplained error with \(\small{\mathcal{N}(0;\sigma^2)}\). Fitting the data gives estimates of the intercept \(\small{\hat{a}}\) and the slope \(\small{\hat{b}}\). One can either perform a one-sample t-test of \(\small{\hat{b}}\) versus zero with \(\small{\alpha=0.05}\) (significantly different if \(\small{p(t)<0.05}\)) or assess whether zero is contained in the 95% CI. Since the latter is more ‘popular’, we employed it in the following.

    

The script is for a one-compartment model, first order absorption and elimination with an optional lag-time. Flip-flop PK (\(\small{k_{01}=k_{10}}\)) is implemented. Cave: 270 LOC.

sim.ss <- function(nsims, f, D, V, t12.a, t12.e, tlag, tau, fact,
                   CV.lo = 0.1, CV.hi = 0.4, delta = 0.2, method = "linear",
                   setseed = TRUE, progress = FALSE, plots = FALSE) {
  # Cave: Long run time if nsims > 1e4
  if (nsims < 1)      stop("nsims must be at least 1.")
  if (f <= 0 | f > 1) stop("f must be positive and <= 1.")
  if (D <= 0)         stop("D must be positive.")
  if (t12.a <= 0)     stop("t12.a (absorption half life) must be positive.")
  if (t12.e <= 0)     stop("t12.e (elimination half life) must be positive.")
  if (tlag < 0)       stop("tlag must >= 0.")
  if (tau < 0)        stop("tau must be positive.")
  if (CV.lo <= 0)     stop("CV.lo must be positive.")
  if (CV.hi <= 0)     stop("CV.hi must be positive.")
  if (delta < 0)      stop("delta must be positive.")
  if (fact < 3) {
    message("fact < 3 not reasonable. Forced to 3.")
    fact <- 3
  }
  if (!method %in% c("linear", "power")) stop("method not supported.")

  one.comp <- function(f, D, V, k01, k10, tlag, t) {
    # one-compartment model, first order absorption
    # and elimination
    if (!isTRUE(all.equal(k01, k10))) {# common: k01 != k10
      C    <- f * D * k01 / (V * (k01 - k10)) *
              (exp(-k10 * (t - tlag)) - exp(-k01 * (t - tlag)))
      tmax <- log(k01 / k10) / (k01 - k10) + tlag
      Cmax <- f * D * k01 / (V * (k01 - k10)) *
              (exp(-k10 * tmax) - exp(-k01 * tmax))
    } else {                           # flip-flop
      k    <- k10
      C    <- f * D / V * k * (t - tlag) * exp(-k * (t - tlag))
      tmax <- 1 / k
      Cmax <- f * D / V * k * tmax * exp(-k * tmax)
    }
    C[C <= 0] <- 0 # correct negatives caused by lag-time
    res <- list(C = C, Cmax = Cmax, tmax = tmax)
    return(res)
  }

  round.up <- function(x, y) {
    # round x up to the next multiple of y
    return(as.integer(y * (x %/% y + as.logical(x %% y))))
  }

  superposition <- function(f, D, V, k01, k10, tlag, tau, t, n.D) {
    # single dose
    x         <- data.frame(adm = 1L, dose = NA, t = t,
                            C = one.comp(f, D, V, k01, k10, tlag, t)$C)
    x$dose[1] <- D
    # multiple dose (nonparametric superposition)
    y <- x
    for (i in 1:nrow(y)) {
      if (isTRUE(all.equal(y$t[i] %% tau, 0))) y$dose[i] <- D
    }
    delta <- unique(diff(y$t))
    adm   <- seq(0, max(y$t), tau) # administration times
    adm.n <- 1:length(adm)         # number of administration
    if (isTRUE(all.equal(delta, tau))) {# for pre-dose concentrations
      y$adm <- adm.n
    } else {                            # for build-up
      t.tau <- sum(y$t < tau)
      y$adm <- head(rep(adm.n, each = t.tau), nrow(y))
    }
    z <- 2:(n.D + 1)
    for (i in seq_along(z)) {
      tmp.y              <- y$C[y$adm >= z[i]]
      tmp.x              <- x$C[1:length(tmp.y)]
      y$C[y$adm >= z[i]] <- tmp.y + tmp.x
    }
    res <- list(SD = x, MD = y)
    return(res)
  }

  CV2var <- function(CV) {
    # convert CV to variance
    return(log(CV^2 + 1))
  }

  mods <- function(x, method = "linear", delta = 0.2) {
    # last three pre-dose concentrations
    x <- tail(x, 3)
    # model and 95% CI of slope
    if (method == "linear") {
      m  <- lm(C ~ t, data = x)
      a  <- coef(m)[[1]]
      ci <- confint(m, "t", level = 0.95)
    }
    if (method == "power") {
      m  <- lm(log(C) ~ log(t), data = x)
      a  <- exp(coef(m)[[1]])
      ci <- confint(m, "log(t)", level = 0.95)
    }
    # assess whether the CI contains zero
    ifelse (sign(ci[1]) == sign(ci[2]), sig1 <- TRUE, sig1 <- FALSE)
    # assess whether the CI is within +/- delta
    ifelse ((ci[1] >= -delta & ci[2] <= +delta), sig2 <- FALSE, sig2 <- TRUE)
    res <- list(method = method, a = a, b = coef(m)[[2]],
                lwr = ci[[1]], upr = ci[[2]], sig1 = sig1, sig2 = sig2,
                t.start = x$t[1], t.end = x$t[3])
    return(res)
  }

  geo.mean <- function(x) {
    # geometric mean
    n <- as.integer(unlist(unique(x[1])))
    t <- as.numeric(unlist(unique(x[2])))
    gm <- NA_real_
    for (i in seq_along(t)) {
      y <- x[x[2] == t[i], ]
      if (sum(y$C <= 0) > 0) {
        y <- y[-which(y$C <= 0), ] # only positive values
      }
      if (nrow(y) > 0) {
        gm[i] <- exp(mean(log(y$C), na.rm = TRUE))
      }
    }
    return(gm)
  }

  if (nsims > 1e4) progress <- TRUE # to keep the spirit high
  k01    <- log(2) / t12.a          # absorption rate constant
  k10    <- log(2) / t12.e          # elimination rate constant
  ifelse (t12.e >= t12.a, t.last <- fact * t12.e, t.last <- fact * t12.a)
  t.last <- round.up(t.last, tau)   # time of last dose
  t      <- seq(0, t.last, tau)     # time of administrations
  n.D    <- length(t)               # number of doses
  if (setseed) set.seed(1234567)    # for reproducibility
  # build-up (high resolution)
  t.bu     <- seq(0, t.last, length.out = (t.last * 10 + 1))
  bu       <- superposition(f, D, V, k01, k10, tlag, tau, t = t.bu, n.D)$MD
  # pre-dose concentrations
  MD       <- bu[!is.na(bu$dose), ]
  mod.a    <- mods(MD, method)$a    # intercept without error
  mod.b    <- mods(MD, method)$b    # slope/exponent without error
  C.ss     <- tail(MD$C, 1)         # last pre-dose of model
  # simulated pre-dose concentrations
  sim.lo   <- sim.hi <- data.frame(sim = rep(1:nsims, each = n.D),
                                   t = t, C = NA_real_)
  # results with low and high variability
  lo       <- hi <- data.frame(sim = 1:nsims, method = NA_character_,
                               a = NA_real_, b = NA_real_,
                               lwr = NA_real_, upr = NA_real_,
                               sig1 = NA, sig2 = NA,
                               t.start = NA_real_, t.end = NA_real_)
  if (progress) pb <- txtProgressBar(0, 1, 0, char = "\u2588",
                                     width = NA, style = 3)
  for (sim in 1:nsims) {
    # multiplicative error
    C.lo <- rlnorm(n       = n.D,
                   meanlog = log(MD$C) - 0.5 * CV2var(CV.lo),
                   sdlog   = sqrt(CV2var(CV.lo)))
    C.hi <- rlnorm(n       = n.D,
                   meanlog = log(MD$C) - 0.5 * CV2var(CV.hi),
                   sdlog   = sqrt(CV2var(CV.hi)))
    sim.lo$C[sim.lo$sim == sim] <- C.lo
    sim.hi$C[sim.hi$sim == sim] <- C.hi
    # get slope, 95% CI, and significance
    lo[sim, 2:10] <- mods(sim.lo[sim.lo$sim == sim, ], method)
    hi[sim, 2:10] <- mods(sim.hi[sim.lo$sim == sim, ], method)
    if (progress) setTxtProgressBar(pb, sim / nsims)
  } # simulations running...
  if (progress) close(pb)
  if (method == "linear") {
    txt <- "slope"
    me  <- "linear model: C ~ a + b * t"
  } else {
    txt <- "exponent"
    me  <- "power model: C ~ a * t^b"
  }
  me <- paste(me, "\n delta =", delta,
              "(acceptance limits {-delta, +delta})\n")
  # cosmetics
  fm <- paste0("CV = %4.1f%%, median of ", txt, "s = %+.5f")
  fm <- paste0(fm, "\n  %5.1f%% positive ", txt, "s")
  fm <- paste0(fm, "\n  %5.1f%% negative ", txt, "s")
  fm <- paste0(fm, "\n   significant ", txt, "s: %6.2f%% %s")
  fm <- paste0(fm, "\n   failed ", txt, "s     : %6.2f%% %s")
  # results
  cat(prettyNum(nsims, format = "d", big.mark =","), "simulations,", me,
      txt, "of model =", sprintf("%+.5f", mod.b),
      "\n last model’s pre-dose concentration =", signif(C.ss, 4), "\n",
      sprintf(fm, 100 * CV.lo, median(lo$b),
                  100 * sum(lo$b > 0) / nsims,
                  100 * sum(lo$b < 0) / nsims,
                  100 * sum(lo$sig1, na.rm = TRUE) / nsims,
                  "(95% CI does not contain zero)",
                  100 * sum(lo$sig2, na.rm = TRUE) / nsims,
                  "(95% CI not within acceptance limits)\n"),
      sprintf(fm, 100 * CV.hi, median(hi$b),
                  100 * sum(hi$b > 0) / nsims,
                  100 * sum(hi$b < 0) / nsims,
                  100 * sum(hi$sig1, na.rm = TRUE) / nsims,
                  "(95% CI does not contain zero)",
                  100 * sum(hi$sig2, na.rm = TRUE) / nsims,
                  "(95% CI not within acceptance limits)\n"))
  if (plots) {
    # use [Page][up] / [Page][down] keys to switch
    # between plots in the graphics device
    windows(width = 4.5, height = 4.5, record = TRUE)
    op <- par(no.readonly = TRUE)
    par(mar = c(4, 3.9, 0.2, 0.1), cex.axis = 0.9)
    ylim  <- range(bu$C)
    if (method == "power") {
      last.3 <- tail(MD$t, 3)
      t.tmp <- seq(last.3[1], last.3[3], length.out = 251)
    }
    for (sim in 1:nsims) {
      if (sim == 1) {
        plot(bu$t, bu$C, type = "l", ylim = ylim, axes = FALSE,
             xlab = "time (h)", ylab = "concentration  (unit)")
        grid(nx = NA, ny = NULL)
        abline(v = t, lty = 3, col = "lightgrey")
        axis(1, at = t)
        axis(2, las = 1)
        box()
        points(MD$t, MD$C, pch = 15, cex = 1.25)
      }
      points(sim.lo$t[sim.lo$sim == sim], sim.lo$C[sim.lo$sim == sim],
             pch = 21, cex = 1.1, col = "blue", bg = "#A0A0FF")
      if (lo$sig1[sim]) {
        col <- "red"
        lwd <- 2
      } else {
        col <- "#A0A0FF"
        lwd <- 1
      }
      if (method == "linear") {
        lines(x = lo[sim, 9:10],
              y = c(lo$a[sim] + lo$b[sim] * lo$t.start[sim],
                    lo$a[sim] + lo$b[sim] * lo$t.end[sim]), col = col, lwd = lwd)
      }
      if (method == "power") {
        lines(x = t.tmp, y = lo$a[sim] * t.tmp^lo$b[sim], col = col, lwd = lwd)
      }
    }
    points(t, geo.mean(sim.lo), pch = 24, cex = 1.5, bg = "#FF0808BF")
    for (sim in 1:nsims) {
      if (sim == 1) {
        plot(bu$t, bu$C, type = "l", ylim = ylim, axes = FALSE,
             xlab = "time (h)", ylab = "concentration  (unit)")
        grid(nx = NA, ny = NULL)
        abline(v = t, lty = 3, col = "lightgrey")
        axis(1, at = t)
        axis(2, las = 1)
        box()
        points(MD$t, MD$C, pch = 15, cex = 1.25)
      }
      points(sim.hi$t[sim.hi$sim == sim], sim.hi$C[sim.hi$sim == sim],
             pch = 21, cex = 1.1, col = "blue", bg = "#A0A0FF")
      if (hi$sig1[sim]) {
        col <- "red"
        lwd <- 2
      } else {
        col <- "#A0A0FF"
        lwd <- 1
      }
      if (method == "linear") {
        lines(x = hi[sim, 9:10],
              y = c(hi$a[sim] + hi$b[sim] * hi$t.start[sim],
                    hi$a[sim] + hi$b[sim] * hi$t.end[sim]), col = col, lwd = lwd)
      }
      if (method == "power") {
        lines(x = t.tmp, y = hi$a[sim] * t.tmp^hi$b[sim], col = col, lwd = lwd)
      }
    }
    points(t, geo.mean(sim.hi), pch = 24, cex = 1.5, bg = "#FF0808BF")
    par(op)
  }
}
    

Let us perform some simulations.
We explore low (\(\small{CV=10\%}\)) and high within-subject variability (\(\small{CV=40\%}\)). In a conservative manner we dose for seven half lives.
Additionally to testing whether the CI contains zero, in analogy to BE we test also whether it lies entirely within – arbitrary – acceptance limits of \(\small{\{-\Delta,+\Delta\}}\).

nsims  <- 1e4L # number of simulations
D      <- 200L # dose
f      <- 2/3  # fraction absorbed (BA)
V      <- 3    # volume of distribution
t12.a  <- 0.75 # absorption half life
t12.e  <- 12   # elimination half life
tlag   <- 0.25 # lag time
tau    <- 24L  # dosing interval
fact   <- 7L   # half life factor
CV.lo  <- 0.10 # drug with low variability
CV.hi  <- 0.40 # drug with high variability
delta  <- 0.2  # for acceptance limits = {1 - delta, 1 + delta}
sim.ss(nsims, f, D, V, t12.a, t12.e, tlag, tau, fact,
       CV.lo, CV.hi, delta)
# 10,000 simulations, linear model: C ~ a + b * t 
#  delta = 0.2 (acceptance limits {-delta, +delta})
#  slope of model = +0.01957 
#  last model’s pre-dose concentration = 15.97 
#  CV = 10.0%, median of slopes = +0.01972
#    67.5% positive slopes
#    32.5% negative slopes
#    significant slopes:   5.37% (95% CI does not contain zero)
#    failed slopes     :  78.45% (95% CI not within acceptance limits)
#  CV = 40.0%, median of slopes = +0.01621
#    53.9% positive slopes
#    46.1% negative slopes
#    significant slopes:   4.60% (95% CI does not contain zero)
#    failed slopes     :  96.25% (95% CI not within acceptance limits)

With a half life of 12 hours and once daily dosing after five administrations we are close to the true steady state (≈16). Hence, the slope of the build-up based on the model is slightly positive. Only in true steady state the slope would be zero (see above). Even then we would expect 5% significant results by pure chance. That’s the False Positive Rate (FPR) of any test performed at level \(\small{\alpha=0.05}\).

With low variability we are above the FPR. That’s correct because the true slope is positive indeed.
On the other hand, with high variability the test is not powerful enough to detect the positive slope and we are close to the level of the test.

Note also that with low variability we see more positive slopes than negative ones – which is correct in principle. With high variability everything drowns in noise.

The confidence interval inclusion approach fails with flying colors. Definitely not a good idea.

Let’s explore a smaller subset, which reflects better what we might face in a particular study.


Fig. 1 First 24 of the simulated subjects, \(\small{CV=10\%}\).
Blue lines estimated regressions, red lines with significant slope, red triangles geometric means, black line model of build-up, black squares its pre-dose concentrations.


Fig. 2 First 24 of the simulated subjects, \(\small{CV=40\%}\).
Blue lines estimated regressions, red triangles geometric means, black line model of build-up, black squares its pre-dose concentrations.

Here with low variability three simulated subjects show a significant slope (FPR 12.5%) and with high variability none.

Of course, in reality the level of the true steady state is unknown. The geometric means show that the pre-dose concentrations are stable, though with low variability they seem to rise a bit.

A shorter build-up (fewer doses) might be risky. Here planned with five half lives as recommended in the guide­lines (only four doses, last dosing time rounded up from 60 to 72 hours).

10,000 simulations, linear model: C ~ a + b * t 
 delta = 0.2 (acceptance limits {-delta, +delta})
 slope of model = +0.07828 
 last model’s pre-dose concentration = 15.78 
 CV = 10.0%, median of slopes = +0.07744
   97.6% positive slopes
    2.4% negative slopes
   significant slopes:  10.01% (95% CI does not contain zero)
   failed slopes     :  85.31% (95% CI not within acceptance limits)
 CV = 40.0%, median of slopes = +0.07385
   69.4% positive slopes
   30.6% negative slopes
   significant slopes:   5.61% (95% CI does not contain zero)
   failed slopes     :  96.15% (95% CI not within acceptance limits)

The positive slopes are detected. With low variability 10.01% is clearly above the level of the test. With high variability 5.61% is just slightly above the level of the test.

As before, we assess a small subset.


Fig. 3 First 24 of the simulated subjects, \(\small{CV=10\%}\).
Blue lines estimated regressions, red triangles geometric means, black line model of build-up, black squares its pre-dose concentrations.


Fig. 4 First 24 of the simulated subjects, \(\small{CV=40\%}\).
Blue lines estimated regressions, red line with significant slope, red triangles geometric means, black line model of build-up, black squares its pre-dose concentrations.

With low variability none of the simulated subjects show a significant slope and with high variability one. However, what might a regulatory assessor think? With low variability all slopes are positive and with high variability 79.2%.


    

An example from my files. A CNS-drug with polymorphic metabolism (\(\small{CV_\textrm{inter}\gg CV_\textrm{intra}}\)). Given the wide range of half lives reported in the literature and observed in our single dose studies, we dosed o.a.d. for 14 days, translating into an average of 15.5 half lives (minimum 5.2, maximum 46). \[\small{\textrm{PK metric (ng/mL): }\bar{x}_\textrm{geom}\;(CV)}\]\[\small{ \begin{array}{lccc} \textrm{Treatment} & C_\textrm{pd} & C_\textrm{min} & C_\tau\\\hline \textrm{Test} & 28.47\;(80\%) & 26.99\;(79\%) & 33.41\;(59\%)\\ \textrm{Reference} & 29.80\;(77\%) & 28.19\;(75\%) & 32.84\;(61\%)\\\hline \end{array}}\]\(\small{C_\textrm{pd}>C_\textrm{min}}\), since in 26 of the 56 profiles we observed a lag time. Recall the accumulation example above. It is common that \(\small{C_\tau>C_\textrm{pd}}\) because we can never attain true steady state.

Although not assessed in the study, all of these PK metrics would pass conventional bioequivalence. \[\small{\begin{array}{lccccc} \textrm{PK metric} & PE & 90\%\;CL_\textrm{lo} & 90\%\;CL_\textrm{hi} & CV_\textrm{intra} & CV_\textrm{inter}\\\hline \phantom{000}C_\textrm{pd} & \phantom{1}95.54\% & 81.29\% & 112.29\% & 39.5\% & 133.3\%\\ \phantom{000}C_\textrm{min} & \phantom{1}95.74\% & 81.82\% & 112.03\% & 38.3\% & 128.2\%\\ \phantom{000}C_\tau & 100.48\% & 90.27\% & 111.85\% & 25.7\% & \phantom{1}94.3\%\\\hline \end{array}}\] Here the results of the first period.

linear model: C ~ a + b * t 
Δ = 0.5 (acceptance limits {–Δ, +Δ}) 
  42.9% positive slopes
  57.1% negative slopes
  significant slopes:  3.57% (95% CI does not contain zero)
  failed slopes     : 82.14% (95% CI not within acceptance limits)


Fig. 6 Spaghetti plot of a CNS-drug in 28 subjects. Red line regression with significant slope,
red triangles geometric means.

The one subject with a significant slope (it was a close shave: 95% CI 0.0039 – 1.038) had low variability. How­ever, at the end of the profile day the concentration was lower than at 312 hours. Hence, it is reasonable to conclude that the subject was in steady state and the apparently rising concentrations were due to pure chance. There was another subject with a similar slope. Since the variability was higher, the slope was not significant.
Note that ≈82% would fail even with an extremely liberal \(\small{\Delta=0.5}\).

According to the protocol we presented only summary tables, individual and spaghetti plots. All regulatory assessors were fine with that.


    
Interlude: Flip-flop Pharmacokinetics

A word of caution:

\(\small{k_{01}}\): absorption rate constant
\(\small{k_{10}}\): elimination rate constant

Even in a simple one-compartment model \(\small{k_{01}}\) and \(\small{k_{10}}\) are not identifiable. Where­as for IR formulations it is reasonable to assume \(\small{k_{10}\ll k_{01}}\), i.e., that elimination is much slower than absorption, for prolonged release formulations this must not be – and very likely is not – the case. If you are a dinosaur of biopharmaceutics like me, perhaps you remember the slogan of the 1980s »the flatter is better«. A main target of product development is to decrease \(\small{k_{01}}\) (increase the absorption half life). Never plan the study based on the apparent elimination half life of an IR formulation.

Here an example of flip-flop PK with \(\small{k_{01}=k_{10}=\textsf{8 h}}\), designed with the naïve dosing of seven half lives (56 round­ed up to 72 hours).


Fig. 5 24 simulated subjects, \(\small{CV=10\%}\). Blue lines estimated regressions, red triangles geometric means, black line model of build-up, black squares its pre-dose concentrations.

That’s a recipe for disaster. All slopes are positive. Though none is significantly different from zero, it would need a blind assessor to accept your claim that steady state was achieved. And he/she would be absolutely right. It would need dosing for ten half lives to end up with something pretty similar to Fig. 1.
As usual: Know the drug and know your formulation!

    

Power model

Given the behavior of the build-up, which is concave, one might be tempted set up a power model \[Y=a\cdot X^{\,b}+\epsilon. \tag{3}\] Like in dose-proportionality15 for convenience its linearized form \[\log_{e}Y=\log_{e}a+b\cdot\log_{e}X+\epsilon \tag{4}\] can be fitted. The tests are the same like in the linear model.

nsims  <- 1e4L # number of simulations
D      <- 200L # dose
f      <- 2/3  # fraction absorbed (BA)
V      <- 3    # volume of distribution
t12.a  <- 0.75 # absorption half life
t12.e  <- 12   # elimination half life
tlag   <- 0.25 # lag time
tau    <- 24L  # dosing interval
fact   <- 5L   # half life factor
CV.lo  <- 0.10 # drug with low variability
CV.hi  <- 0.40 # drug with high variability
delta  <- 0.2  # for acceptance limits = {1 - delta, 1 + delta}
method <- "power"
sim.ss(nsims, f, D, V, t12.a, t12.e, tlag, tau, fact,
       CV.lo, CV.hi, method = method)
# 10,000 simulations, power model: C ~ a * t^b 
#  delta = 0.2 (acceptance limits {-delta, +delta})
#  exponent of model = +0.25554 
#  last model’s pre-dose concentration = 15.78 
#  CV = 10.0%, median of exponents = +0.25453
#    97.9% positive exponents
#     2.1% negative exponents
#    significant exponents:  11.82% (95% CI does not contain zero)
#    failed exponents     :  98.81% (95% CI not within acceptance limits)
#  CV = 40.0%, median of exponents = +0.26840
#    70.1% positive exponents
#    29.9% negative exponents
#    significant exponents:   5.62% (95% CI does not contain zero)
#    failed exponents     :  99.63% (95% CI not within acceptance limits)

Do we gain something? Not really.

As above the subset of 24 subjects.


Fig. 7 First 24 of the simulated subjects, \(\small{CV=10\%}\).
Blue lines estimated regressions, red triangles geometric means, black line model of build-up, black squares its pre-dose concentrations.


Fig. 8 First 24 of the simulated subjects, \(\small{CV=40\%}\).
Blue lines estimated regressions, red line with significant slope, red triangles geometric means, black line model of build-up, black squares its pre-dose concentrations.

We would arrive at the same conclusion than with the linear model. When we run both models we see that in some cases the power model fits better (based on an ANOVA or the AIC). However, we see also that some fits are convex and that is from a theoretical perspective simply wrong. That’s a dead end.

    

Alternative?

So why are we not fitting the underlying function \[C=C_\textrm{ss}\big{(}1-\exp(-\lambda \times t)\big{)} \tag{5}\] of the saturation phase directly? There are two problems, a technical and a theoretical one.

We cannot linearize \(\small{(5)}\) like we did with the power model \(\small{(3)}\). Hence, we require nonlinear modeling as provided in R’s function nls(), where we need suitable start values. In many cases \(\small{\max (C) \Rightarrow C_\textrm{ss}}\) and \(\small{\log_{e}2\,/\,t_{1/2}\Rightarrow\lambda}\) work. Alternatively we can set up the model in Phoenix Win­Nonlin. However, in most cases calculating a CI fails.

Even if we succeed in getting a CI, which parameter should we test and against what? The true steady state is unknown and therefore, testing \(\small{\widehat{C_\textrm{ss}}}\) is not an option. We face a similar problem with testing \(\small{\widehat{\lambda}}\). We have only the half life used in study planning and no clue what the subjects’ true predominant rate constants are.

    

Summary

NCA and statistics associated with either Ctrough or dosing interval PK parameters have limited value for SS characterization.
Ctrough is not very sensitive to characterize steady state (SS), especially for compounds that attained steady state slowly.

Nicolas et al. (2013)16

Testing for a significant difference is as flawed as a similar approach in the early 1980s in bioequivalence was:
A large difference with high variability passes and a small difference with low variability fails.

Fig. 9 95% Confidence intervals:
–0.00113, +0.00383, +0.000483, +0.000864

Assessing the CI would only make sense if there would be a priori defined acceptance limits. Such limits were never defined. Even an extremely liberal \(\small{\Delta\,0.5}\) does not work because the pre-dose concentrations are too variable. In the example above 83.73% would fail with low variability and 97.46% with high variability.

As we have seen in the simulations, we can get caught in the trap of false positives. Consequently we would exclude subjects and loose power. On the other hand, esp. with high variability, we would keep subjects which are not in steady state.

Too few doses (say, based on five times the half life) might not be a good idea. With low variability we will be punished by slopes significantly different from zero and even with high variability the plots will be telling.
This exercise is not just about making assessors happy. Based on the superposition principle17 of PK we must com­pare bioavailabilities only after a single dose or in (pseudo-)steady state – not in the saturation phase between. Such a comparison would be meaningless.


    

Recall the legal definition of bioequivalence in the U.S.A.:

Two drug products will be considered bioequivalent drug products if they are pharmaceutical equivalents or pharmaceutical alternatives whose rate and extent of absorption do not show a significant difference when administered at the same molar dose of the active moiety under similar experimental conditions, either single dose or multiple dose.
CFR (2002)18

Does that require testing for a statistically significant difference? Of course, not. It is meant in the simple language lawyers can comprehend.

significant:
Large enough to be noticed or have an effect, having or likely to have influence or effect.

Merriam-Webster dictionary of American English

Similarly here when it comes to ‘demonstration’.

demonstration:
An event that proves a fact.

Macmillan dictionary of British English

In 201319 members of the EMA’s Pharmacokinetics Working Party confirmed unanimously that a test is not expected by the agencies. ‘Demonstration of steady state’ should not be understood in the statistical sense. Instead, individual pre-dose concentrations should be reported together with spaghetti plots and plots of geometric means. In the discussion it became clear that common sense should prevail. Kudos!

If you insist in using a statistical approach, estimate the correlation between pre-dose concentrations using a linear mixed-effects model with subject as a random effect.20 Good luck!

[…] all models are approximations. Essentially, all models are wrong, but some are useful.
George E.P. Box (1987)21

Honestly, I’m not convinced whether there is any one useful at all…

    

Postscript

The requirement of multiple dose studies is highly controversial. At the time being the EMA – apart from Aus­tra­lia – is the only jurisdiction requiring them. They were never necessary for the FDA, and Health Canada required them only for drugs with accumulation until 2012.

AAPS Price Ceremony 2012

Extensive simulations22 showed that comparing the concentration at the end of the intended dosing interval (\(\small{C_\tau}\)) – additionally to \(\small{AUC}\) and \(\small{C_\textrm{max}}\) – could reliably predict the outcome after multiple doses.

The approach comes with a price: Since \(\small{C_\tau}\) is a one-point metric and hence, likely the one with the largest variability of the entire profile, the sample size has to be increased in order to preserve power. Nevertheless, the perspective to waive the multiple dose study is appealing.

It must be mentioned that the paper won the AAPS Clinical Phar­ma­co­lo­gy and Trans­la­tio­nal Research Section’s

Outstanding Manuscript Award in Modeling and Simulation

in 2012…

The proposal was challenged by a retrospective analysis23 of studies submitted to the Spanish agency since 2000. The authors concluded that \(\small{C_\tau}\) after a single dose is a poor predictor of \(\small{C_\textrm{min,ss}}\) after multiple doses.


Fig. 10 Six cases which failed both after a single and after multiple doses.

[…] in […] six cases […] the multiple dose study was the only [sic] design able to detect the differences and, therefore, it was essential when comparing the in vivo performance of prolonged release products.
Regarding the predictive value of \(\small{C_\tau}\), one case […] shows that it is predictive of the bioequivalence failure of \(\small{C_\textrm{min,ss}}\), but in the other five cases, the results are not predictive or as sensitive as \(\small{C_\textrm{max,ss}}\) or \(\small{C_\textrm{min,ss}}\).

García-Arieta et al. (2012)23

Regrettably, only failed studies were reported and therefore, it is not possible to explore the FPR. I’m not a friend of post hoc power but evidently none [sic] of the studies was sufficiently powered (median 11.84%, quartiles 3.25 – 13.35%) to demonstrate BE for this metric. That is not surprising, since assessing \(\small{C_\tau}\) was not a regulatory requirement at submission. In short, the results do not refute but rather support the simulation study: All cases which failed after a single dose failed after multiple doses as well. Not only the data base is obscure but – more importantly – the authors’ conclusions contradict their findings. That’s bad in an age when many people don’t read publications beyond the abstract. Alas, the paper is cited as ‘evidence’ to support the need of multiple dose studies.

The paper was defended24 and IMHO, understandably, challenged.25 26 27

Given the limited data on new PK metrics, it was proposed at the ‘EUFEPS Open Discussion Forum’19 that regulations should not be made up out of thin air but based on science.

  • BE should be assessed only by conventional PK metrics according to the (then) current guideline.
  • Applicants should analyze studies with the suggested new PK metrics in an exploratory manner and submit results to agencies.
  • After a limited time frame (e.g., two years) the data could be assessed for their sensitivity and included in the new guideline if deemed necessary.28
Science should always be the basis of regulatory requirements.
Joachim Röhmel (2009)29

We all know how it ended. Though on 30 April 201430 it was promised that »the overview of comments will be published within the next two weeks«, we had to wait for 5½ years.31 As usual, most suggestions were ignored.

The Brazilian competent authority ANVISA required multiple dose studies as well. The message was heard and hence, the agency retrospectively assessed 117 studies submitted since 2008 for early and late partial \(\small{AUC}\) (\(\small{\textrm{p}AUC_{0-\tau/2}}\), \(\small{\textrm{p}AUC_{\tau/2-\tau}}\)).32 79.2% of studies which passed conventional PK metrics, passed the partial \(\small{AUC\textrm{s}}\) as well. In order to pass, in general the sample size has not to be increased. Therefore, the requirement was lifted in 2021.33

I hope that – in the spirit of global harmonization – sooner or later the EMA (and its ‘disciples’ in Australia) will follow all other agencies. Then the issue of ‘demonstrating’ steady state would vanish and the desperate attempts to comply with the regulations will go directly where they belong to – the biostatistical waste container.
🚮

In advanced engineering, you expected failure; you learned as much from failures as from successes – indeed if you never suffered a failure you probably weren’t pushing the envelope ambitiously enough.
Stephen Baxter (2005)34

Licenses

CC BY 4.0 Helmut Schütz 2022
R GPL 3.0, pandoc GPL 2.0.
1st version January 16, 2022. Rendered May 18, 2022 16:25 CEST by rmarkdown via pandoc in 0.28 seconds.

Footnotes and References


  1. Light RJ, Singer JD, Willett JB. By Design. Planning Research on Higher Education. Cambridge: Har­vard Uni­ver­sity Press: 1990. ISBN 9780674089310. p. V.↩︎

  2. Bonate PL. Pharmacokinetic-Pharmacodynamic Modeling and Simulation. New York: Springer; 2nd ed. 2011. p. 359.↩︎

  3. Gabrielsson J, Weiner D. Pharmacokinetic and Pharmacodynamic Data Analysis: Concepts and Appli­ca­tions. Stockholm: Apotekarsocieteten; 5th ed. 2016. p. 335–6, p. 704.↩︎

  4. Tóthfalusi, L. Endrényi L. Approvable generic carbamazepine formulations may not be bioequivalent in target patient populations. Int J Clin Pharm Ther. 2013; 51(6). 525–8. doi:10.5414/CP201845.↩︎

  5. EC. Investigation of bioavailability and bioequivalence. 3CC15a. Brussels. December 1991. Online.↩︎

  6. EMEA, CPMP. Note for guidance on modified release oral and transdermal dosage forms. Pharmacokinetic and clinical evaluation. CPMP/EWP/280/96 Corr. London. 28 July 1999. Online.↩︎

  7. EMEA, CPMP. Note for guidance on the investigation of bioavailability and bioequivalence. CPMP/EWP/QWP/1401/98. London. 26 July 2001. Online.↩︎

  8. WHO Expert Committee on Specifications for Pharmaceutical Preparations, Fifty-first Report (WHO TRS No. 992), Annex 6. Multisource (generic) pharmaceutical products: guidelines on registration requirements to establish interchangeability. Geneva. 2017. Online.↩︎

  9. Health Canada, Health Products and Food Branch. Guidance for Industry. Conduct and Analysis of Bioavail­abi­lity and Bioequivalence Studies – Part B: Oral Modified Release Formulations. Ottawa. 1996. ISBN 0-662-25235-7. Internet Archive Internet Archive.↩︎

  10. Health Canada. Guidance Document. Comparative Bioavailability Standards: Formulations Used for Systemic Effects. Adopted 2012/02/08, Revised 2018/06/08. Online.↩︎

  11. FDA, CDER. Draft Guidance for Industry. Bioequivalence Studies With Pharmacokinetic Endpoints for Drugs Sub­mitted Under an ANDA. Rockville. August 2021. Download.↩︎

  12. EMA, CHMP. Guideline on the pharmacokinetic and clinical evaluation of modified release dosage forms. EMA/CHMP/EWP/280/96 Rev1. London. 20 November 2014. Online.↩︎

  13. TGA. International scientific guidelines adopted in Australia. Guideline on the pharmacokinetic and clinical evaluation of modified release dosage forms with TGA annotations. 1 Jun 2015. Online.↩︎

  14. I have to confess that I have recommended it in the past.↩︎

  15. Wolfsegger MJ, Bauer A, Labes D, Schütz H, Vonk R, Lang B, Lehr S, Jaki TF, Engl W, Hale MD. Assessing good­ness-of-fit for evaluation of dose-proportionality. Pharm Stat. 2021; 20(2): 272–81. doi:10.1002/pst.2074.↩︎

  16. Nicolas X, Sultan E, Ollier C, Rauch C, Fabre D. Estimation by different techniques of steady-state achievement and accumulation for a compound with bi-phasic disposition and long terminal half-life. PAGE meeting. Mont­pellier. July 7–13, 2013. Online.↩︎

  17. Dost FH. Der Blutspiegel. Konzentrationsabläufe in der Kreislauf­flüssigkeit. Leipzig: VEB Thieme; 1953. p. 244. [German]↩︎

  18. CFR. Title 21. Volume 5. Chapter I. §320.23 (b)(1) Basis for measuring in vivo bioavailability or demonstrating bioequivalence. Dec. 19, 2002. Online.↩︎

  19. EUFEPS. Open Discussion Forum on the Revised European Guideline on Pharmacokinetic and Clinical Evaluation of Mo­di­fied Release Dosage Forms. Bonn. 17–18 June, 2013.↩︎

  20. Maganti L, Panebianco DL, Maes AL. Evaluation of Methods for Estimating Time to Steady State with Examples from Phase 1 Studies. AAPS J. 2008; 10(1): 141–7. doi:10.1208%2Fs12248-008-9014-y. PMC Free Full Text Free Full Text.↩︎

  21. Box GEP, Draper NR. Empirical Model-Building and Response Surfaces. New York: Wiley; 1987. p. 424.↩︎

  22. Paixão P, Gouveia LF, Morais JAG. An alternative single dose parameter to avoid the need for steady-state studies on oral extended-release drug products. Eur J Pharmaceut Biopharmaceut. 2012; 80(2): 410–7. doi:10.1016/j.ejpb.2011.11.001.↩︎

  23. García-Arieta A, Morales-Alcelay S, Herranz M, de la Torre-Alvarado JM, Blázquez-Pérez A, Suárez-Gea ML, Al­va­rez C. Investigation on the need of multiple dose bioequivalence studies for prolonged-release generic products. Int J Pharm. 2012; 423(2): 321–5. doi:10.1016/j.ijpharm.2011.11.022.↩︎

  24. García‐Arieta A. Justification of the current regulatory approach by EMA prohibiting the extrapolation of single dose BE to steady state in many cases. GBHI, 3rd International Workshop. Amsterdam. April 12, 2018.↩︎

  25. Schütz H. Primary and secondary PK metrics for evaluation of steady state studies, Cmin vs. Cτ, relevance of Cmin / Cτ or fluctuation for bioequivalence assessment. GBHI, 3rd International Workshop. Amsterdam. April 12, 2018.↩︎

  26. Silva N. Suggestions for Further Harmonization of Remaining Open Issues. GBHI, 4th International Workshop. Bethesda. December 12, 2019.↩︎

  27. Cook J. Scientific Arguments in Favor and Against the Requirement to Perform Multiple Dose Studies for Long Acting Injectables and Implants. GBHI, 4th International Workshop. Bethesda. December 12, 2019.↩︎

  28. That’s similar to what the FDA did when concerns about the ‘Subject-by-Formulation’ interaction emerg­ed. Temporarily studies had to be performed in a replicated design. After assessing the results, the FDA con­cluded that the S × F interaction is not relevant and the temporary requirement was lifted.↩︎

  29. Röhmel J. Recent Methodological Advances Contributing to Clinical Trials and Regulatory Statistics. 30th Annual Con­ference of the International Society for Clinical Biostatistics. Prague. August 25, 2009.↩︎

  30. EMA/EGA. Joint workshop on the impact of the revised EMA Guideline on the Pharma­co­kinetic and Clinical Eva­lu­ation of Modified Release Dosage Forms. London. 30 April 2014.↩︎

  31. EMA, PKWP. Overview of comments received on ‘Guideline on the pharmacokinetic and clinical evaluation of mo­di­fied release dosage forms’. EMA/CHMP/267430/2019. London. 17 October 2019. Online.↩︎

  32. Costa Soares KE, Chiann C, Storpitis S. Assessment of the impact of partial area under the curve in a bioavailability/bioequivalence study on generic prolonged-release formulations. Eur J Pharm Sci. 2022; 171: 106127. doi:10.1016/j.ejps.2022.106127.↩︎

  33. Costa Soares KE (ANVISA/CETER). Presentation at: Multiple dose studies for generic and similar drugs of modified release. São Paulo. April 29, 2021. URL.↩︎

  34. Baxter S. Transcendent. London: Gollanz; 2005. Chapter 36.↩︎