PKNCA: Noncompartmental Analysis in R

A comprehensive guide to the PKNCA R package (≥ 0.12.2) — covering every function, parameter, and workflow with runnable examples.
Author

Teun M. Post

Published

June 10, 2026

This book was built against PKNCA 0.12.2. Examples are verified against that version. For the function reference, see the pkgdown site.

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.

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, Vz

0.2 Core Workflow

flowchart LR
    A[Concentration\ndata frame] --> B[PKNCAconc]
    C[Dose\ndata frame] --> D[PKNCAdose]
    B --> E[PKNCAdata]
    D --> E
    F[Intervals\nspecification] -.->|optional override| E
    E --> G[pk.nca]
    G --> H[PKNCAresults]
    H --> I[summary]
    H --> J[as.data.frame]

Object Purpose
PKNCAconc Where is concentration data; how is it grouped?
PKNCAdose Dose amount, time, and route
PKNCAdata Parameters and analysis intervals
PKNCAresults Computed NCA parameters, units, exclusion flags

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) reference

0.4 What’s new in 0.12.2

  • normalize_by_col() / normalize() — dose-normalize results using a column in the result data frame
  • tmin parameter — minimum pre-Tmax concentration
  • Tobit regression for half-life (now on CRAN; previously GitHub only)
  • 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 regression
  • pknca_units_table() is now an S3 generic with a PKNCAdata method
  • get_halflife_points() works directly on PKNCAdata objects; handles start ≠ 0 correctly