arl_stat
★    

India,
2021-07-31 07:42
(129 d 12:59 ago)

Posting: # 22489
Views: 1,975
 

 Achievement of Steady State [General Sta­tis­tics]

Hello everyone. :-)

Hope all are safe in this Pandemic situation.

The query is regarding achievement of Steady state using NOSTASOT (Non-Statistical-significance–of-Trend) method.

Please help me out for SAS codes for analysis.

Thank you so much.


Edit: Category changed; see also this post #1[Helmut]
Helmut
★★★
avatar
Homepage
Vienna, Austria,
2021-07-31 10:58
(129 d 09:44 ago)

@ arl_stat
Posting: # 22490
Views: 1,645
 

 Achievement of Steady State: Visual inspection & common sense

Hi arl_stat,

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

Never heard of this abbreviation. THX for the explanation.

» Please help me out for SAS codes for analysis.

Sorry, I’m not equipped with ‘[image]’.
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 there).
  • Leads into trouble.
    • 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 [image] 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)[[1]], 5) # intercept
  res$slope[j] <- signif(coef(muddle)[[2]], 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)[4] <- "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[1] - res$slope[1] *48,
         x1 = 0, y1 = res$int[1], col = "blue", lty = 2)
segments(x0 = -48, y0 = res$int[2] - res$slope[2] *48,
         x1 = 0, y1 = res$int[2], 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


[image]

low variability
high variability
dashed lines: linear regression


Dif-tor heh smusma 🖖
Helmut Schütz
[image]

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

2021-08-05 08:08
(124 d 12:34 ago)

@ Helmut
Posting: # 22509
Views: 1,529
 

 Achievement of Steady State: Visual inspection & common sense

Hi Helmut,

» 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 there).

So you are essentially saying statistical relevance is not the right tool here. Agreed. Instead of relying on visual inspection & gut feeling (= common sense? :-)) can we define pharmacological relevance? Is there a way to define quantitative thresholds based on the PK (or even PD?) of the compound (i.e. concentration should not change by more than x%)?

Best regards,
Ben.
Helmut
★★★
avatar
Homepage
Vienna, Austria,
2021-08-05 11:43
(124 d 08:59 ago)

@ Ben
Posting: # 22511
Views: 1,490
 

 Threshold of % change?

Hi Ben,

» So you are essentially saying statistical relevance is not the right tool here. Agreed.

I was talking about statistical significance.
When it comes to a test, see the end of Section 1 in this post (EUFEPS workshop, Bonn, June 2013).

» Instead of relying on visual inspection & gut feeling (= common sense? :-)) …

Well, we are using visual inspection in other areas as well. Automatic algos for selecting time points in estimating \(\small{\hat\lambda_z}\) (e.g., \(\small{R_{\textrm{adj,max}}^{2}}\), \(\small{AIC_\textrm{min}}\), \(\small{\text{TTT}}\)) quite often fail for ‘flat’ profiles (MR) or multiphasic profiles. I’m fine with selecting time points ‘manually’. Never had any problems with acceptance.

» … can we define pharmacological relevance?

That’s actually the idea behind assessing the slope. Either we are still in the saturation phase (slope >0) or reasonably close to true steady state (slope ≈0).

» Is there a way to define quantitative thresholds based on the PK (or even PD?) of the compound (i.e. concentration should not change by more than x%)?

[image] Radio Yerevan answers: Based on PK, in principle yes.
But how could we do that? We design the study based on τ and t½. Hopefully we don’t use an average t½ – from the literature – but a worst case (i.e., a longer one).
$$C_\tau$$$$\small{
\begin{array}{crr}
\hline
\text{Dose} & \text{% of steady state} & \text{% Change} \\
\hline
1 & 50.00000 & - \\
2 & 75.00000 & 50.000000 \\
3 & 87.50000 & 16.666667 \\
4 & 93.75000 & 7.142857 \\
5 & 96.87500 & 3.333333 \\
6 & 98.43750 & 1.612903 \\
7 & 99.21875 & 0.793651 \\
\hline
\end{array}}$$Looks nice on paper. However, I see a problem here (maybe I’m wrong). In the regression we assess the last three pre-dose concentrations, which – to some extent – takes the inter-occasion variability into account. Of course, we may fall into the trap mentioned previously.
When we set a threshold of \(\small{x\%}\), we are essentially believing that the last two pre-dose concentrations are the true ones, right? Of course, that’s another trap.

Dif-tor heh smusma 🖖
Helmut Schütz
[image]

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

2021-10-17 12:16
(51 d 08:26 ago)

@ Helmut
Posting: # 22630
Views: 440
 

 Threshold of % change?

Hi Helmut,

I forgot to answer...

» When it comes to a test, see the end of Section 1 in this post (EUFEPS workshop, Bonn, June 2013).

Thanks, I more and more come to the same conclusion...

» » Is there a way to define quantitative thresholds based on the PK (or even PD?) of the compound (i.e. concentration should not change by more than x%)?
» ... In the regression we assess the last three pre-dose concentrations, which – to some extent – takes the inter-occasion variability into account. Of course, we may fall into the trap mentioned previously.

I was thinking about the following: When we do a linear regression log(y) = a*x + b (+ eps), then the interpretation of a is that when x changes by 1 unit, then y changes (on average) by (exp(a) - 1) * 100%. That means we can make a statement about %-change in pre-dose concentration and we could maybe set relevance limits for this change. But the trap that you mentioned is I guess still valid and does not go away (we may argue not with the estimated coefficient of a but with some upper CI/PI limit (e.g. 68%), but nevertheless the issue remains).

» When we set a threshold of \(\small{x\%}\), we are essentially believing that the last two pre-dose concentrations are the true ones, right? Of course, that’s another trap.

Yes, agreed.

One more question: In your lecture you state that one should calculate gMean as well. Are you also calculating gMean ratios, i.e. calculating point estimates for the comparison of different time points (e.g. each vs. last)?

Best regards,
Ben.
Helmut
★★★
avatar
Homepage
Vienna, Austria,
2021-10-20 12:36
(48 d 08:06 ago)

@ Ben
Posting: # 22646
Views: 369
 

 Keep it simple

Hi Ben,

» In your lecture you state that one should calculate gMean as well.

This was suggested at numerous conferences and I’m reporting it for ~ten years.

» Are you also calculating gMean ratios, i.e. calculating point estimates for the comparison of different time points (e.g. each vs. last)?

No. Just a simple table like $$\small{\begin{array}{rcc}
\text{time} & \overline{\textrm{T}}_\textrm{geom.}\;(\text{CV}\;\%) & \overline{\textrm{R}}_\textrm{geom.}\;(\text{CV}\;\%)\\\hline
-2\,\tau & 19.9\;(16.4) & 20.9\;(26.4)\\
-\tau & 20.1\;(25.3) & 21.2\;(13.6)\\
\pm0 & 20.3\;(26.1) & 21.4\;(14.7)\\
\tau & 20.3\;(18.6) & 21.3\;(31.2)\\\hline
\end{array}}$$

Dif-tor heh smusma 🖖
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes
Activity
 Admin contact
21,788 posts in 4,557 threads, 1,548 registered users;
online 5 (0 registered, 5 guests [including 4 identified bots]).
Forum time: Tuesday 19:42 CET (Europe/Vienna)

A big computer, a complex algorithm and a long time
does not equal science.    Robert Gentleman

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