PKPDindex: an R/CRAN package for PK/PD index analysis
Sections
Open Access Protocol
PKPDindex: an R/CRAN package for PK/PD index analysis

Affiliation:

1Infection, Immunity and Inflammation Department, Great Ormond Street Institute of Child Health, University College London, WC1N 1EH London, United Kingdom

2Department of Clinical Pharmacy, College of Pharmacy, Princess Nourah Bint Abdulrahman University, Riyadh 11564, Saudi Arabia

Email: naaalabdulkarim@hotmail.com

ORCID: https://orcid.org/0000-0002-5887-8583

Najla Alabdulkarim
1,2*

Affiliation:

1Infection, Immunity and Inflammation Department, Great Ormond Street Institute of Child Health, University College London, WC1N 1EH London, United Kingdom

3Department of Pharmacy, Great Ormond Street Hospital for Children NHS Foundation Trust, WC1N 3JH London, United Kingdom

ORCID: https://orcid.org/0000-0002-4561-7173

Joseph F Standing
1,3

Explor Drug Sci. 2026;4:1008167 DOI: https://doi.org/10.37349/eds.2026.1008167

Received: May 09, 2026 Accepted: June 11, 2026 Published: July 15, 2026

Academic Editor: Jinwei Zhang, Chinese Academy of Sciences, China

The article belongs to the special issue Precision Dosing: From Therapeutic Drug Monitoring to AI-Driven Personalization

Abstract

