Learn R Programming

PFIM (version 5.0)

PFIM-package: Fisher Information matrix for design evaluation/optimization for nonlinear mixed effects models.

Description

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>.

Arguments

Description

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].

Validation

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.

Organization of the source code / files in the <code>/R</code> folder

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.

Content of the source code and files in the <code>/R</code> folder

  • 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

    • summary

    • 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

    • summary

    • 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

Author

Maintainer: Romain Leroux romain.leroux@inserm.fr

Authors:

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]

References

[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.