library(tidyverse)
library(PKNCA)
data(Theoph)
conc_df <- as_tibble(Theoph) %>%
transmute(ID = Subject, TIME = Time, CONC = conc)
dose_df <- as_tibble(Theoph) %>%
distinct(Subject, Dose) %>%
transmute(ID = Subject, TIME = 0, DOSE = Dose)Multiple-Dose and Steady-State Workflows in PKNCA
Big idea: In multiple-dose studies, exposure is defined relative to a dosing interval (\(\tau\)), not infinity.
Learning Objectives
By the end of this lesson, you will be able to:
- Explain the conceptual shift from single-dose to multiple-dose NCA.
- Define dosing history appropriately for repeated dosing.
- Compute \(AUC_{0-\tau}\) using PKNCA.
- Interpret steady-state exposure and accumulation metrics.
- Identify structural mistakes specific to multiple-dose datasets.
Key Ideas
- Single-dose studies focus on \(AUC_{0-\infty}\) or \(AUC_{0-tlast}\).
- Multiple-dose studies focus on exposure within one dosing interval (\(\tau\)).
- Steady-state interpretation depends on the relationship between \(\tau\) and half-life.
- Grouping structure must reflect dosing occasions when applicable.
- Clearance units still depend on dose units (mg/kg → L/h/kg).
Conceptual Shift: Single Dose vs Multiple Dose
Single Dose
Exposure metrics commonly include:
- \(AUC_{0-\infty}\)
- \(AUC_{0-tlast}\)
- \(C_{max}\)
- \(t_{1/2}\)
The question is typically:
What is total exposure after one administration?
Multiple Dose
In repeated dosing:
- Exposure is evaluated over one dosing interval (\(\tau\)).
- We focus on steady-state behavior.
- \(AUC_{0-\tau}\) becomes central.
- Accumulation and fluctuation become meaningful.
The key question becomes:
What is exposure during one dosing interval at steady state?
Example Setup (Using Theoph for Structure)
We reuse Theoph purely to demonstrate structure. It is still a single-dose dataset, but we define an artificial \(\tau\) interval for demonstration.
Defining a Tau-Based Interval
Suppose dosing occurs every 12 hours.
We define:
intervals_tau <- data.frame(
start = 0,
end = 12, # tau = 12 hours
auclast = TRUE,
cmax = TRUE,
tmax = TRUE
)Here:
start = 0→ start of dosing intervalend = 12→ end of dosing interval (\(\tau\))- We request interval-based metrics only
Running Multiple-Dose-Style NCA
conc_obj <- PKNCAconc(CONC ~ TIME | ID, data = conc_df)
dose_obj <- PKNCAdose(DOSE ~ TIME | ID, data = dose_df)
nca_tau <- PKNCAdata(conc_obj, dose_obj, intervals = intervals_tau)
results_tau <- pk.nca(nca_tau)
tau_df <- as.data.frame(results_tau)
tau_df %>% head()# A tibble: 6 × 6
ID start end PPTESTCD PPORRES exclude
<ord> <dbl> <dbl> <chr> <dbl> <chr>
1 6 0 12 auclast 43.0 <NA>
2 6 0 12 cmax 6.44 <NA>
3 6 0 12 tmax 1.15 <NA>
4 7 0 12 auclast 50.1 <NA>
5 7 0 12 cmax 7.09 <NA>
6 7 0 12 tmax 3.48 <NA>
Note that results are now interval-specific.
Steady-State Interpretation
At steady state, accumulation can be defined as:
\[ R_{acc} = \frac{AUC_{0-\tau,ss}}{AUC_{0-\tau,1}} \]
Where:
- \(AUC_{0-\tau,1}\) = exposure during first interval
- \(AUC_{0-\tau,ss}\) = exposure at steady state
Interpretation:
- \(R_{acc} > 1\) → accumulation
- \(R_{acc} \approx 1\) → minimal accumulation
Accumulation depends on:
- Dosing interval (\(\tau\))
- Elimination half-life (\(t_{1/2}\))
Worked Example (Conceptual)
Suppose:
- \(t_{1/2} = 10\) hours
- \(\tau = 12\) hours
Since half-life is close to the dosing interval, incomplete elimination occurs between doses.
We would expect:
- Accumulation across intervals
- \(R_{acc} > 1\)
- Higher steady-state trough concentrations
This illustrates why half-life relative to \(\tau\) determines accumulation.
Strategies
- Always define intervals deliberately — never rely on defaults.
- Verify time is relative to the correct dose.
- Match grouping between concentration and dose objects.
- Label interval clearly in reporting tables (e.g., “0–12h”).
- Interpret accumulation in light of half-life and dosing interval.
Common Mistakes
- Reporting \(AUC_{0-\infty}\) in a multiple-dose study.
- Ignoring dosing history when interpreting exposure.
- Confusing first-dose exposure with steady-state exposure.
- Failing to include PERIOD/OCC in repeated-dose datasets.
Practice Problems
Conceptual
- Why is \(AUC_{0-\infty}\) usually inappropriate in steady-state studies?
- How does increasing \(\tau\) affect accumulation (all else equal)?
Executable
- Modify the interval to use \(\tau = 8\) hours and rerun NCA.
- Extract only \(AUC_{0-\tau}\) values from
tau_df.
1. Inappropriate \(AUC_{0-\infty}\):
At steady state, dosing continues. There is no meaningful “infinity” beyond the interval because additional doses occur.
2. Effect of larger \(\tau\):
Longer \(\tau\) allows more elimination between doses, reducing accumulation.
3. Tau = 8 hours:
intervals_tau8 <- data.frame(
start = 0,
end = 8,
auclast = TRUE
)
nca_tau8 <- PKNCAdata(conc_obj, dose_obj, intervals = intervals_tau8)
results_tau8 <- pk.nca(nca_tau8)
as.data.frame(results_tau8) %>% head()# A tibble: 6 × 6
ID start end PPTESTCD PPORRES exclude
<ord> <dbl> <dbl> <chr> <dbl> <chr>
1 6 0 8 auclast 34.7 <NA>
2 7 0 8 auclast 40.4 <NA>
3 8 0 8 auclast 42.6 <NA>
4 11 0 8 auclast 41.0 <NA>
5 3 0 8 auclast 47.3 <NA>
6 2 0 8 auclast 46.3 <NA>
4. Extract interval AUC:
tau_df %>%
filter(PPTESTCD == "auclast") %>%
select(ID, PPORRES)# A tibble: 12 × 2
ID PPORRES
<ord> <dbl>
1 6 43.0
2 7 50.1
3 8 51.5
4 11 49.0
5 3 57.1
6 2 67.2
7 4 72.8
8 9 58.7
9 12 69.0
10 10 73.9
11 1 72.7
12 5 84.4
Summary
In multiple-dose NCA:
- Exposure is defined over a dosing interval (\(\tau\)).
- Interpretation focuses on steady-state behavior.
- Accumulation depends on half-life relative to \(\tau\).
- Structural clarity in intervals and grouping is essential.
Understanding this shift prevents misinterpretation of exposure metrics in repeated-dose designs.
- Always define \(\tau\) explicitly.
- Do not report \(AUC_{0-\infty}\) in steady-state contexts.
- Interpret accumulation relative to half-life.
- Label interval boundaries clearly in tables and figures.