

You have study data from multiple individuals, including what drug dose they were given, how and when, as well as drug concentrations in the blood measured over time. You also have access to some subject covariates such as weight, renal function, and age. You want a model that explains the data well enough to be useful. Ideally it should fit adequately, predict sensibly, behave in a stable manner, and remain interpretable enough to support scientific or clinical decisions. In this article we examine four broad approaches:
The common pharmacokinetic (PK) models are defined via ordinary differential equation (ODE) systems
$$
\frac{d}{dt} \textbf{x}(t) = f(\textbf{x}(t), t, \theta),
$$
where $x(t)$ contains amount of the drug in different compartments. The complete model for the observed concentration-time data needs also an observation model (residuals) for the observed concentrations, but in this post we focus mainly on finding the structure of the ODE system.
The typical approach is to
You might already see just from looking at the data if the usual one- or two-compartment models are going to fit it well. Parts of the model typically explain at least how the drug gets into the blood, distributes, and is cleared. Information about how the drug was administered should limit the space of possible models in terms of the first part (extravascular absorption, IV bolus, or IV infusion). However, there can still be a lot of uncertainty regarding things like the
Thus, finding a good model can be a lot of manual trial and error.
A natural extension of the classical workflow is to treat model building as a search problem. Instead of hand-trying a few structures and a few covariates, you define a model space and explore it automatically. That space might include one- and two-compartment models, different absorption models, alternative residual error structures, different random-effects structures, and multiple candidate covariates on clearance, volume, or absorption. The system then fits, scores, and ranks many candidates.
An example of an automated model-space exploration tools is nlmixr2auto, which is built on top of the nlmixr2 ecosystem and is designed for automated population PK model development. It includes procedures such as genetic algorithms, ant colony optimization, tabu search, and stepwise selection. Another interesting automatic tool for population PK model development is introduced in Chen et al. (2024).
The appeal here is not just speed, but also coverage. Human modelers are selective and biased; they tend to reach for familiar structures and familiar covariates. Automated search can be more systematic. But it still depends on the boundaries of the search space. It can only compare models it has been allowed to consider.
A different idea is to move from automated search to automated modeling. Instead of exploring a fixed space, an LLM-based agent can propose models, write code, fit the models, inspect the diagnostics, and revise its proposal. In other words, the search space itself becomes more fluid. This is the sense in which systems like AutoStan are “agentic”: the model is not merely selected from a menu, but actively constructed by perhaps looking for directions from the internet or other given context.
Instead of choosing a compartmental or other parametric form and estimating its parameters, neural ordinary differential equation (NODE) models use a neural network to define the dynamics of the system. One example work of applying NODEs to PK modeling is Lu et al. (2021). Now the function $f(\textbf{x}(t), t, \theta)$ is defined by a neural network, and $\textbf{x}(t)$ might be a learned hidden state that stands in for concentration (Giacometti et al., 2025) or a fully latent state from which concentration is generated (Maurel et al., 2026). In this way they are not restricted to common structural assumptions and avoid the need to search a model space. Also, they can directly integrate covariates and learn various types of covariate effects that are difficult to interate in the typical parametric PK models.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.
Weighing pros and cons of NCA vs. PK modeling.

This is a comment related to the post above. It was submitted in a form, formatted by Make, and then approved by an admin. After getting approved, it was sent to Webflow and stored in a rich text field.