## Achievement of Steady State: Visual inspection & common sense [General Sta­tis­tics]

Hi arl_stat,

» […] achievement of Steady state using NOSTASOT (Non-Statistical-significance–of-Trend) method.

Never heard of this abbreviation. THX for the explanation.

Sorry, I’m not equipped with ‘ ’.
Easy in any software. Run a linear regression of pre-dose concentrations vs time and test the slope against zero (or whether zero is included in the 95% CI of the slope). The former should be part of the output.
However, I don’t recommend it (see here and there).
• If you have a small within-subject variability of pre-dose concentrations, possibly the slope will significantly differ from zero in some subjects. You will conclude that steady state is not reached and exclude those subjects.
• If you have a large within-subject variability of pre-dose concentrations, even a – visually – obvious positive slope will not significantly differ from zero. You will conclude that steady state is reached although the saturation is not complete.
• An example in at the end. Same saturation, only different variabilities of k10.
• AFAIK, not a regulatory requirement anywhere.

Simulated one-compartment model: V = 4, D = 500, k01 = 0.6931472 h–1, k10 = 0.0504107 h–1, τ = 24. Sufficient built-up of (pseudo-) state state: 96 h = 6.98 half lives.

n    <- 3 # number of pre-dose samples for the regression data <- data.frame(dose = 2:6, t = seq(-96, 0, 24)) # low and high variability of pre-dose concentrations lo   <- cbind(data, C = c(40.08, 51.87, 55.77, 56.64, 57.66)) hi   <- cbind(data, C = c(40.41, 52.03, 55.36, 56.74, 57.25)) res  <- data.frame(variability = c("low", "high"), int =  NA_real_,                    slope = NA_real_, signif = "no   ",                    CL.lo = NA_real_, CL.hi = NA_real_) for (j in 1:nrow(res)) {   if (j == 1) {     tmp <- tail(lo, n)   } else {     tmp <- tail(hi, n)   }   muddle       <- lm(C ~ t, data = tmp)        # linear regression   res$int[j] <- signif(coef(muddle)[], 5) # intercept res$slope[j] <- signif(coef(muddle)[], 5) # slope   if (anova(muddle)[1, 5] < 0.05) res$signif[j] <- "yes " res[j, 5:6] <- sprintf("%+.6f", confint(muddle, level = 0.95)[2, ]) } names(res) <- "signif # 0?" print(lo, row.names = FALSE) print(hi, row.names = FALSE) print(res, row.names = FALSE) op <- par(no.readonly = TRUE) par(mar = c(4, 4, 2.5, 0.5)) split.screen(c(2, 1)) screen(1) # saturation phase plot(lo$t, lo$C, type = "n", axes = FALSE, xlab = "time", ylab = "concentration", ylim = range(c(lo$C, hi$C))) grid(nx = NA, ny = NULL); box() abline(v = unique(lo$t), lty = 3, col = "lightgrey") lines(lo$t, lo$C, col = "blue", lwd = 2) points(lo$t, lo$C, pch = 19, col = "blue", cex = 1.5) lines(hi$t, hi$C, col = "red", lwd = 2) points(hi$t, hi$C, pch = 19, col = "red", cex = 1.5) axis(1, at = lo$t) axis(2, las = 1) axis(3, at = unique(lo$t),      label = paste0("dose #", unique(lo$dose))) screen(2) # last 3 pre-dose concentrations plot(tail(lo$t, n), tail(lo$C, n), type = "n", axes = FALSE, xlab = "time", ylab = "concentration", ylim = range(c(tail(lo$C, n), tail(hi$C, n)))) grid(nx = NA, ny = NULL); box() abline(v = unique(tail(lo$t, n)), lty = 3, col = "lightgrey") lines(tail(lo$t, n), tail(lo$C, n), col = "blue", lwd = 2) lines(tail(hi$t, n), tail(hi$C, n), col = "red", lwd = 2) segments(x0 = -48, y0 = res$int - res$slope *48,          x1 = 0, y1 = res$int, col = "blue", lty = 2) segments(x0 = -48, y0 = res$int - res$slope *48, x1 = 0, y1 = res$int, col = "red", lty = 2) axis(1, at = lo$t) axis(2, las = 1) axis(3, at = unique(lo$t),      label = paste0("dose #", unique(lo\$dose))) close.screen(all = TRUE) par(op)

Gives:
 dose   t     C     2 -96 40.08     3 -72 51.87     4 -48 55.77     5 -24 56.64     6   0 57.66  dose   t     C     2 -96 40.41     3 -72 52.03     4 -48 55.36     5 -24 56.74     6   0 57.25  variability    int    slope signif # 0?     CL.lo     CL.hi          low 57.635 0.039375       yes   +0.016450 +0.062300         high 57.395 0.039375       no    -0.093589 +0.172339 low variability
high variability
dashed lines: linear regression

Dif-tor heh smusma 🖖 Helmut Schütz The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes  Ing. Helmut Schütz 