Evaluate or optimize designs for nonlinear mixed effects models using the Fisher Information matrix. Methods used in the package refer to Mentré F, Mallet A, Baccar D (1997) <doi:10.1093/biomet/84.2.429>, Retout S, Comets E, Samson A, Mentré F (2007) <doi:10.1002/sim.2910>, Bazzoli C, Retout S, Mentré F (2009) <doi:10.1002/sim.3573>, Le Nagard H, Chao L, Tenaillon O (2011) <doi:10.1186/1471-2148-11-326>, Combes FP, Retout S, Frey N, Mentré F (2013) <doi:10.1007/s11095-013-1079-3> and Seurat J, Tang Y, Mentré F, Nguyen TT (2021) <doi:10.1016/j.cmpb.2021.106126>.
Nonlinear mixed effects models (NLMEM) are widely used in model-based drug development and use to analyze longitudinal data. The use of the "population" Fisher Information Matrix (FIM) is a good alternative to clinical trial simulation to optimize the design of these studies. PFIM 4.0 was released in 2018 as a list of R functions [1]. The present version, PFIM 5.0, is an R package that uses the S4 object system for evaluating and/or optimizing population designs based on FIM in NLMEMs.
This new version of PFIM now includes a library of models implemented also using the object oriented system S4 of R. This new library contains two libraries of pharmacokinetic (PK) and/or pharmacodynamic (PD) models. The PK library includes model with different administration routes (bolus, infusion, first-order absorption), different number of compartments (from 1 to 3), and different types of eliminations (linear or Michaelis-Menten). The PD model library, contains direct immediate models (e.g. Emax and Imax) with various baseline models, and turnover response models. The PK/PD models are obtained with combination of the models from the PK and PD model libraries. PFIM handles both analytical and ODE models and offers the possibility to the user to define his/her own model(s).
In PFIM 5.0, the FIM is evaluated by first order linearization of the model assuming a block diagonal FIM as in [3]. The Bayesian FIM is also available to give shrinkage predictions [4]. PFIM 5.0 includes several algorithms to conduct design optimization based on the D-criterion, given design constraints : the simplex algorithm (Nelder-Mead) [5], the multiplicative algorithm [6], the Fedorov-Wynn algorithm [7], PSO (Particle Swarm Optimization) and PGBO (Population Genetics Based Optimizer) [9].
PFIM 5.0 also provides quality control with tests and validation using the evaluated FIM to assess the validity of the new version and its new features. Finally, PFIM 5.0 displays all the results with both clear graphical form and a data summary, while ensuring their easy manipulation in R. The standard data visualization package ggplot2 for R is used to display all the results with clear graphical form [10]. A quality control using the D-criterion is also provided.
PFIM 5.0 contains a hierarchy of S4 classes with corresponding methods and functions serving as constructors.
All of the source code related to the specification of a certain class is contained in a file named
[Name_of_the_class]-Class.R
. These classes include:
1. all roxygen @include
to insure the correctly generated collate for the DESCRIPTION file,
2. \setClass
preceded by a roxygen documentation that describes the purpose and slots of the class,
3. specification of an initialize method,
4. all getter and setter, respectively returning attributes of the object and associated objects.
The following class diagrams provide an overview on the structure of the package.
Class Administration
getAllowedDose
getAllowedTime
getAllowedTinf
getAmountDose
getNameAdministration
getTau
getTimeDose
getTinf
is.multidose
setAllowedDose
setAllowedTime<-
setAllowedTinf<-
setAmountDose
setTau
setTimeDose<-
setTinf
Class AdministrationConstraint
AllowedDoses
fixedDoses
getAllowedDoses
getDoseOptimisability
getNumberOfDoses
getResponseName
Class Arm
addAdministration
addSampling
addSamplings
EvaluateStatisticalModel
getAdministration
getAdministrationByOutcome
getArmSize
getNameArm
getCondInit
getSamplings
setArmSize
setInitialConditions
setSamplings<-
getResponseNameByIndice
addSamplingConstraints
getSamplingConstraintsInArm
modifySamplingTimes
getNumberOfSamplings
Class BayesianFim
getDescription
getShrinkage
Classes Combined1
, Combined1c
, Combined2
, Combined2c
getSigmaNames
getSigmaValues
show
Class Constant
getSigmaNames
getSigmaValues
show
Class Constraint
Class ContinuousConstraint
getRange
setRange<-
Class Design
addArm
addArms
EvaluateDesignForEachArm
getAmountOfArms
getArms
getEvaluationDesign
getFimOfDesign
getNameDesign
getNumberSamples
setNumberSamples<-
getOptimizationResult
getTotalSize
modifyArm
setAmountOfArms
setArms
setNameDesign
setTotalSize<-
show
showArmData
summaryArmData
Class DesignConstraint
addAdministrationConstraint
addDesignConstraints
addSamplingConstraint
getAdministrationConstraint
getNameDesignConstraint
getTotalNumberOfIndividuals
getSamplingConstraints
setAmountOfArmsAim
setPossibleArms
setTotalNumberOfIndividuals
show
Class DiscreteConstraint
getDiscret
setDiscret<-
Class Distribution
Class FedorovWynnAlgorithm
FedorovWynnAlgorithm_Rcpp
resizeFisherMatrix
PrepareFIMs
Optimize
Class Fim
FinalizeFIMForOneElementaryDesign
getConditionNumberMatrix
getCorr
getDcriterion
getDescription
getDeterminant
getEigenValue
getMfisher
getSE
getStatisticalModelStandardErrors
setMfisher<-
setMu
setOmega
show
showStatisticalModelStandardErrors
Class IndividualFim
getDescription
getStatisticalModelStandardErrors
show
showStatisticalModelStandardErrors
Class LibraryOfModels
addModel
getContentsLibraryOfModels
getModel
getModelNameList
getPKPDModel
Class LogNormalDistribution
AdjustLogNormalDistribution
Class Model
getEquations
getEquationsModel
getModelName
setParametersModel
Class ModelEquations
convertAnalyticToODE
EvaluateModel
getDerivate
getEquation
getEquations
getNumberOfParameters
getParameters
getResponseIndice
remplaceDose
Class ModelError
g
getCError
getDVSigma
getEquation
getErrorModelParameters
getNumberOfParameter
getSig
getSigmaInter
getSigmaNames
getSigmaSlope
getSigmaValues
setCError<-
setSigmaInter<-
setSigmaSlope<-
show
Class ModelInfusionEquations
getInfusionEquations
getEquationsModelPKPD
EvaluateModelInfusion
Class ModelInfusionODEquations
getResponseIndice
scaleResponsesEvaluationODEInfusion
EvaluateModelODEInfusion
Class ModelODEquations
getDerivatives
scaleResponsesEvaluationODE
getEquationsModelPKPD
EvaluateModelODE
Class ModelParameter
getDerivatesAdjustedByDistribution
getDistribution
getMu
getNameModelParameter
getOmega
isFixed
isFixedMu
isNotFixed
isNotFixedMu
Class ModelVariable
getNameModelVariable
Class MultiplicativeAlgorithm
getWeightFrame
MultiplicativeAlgorithm_Rcpp
Optimize
PrepareFIMs
setDelta
setIteration
setShowProcess
show
Class NormalDistribution
AdjustNormalDistribution
Class Optimization
Combinaison
EvaluateFIMsAndDesigns
getElementaryProtocols
getOptimalDesign
setOptimalDesign
Optimize
PrepareFIMs
setShowProcess
show
Class PDModel
Class PFIMProject
addDesign
addDesigns
defineStatisticalModel
EvaluateBayesianFIM
EvaluateDesign
EvaluateIndividualFIM
EvaluatePopulationFIM
getDesign
getEvaluationResponses
getFim
getFims
getFisherMatrices
getNamePFIMProject
setNamePFIMProject
getParametersOdeSolver
setParametersOdeSolver
getStatisticalModel
getWeights
OptimizeDesign
plotCriteria
plotResponse
plotRSE
plotSE
plotSensitivity
plotWeightOptimisation
plotFrequenciesOptimisation
plotShrinkage
setConstraint
setDesign
show
showConstraints
showDesigns
showFims
reportPFIMProject
Class PKModel
changeVariablePKModel
getEquations
Class PKPDModel
getEquations
getPDModel
getPKModel
Class PopulationFim
FinalizeFIMForOneElementaryDesign
getDescription
getStatisticalModelStandardErrors
showStatisticalModelStandardErrors
Class ReportAndPlots
knitrModelEquations
knitrModelError
knitrModelParameters
knitrAdministrationParameters
knitrInitialDesigns
knitrFIM
knitrOptimalDesign
PFIMProjectReportEvaluation
PFIMProjectReportOptimization
Class Response
EvaluateErrorModelDerivatives
EvaluateODEErrorModelDerivatives
getModelError
getNameResponse
getSigmaNames
IndividualFIMEvaluateVariance
PopulationFIMEvaluateVariance
setModelError<-
Class SamplingConstraint
allowedContinuousSamplingTimes
allowedDiscretSamplingTimes
FixTimeValues
getallowedDiscretSamplingTimes
getfixedTimes
getnumberOfSamplingTimes
getOptimisability
getResponseName
isLessThanDelay
isTimeInBetweenBounds
numberOfSamplingTimesIsOptimisable
Class SamplingTimes
getNameSampleTime
getSampleTime
setSampleTime
getNumberTime
getInitialTime
Class StandardDistribution
Class StatisticalModel
addResponse
addResponses
CalculatedResidualVariance
defineCorrelation
defineModelEquations
defineParameter
Evaluate
EvaluationModel
getEquationsStatisticalModel
getErrorModelStandardErrors
getModelParameters
getFixedParameters
getResponsesStatisticalModel
show
checkParameterInEquations
setParametersForEvaluateModel
parametersForComputingGradient
defineVariable
defineVariables
Maintainer: Romain Leroux romain.leroux@inserm.fr
Authors:
France Mentré france.mentre@inserm.fr (ORCID)
Hervé Le Nagard herve.lenagard@inserm.fr
Jérémy Seurat jeremy.seurat@inserm.fr
Other contributors:
Tran Bach Nguyen [contributor]
Caroline Bazzoli [contributor]
Emmanuelle Comets [contributor]
Anne Dubois [contributor]
Cyrielle Dumont [contributor]
Giulia Lestini [contributor]
Thi Huyen Tram Nguyen [contributor]
Thu Thuy Nguyen [contributor]
Sylvie Retout [contributor]
[1] Dumont C, Lestini G, Le Nagard H, Mentré F, Comets E, Nguyen TT, et al. PFIM 4.0, an extended R program for design evaluation and optimization in nonlinear mixed-effect models. Comput Methods Programs Biomed. 2018;156:217-29.
[2] Chambers JM. Object-Oriented Programming, Functional Programming and R. Stat Sci. 2014;29:167-80.
[3] Mentré F, Mallet A, Baccar D. Optimal Design in Random-Effects Regression Models. Biometrika. 1997;84:429-42.
[4] Combes FP, Retout S, Frey N, Mentré F. Prediction of shrinkage of individual parameters using the bayesian information matrix in nonlinear mixed effect models with evaluation in pharmacokinetics. Pharm Res. 2013;30:2355-67.
[5] Nelder JA, Mead R. A simplex method for function minimization. Comput J. 1965;7:308–13.
[6] Seurat J, Tang Y, Mentré F, Nguyen, TT. Finding optimal design in nonlinear mixed effect models using multiplicative algorithms. Computer Methods and Programs in Biomedicine, 2021.
[7] Fedorov VV. Theory of Optimal Experiments. Academic Press, New York, 1972.
[8] Eberhart RC, Kennedy J. A new optimizer using particle swarm theory. Proc. of the Sixth International Symposium on Micro Machine and Human Science, Nagoya, 4-6 October 1995, 39-43.
[9] Le Nagard H, Chao L, Tenaillon O. The emergence of complexity and restricted pleiotropy in adapting networks. BMC Evol Biol. 2011;11:326.
[10] Wickham H. ggplot2: Elegant Graphics for Data Analysis, Springer-Verlag New York, 2016.