flowchart LR
A["Concentration<br/>data frame"] --> B[PKNCAconc]
C["Dose<br/>data frame"] --> D[PKNCAdose]
B --> E[PKNCAdata]
D --> E
F["Intervals<br/>specification"] -.->|optional override| E
E --> G[pk.nca]
G --> H[PKNCAresults]
H --> I[summary]
H --> J[as.data.frame]
PKNCA: Noncompartmental Analysis in R
PKNCA is an R package for automated noncompartmental analysis (NCA). It calculates PK parameters (AUC, Cmax, half-life, clearance, volume, and many more) from concentration-time data, supports IV and extravascular routes, urine excretion, sparse sampling, multiple-dose designs, and CDISC-aligned output. This book documents PKNCA ≥ 0.12.2 with runnable examples throughout. For the package authors’ own orientation material, see the vignettes Introduction to PKNCA and Usage Instructions and PKNCA – an R package for noncompartmental analysis of pharmacokinetic data.
0.1 What is NCA?
Noncompartmental analysis (NCA) derives pharmacokinetic parameters directly from observed data using numerical integration — no compartmental model assumptions required. NCA is used to answer:
- How much drug was absorbed? → AUC
- How fast was drug eliminated? → half-life, λz
- How high did concentrations get? → Cmax
- How quickly was drug cleared? → CL
- How widely did drug distribute? → Vz
0.2 Core workflow
| Object | Purpose |
|---|---|
PKNCAconc |
Concentration data location and grouping |
PKNCAdose |
Dose amount, time, and route |
PKNCAdata |
Parameters and analysis intervals |
PKNCAresults |
Computed NCA parameters, units, exclusion flags |
The vignette Computing NCA Parameters for Theophylline runs this exact pipeline end-to-end.
0.3 Route-specific parameters
| Parameter | IV | Extravascular |
|---|---|---|
| C0 (extrapolated at t=0) | ✓ | — |
| Cmax | ✓ | ✓ |
| Tmax | ✓ | ✓ |
| AUClast / AUCinf | ✓ | ✓ |
| Half-life / λz | ✓ | ✓ |
| CL (true clearance) | ✓ | — (apparent: CL/F) |
| Vz (volume) | ✓ | — (apparent: Vz/F) |
| Bioavailability (F) | — (serves as reference) | ✓ |
For bioavailability, IV data serve as the reference against which extravascular exposure is compared.
0.4 What’s new in 0.12.2
normalize_by_col()/normalize()— normalize results by a column in the concentration data (normalize_by_col()) or a custom normalization table (normalize())tminparameter — time of minimum observed concentration- Tobit regression for half-life, including full
pk.nca()pipeline support viaPKNCAconc(lloq = ) - CDISC output format —
as.data.frame(results, out_format = "cdisc")translates parameter codes and adds PPTEST - Expanded derived parameters — the
cl.*,kel.*,mrt.*,vss.*, andvz.*families grew substantially - Sparse AUMC and five new sparse-derived parameters (
cl.sparse.last,kel.sparse.last,mrt.ivint.last,vss.sparse.last,vz.sparse.last) - New excretion parameters:
volpk,ermax,ertmax,ertlst, dose-normalized renal clearance (clr.*.dn) lambda.z.corrxy— correlation between x and y in the λz regressionpknca_units_table()is now an S3 generic with aPKNCAdatamethodget_halflife_points()works directly onPKNCAdataobjects; handlesstart ≠ 0correctly