PKPDindex() is a free and open-source R package for analysing pharmacokinetic/pharmacodynamic (PK/PD) indices, including AUC/MIC, Cmax/MIC, and T>MIC. Development was motivated by previously identified inconsistencies in PK/PD index modelling and reporting practices. The package fits eight variations of the Emax model to data and compares model performance using the Akaike information criterion (AIC) and R2 values. As input, the package requires a dataset containing PK/PD indices and a response variable. As output, it generates tables summarising all fitted models, identifies the best-fitting model for each index, and produces customisable plots of model fits with parameter estimates. PKPDindex() is freely available on CRAN (https://CRAN.R-project.org/package=PKPDindex).

Keywords

pharmacokinetic/pharmacodynamic (PK/PD) index, Emax model, R package, antimicrobial pharmacology, model fitting, dose fractionation studies, PKPDindex

Introduction

The pharmacokinetic and pharmacodynamic (PKPD) index describes the relationship between a drug’s concentration and its therapeutic effect [1]. The most commonly applied indices include the ratio of the area under the concentration–time curve to the minimum inhibitory concentration (AUC/MIC), the ratio of the maximum drug concentration to the MIC (Cmax/MIC), and the proportion of time during which drug concentrations exceed the MIC (T>MIC). These indices are essential to antimicrobial pharmacology, guiding dose selection, regimen optimization, and translational research across preclinical and clinical studies.

The PKPD indices are typically derived from dose fractionation studies, in which different dosing regimens are tested to determine the effect of the drug [2, 3]. Using these data, an Emax model can be fitted to describe the relationship between drug exposure and antibacterial response. Key parameters of the Emax model include E0 (baseline effect without the drug), Emax (maximum effect the drug can achieve), EI50 (the value of the PK/PD index associated with 50% of the maximum effect), and γ (Hill coefficient, which determines the steepness of the curve) [4, 5]. The Emax model has eight possible variations, depending on whether the baseline effect is fixed or estimated to determine whether the drug has an inhibitory or stimulatory effect. Each of these models can be fitted to AUC/MIC, Cmax/MIC, and T>MIC to find the best index [4].

A recent systematic review highlighted the lack of a standardized approach to identifying the optimal PK/PD index [6]. In most published studies, R2 values are used to identify the best model and the optimal PK/PD index. However, R2 only reflects how well the model fits the data, without considering model complexity or the number of parameters [7, 8]. Consequently, reliance on R2 alone may favor more complex models and can lead to suboptimal model selection. For nonlinear Emax models, information-based criteria such as Akaike’s Information Criterion (AIC) and Bayesian Information Criterion (BIC) [9, 10] provide a more robust basis for model comparison because they consider both model fit and complexity [6, 8, 11, 12].

Despite the importance of accurately fitting Emax models to identify the optimal PK/PD index, no existing R/CRAN package provides a comprehensive method to fit all eight possible models and select the best one based on appropriate criteria. The aim was to develop an R package for public use, that offers a systematic and standardized method for fitting Emax models and finding the optimal PK/PD index.

Materials

Overview

PKPDindex() provides a tool for fitting Emax models to PKPD data. This package examines the relationship between drug concentration and biological response by applying a set of predefined Emax models to the provided dataset. It allows customization in terms of model selection, parameter initialization, and plot settings.

Software requirements

PKPDindex() is implemented in R and available through CRAN. Users require an R installation and PKPDindex package to perform the analyses described in this protocol. The package can be installed directly from https://CRAN.R-project.org/package=PKPDindex.

Input requirements and data structure

The PKPDindex() requires a dataset containing PKPD indices and a corresponding response variable that reflects the antimicrobial effect. Data should be provided as a standard R data frame, with each row representing an experimental condition or individual observation.

The PKPDindex() converts all column names to lowercase to prevent case-sensitivity issues. It also checks the presence of both the y_column (default name: “response”) and the predictor columns x_columns (default column name: auc_mic, cmax_mic, t_mic). If the dataset uses different column names, users can specify them manually within the function.

The y_column should be the log10-transformed change in cfu/mL (Δlog10 cfu/mL). Alternatively, users may supply raw cfu/mL counts at the initial CFU_init and 24-hour CFU_24 time points, in which case the function will automatically calculate the Δlog10 cfu/mL.

The user must calculate the x_columns from their PK model before analysis, since the function does not generate them. These include area under the concentration–time curve divided by the MIC auc_mic, peak drug concentration divided by the MIC cmax_mic, and time the drug concentration stays above the MIC t_mic.

The package validates that the required columns are present and contain numeric data. It does not automatically screen for zero values, skewness, or outliers. Model fitting failures are captured and reported in the output.

Emax model variants

The PKPDindex() package defines eight nonlinear Emax models (m1–m8) (Table 1), each representing different combinations of key parameters: E0, Emax, EI50, and Hill coefficient. These models vary based on whether E0 and Emax are fixed or estimated during the fitting process. Additionally, some models incorporate the Hill coefficient to account for sigmoidal (S-shaped) dose-response curves. This flexibility allows the selection of the most appropriate model based on the complexity of the data and the biological system under study.

 Emax model variants (m1–m8) defined in the PKPDindex() package.

FormulaModelEstimated parameterFixed parameterIncludes Hill coefficient
m1
E=E0fix-Emaxfix×CEI50+C
EI50E0, EmaxNo
m2
E=E0fix-Emaxfix× CγEI50γ+ Cγ
EI50, “γ”E0, EmaxYes
m3
E=E0fix-Emax×CEI50+C
EI50, EmaxE0, “γ”No
m4
E=E0fix- Emax × CγEI50γ+ Cγ
EI50, Emax, “γ”E0Yes
m5
E=E0-Emaxfix×CEI50+C
EI50, E0Emax, “γ”No
m6
E=E0-Emaxfix× CγEI50γ+ Cγ
EI50, E0, “γ”EmaxYes
m7
E=E0-Emax×CEI50+C
EI50, E0, Emax“γ”No
m8
E=E0-Emax×CγEI50γ+Cγ
EI50, E0, Emax, “γ”NoneYes

The eight Emax model variants represent alternative assumptions regarding baseline effect (E0), maximum effect (Emax), and the shape of the exposure–response relationship (Hill coefficient). In practice, there is no universally preferred model, and model selection should be driven by the observed data rather than predefined biological assumptions. Simpler models may be adequate when data are limited or do not support estimation of additional parameters, whereas more complex models may better capture nonlinear exposure-response relationships when sufficient information is available. The PKPDindex() package therefore fits all model variants and uses objective model-selection criteria to identify the most appropriate model for a given dataset.

Parameter initialization

Parameter initialization sets the starting values for Emax model fitting. By default, the Hill coefficient (γ) is initialized to 1, corresponding to the standard hyperbolic Emax model. This provides a neutral starting value for model fitting. E0 and Emax depend on the characteristics of the specific dataset. Therefore, users are required to specify initial values for E0 and Emax (E0_fix, Emax_fix) based on prior knowledge and data characteristics. Once these values are provided, the package automatically estimates an approximate EI50 starting value from the observed data. Alternatively, users may supply initial EI50 values through the EI50_init argument.

The EI50 estimate is derived from the PK/PD index value associated with a response halfway between the baseline effect (E0) and the maximum effect (Emax), calculated as:

Response= E0_fix+Emax_fix2

Procedure

Step 1: Prepare the dataset

Prepare a dataset containing the response variable and one or more PK/PD indices. By default, the response variable should be stored in a column named response and PK/PD indices in columns named auc_mic, cmax_mic, and t_mic. Alternative column names can be specified through the y_column and x_columns arguments. For demonstration purposes, the example dataset included with the package can be loaded using:

data("PKPDindex_data")

If different column names are used, they can be specified as follows:

x_columns=c("auc","cmax","t")

y_column="cfu_change"

Step 2: Specify initial parameter values

Before fitting the models, provide values for E0_fix and Emax_fix. Optional starting values for EI50 may also be supplied through the EI50_init argument. If EI50_init is omitted, the package will estimate starting values automatically. For example, the initial parameter values can be defined as follows:

E0_fix=1.23

Emax_fix=4.8

EI50_init=c(1,1,1)

Step 3: Fit Emax models

Execute the PKPDindex() function using the prepared dataset and specified initial parameter values. The package applies the nls() nonlinear least squares method in R to fit the models to the dataset. It iterates through each model, adjusts the parameters, and calculates the AIC and R2 to assess the model fit.

The control settings for the NLS algorithm were configured as follows: The maximum number of iterations (maxiter = 500), the fitting tolerance (tol = 1e–5) and the minimum step size factor (minFactor = 1e–7). Users can modify these control settings to accommodate different data characteristics.

The package incorporates error handling to capture and report fitting failures, ensuring the analysis proceeds without interruption. Model fitting failures may occur when the nonlinear least squares algorithm is unable to identify parameter estimates that adequately describe the data, for example, because of insufficient information in the dataset, poor convergence, highly variable observations, or unsuitable starting values. Models that fail to converge are retained in the output and reported with a “Failure” status, while AIC, R2, and parameter estimates are reported as NA. Such models are excluded from best-model selection. The current version of the package relies on the convergence assessment provided by the underlying nls() algorithm and does not perform formal sensitivity analyses of starting parameter values, apply parameter bounds or constraints, or conduct additional evaluations of local minima, parameter identifiability, or fit stability. Users may specify alternative starting values through the function arguments and should assess the biological plausibility of fitted parameter estimates when interpreting results (Algorithm 1).

Example usage of the PKPDindex().

Step 4: Evaluate model performance

Model evaluation in the PKPDindex() package is based on two key performance metrics: the AIC and R2. AIC is used for model comparison, as it balances goodness-of-fit with model complexity. A lower AIC value indicates a better model fit. R2 is also calculated to provide an additional measure of how well the model explains the variability in the response data, with higher values indicating better explanatory power.

The model with the lowest AIC is selected as the best model for each PK/PD index. However, all model fits are summarized in the output, including their AIC, R2, and success status, enabling transparent evaluation. The package also offers a model manual selection using the select_mod argument (Algorithm 2).

Example usage of the PKPDindex().

Step 5: Generate plots

The function allows users to generate and customize the appearance of plots, including the colors of the data points point_color and fitted lines line_color, as well as adjust the axis limits (xlim and ylim), axis labels (x_label and y_label), and plot titles plot_title. Font sizes for titles title_cex, axis labels label_cex, axis tick labels axis_cex, and model annotation details detail_cex can also be adjusted. In addition, a log10 transformation can be applied to the x-axis for each PK/PD index through the argument log_scale_x to better visualize wide concentration ranges (Algorithm 3).

Example usage of the PKPDindex().

Expected results

Output structure

The PKPDindex() generates a list containing three key components. The All_Model_Results element provides a detailed summary of all models fitted for each PK/PD index, including performance metrics such as AIC, R2, and parameter estimates, along with the fit status for each model. The Best_Models component summarizes the best-fitting model for each index, including the key parameters (E0, Emax, Hill coefficient, EI50) and corresponding evaluation metrics AIC and R2 values. Lastly, the Plots element contains a list of plots for the best-fitting models. Table 2 shows an example of All_Model_Results output.

 Example of the All_Model_Results output from the PKPDindex().

PK/PD indexModelAICR2E0EmaxgamEI50Success
AUC/MICm136.8271.33%1.54.8134.62Success
AUC/MICm232.1879.43%1.54.80.6638.24Success
AUC/MICm334.9376.40%1.53.6116.53Success
AUC/MICm433.5880.04%1.510.710.47572.63Success
AUC/MICm532.479.20%0.894.8170.56Success
AUC/MICm633.2880.33%1.114.80.7960.74Success
AUC/MICm733.180.51%13.71136.52Success
AUC/MICm833.5281.99%0.652.215.1423.11Success
Cmax/MICm165.56–20.66%1.54.8112.65Success
Cmax/MICm258.8721.85%1.54.80.2829.23Success
Cmax/MICm360.9613.25%1.51.9510.16Success
Cmax/MICm4NANANANANANAFailure
Cmax/MICm556.3930.99%0.314.8156.2Success
Cmax/MICm657.3734.40%0.124.82.0839.28Success
Cmax/MICm7NANANANANANAFailure
Cmax/MICm8NANANANANANAFailure
T>MICm178.02–124.92%1.54.8159.18Success
T>MICm2NANANANANANAFailure
T>MICm360.5215.15%1.51.8610.07Success
T>MICm4NANANANANANAFailure
T>MICm5NANANANANANAFailure
T>MICm6NANANANANANAFailure
T>MICm762.4715.36%1.31.6610.09Success
T>MICm8NANANANANANAFailure

The table lists all fitted Emax model variants for each PK/PD index, including the model’s name, Akaike Information Criterion (AIC), and R2. Parameter estimates for each model E0 (baseline effect), Emax (maximum effect), gam (Hill coefficient), and EI50 (PK/PD index producing 50% of the maximal effect), are also shown, along with the success of model fitting. EI50 is expressed in the same unit as the corresponding PK/PD index.

Visualization of results

When plot_results=TRUE, the PKPDindex() automatically generates plots that visualize the relationship between each PK/PD index (AUC/MIC, Cmax/MIC, T>MIC) and the pharmacodynamic response. Figure 1 shows an example of the expected plot output. For each index, the function displays the best-fitting model curve alongside the observed data points, allowing direct visual assessment of model performance. Each plot also displays the fitted model's key parameters and performance metrics including AIC, R2, E0, Emax, γ, and EI50, which are annotated directly on the graph.

Example of output plot from the PKPDindex(). The plot shows the optimal Emax models selected for each PK/PD index based on the lowest AIC values. Model performance is summarised by the corresponding R2, E0, Emax, Hill coefficient, and EI50 estimates displayed on each plot.

Abbreviations

AUC/MIC: area under the concentration–time curve to the minimum inhibitory concentration

Cmax/MIC: maximum drug concentration to the minimum inhibitory concentration

PK/PD: pharmacokinetic/pharmacodynamic

T>MIC: time above minimum inhibitory concentration

Declarations

Acknowledgments

The authors would like to thank University College London (UCL) for providing access to research databases and necessary materials.

Author contributions

NA: Conceptualization, Methodology, Software, Validation, Formal analysis, Writing—original draft, Writing—review & editing. JFS: Conceptualization, Supervision, Validation, Writing—review & editing. The authors read and approved the submitted version.

Conflicts of interest

The authors declare that they have no conflicts of interest.

Ethical approval

Not applicable.

Consent to participate

Not applicable.

Consent to publication

Not applicable.

Availability of data and materials

The PKPDindex package, including the example datasets and source code used in this protocol, is publicly available through the Comprehensive R Archive Network (CRAN) at https://CRAN.R-project.org/package=PKPDindex. All data described in this manuscript are available within the package and can be accessed by users through CRAN.

Funding

NA received a scholarship funded by Princess Nourah bint Abdulrahman University. JFS was supported by a UK Medical Research Council fellowship (MR/008665/1). The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.

Copyright

© The Author(s) 2026.

Publisher’s note

Open Exploration maintains a neutral stance on jurisdictional claims in published institutional affiliations and maps. All opinions expressed in this article are the personal views of the author(s) and do not represent the stance of the editorial team or the publisher.

References

Mouton JW, Dudley MN, Cars O, Derendorf H, Drusano GL. Standardization of pharmacokinetic/pharmacodynamic (PK/PD) terminology for anti-infective drugs: an update. J Antimicrob Chemother. 2005;55:6017. [DOI] [PubMed]
Nielsen EI, Cars O, Friberg LE. Pharmacokinetic/Pharmacodynamic (PK/PD) Indices of Antibiotics Predicted by a Semimechanistic PKPD Model: a Step toward Model-Based Dose Optimization. Antimicrob Agents Chemother. 2011;55:461930. [DOI] [PubMed] [PMC]
Nielsen EI, Friberg LE. Pharmacokinetic-Pharmacodynamic Modeling of Antibacterial Drugs. Pharmacol Rev. 2013;65:105390. [DOI] [PubMed]
Rotschafer JC, Andes DR, Rodvold KA. Antibiotic Pharmacodynamics. New York: Humana Press; 2016. [DOI]
Goutelle S, Maurin M, Rougier F, Barbaut X, Bourguignon L, Ducher M, et al. The Hill equation: a review of its capabilities in pharmacological modelling. Fundam Clin Pharmacol. 2008;22:63348. [DOI] [PubMed]
Alabdulkarim N, Readman J, Mead A, Oakley R, Wenker S, Kembou J, et al. Systematic review of antimicrobial pharmacokinetic/pharmacodynamic indices in murine thigh and hollow fibre dose fractionation studies analysed with a standard method. J Antimicrob Chemother. 2025;81:e81. [DOI] [PubMed] [PMC]
Spiess AN, Neumeyer N. An evaluation of R2 as an inadequate measure for nonlinear models in pharmacological and biochemical research: a Monte Carlo approach. BMC Pharmacol. 2010;10:6. [DOI] [PubMed] [PMC]
Burnham KP, Anderson DR. Multimodel Inference. Sociol Methods Res. 2004;33:261304. [DOI]
Akaike H. Information theory and an extension of the maximum likelihood principle. In: Petrov BN, Csaki F, editors. Budapest (Hungary): Akadémiai Kiadó; 1973. pp. 267–81.
Kuha J. AIC and BIC. Sociol Methods Res. 2004;33:188229. [DOI]
Ting N. Dose finding in drug development. Springer Science & Business Media; 2006. [DOI]
Schwarz G. Estimating the Dimension of a Model. Ann Stat. 1978;6:e6. [DOI]
Cite this Article
Export Citation
Alabdulkarim N, Standing JF. PKPDindex: an R/CRAN package for PK/PD index analysis. Explor Drug Sci. 2026;4:1008167. https://doi.org/10.37349/eds.2026.1008167
Article Metrics

View: 105

Download: 10

Times Cited: 0