Design evaluation and optimization 02"

backup_options <- options()
options(width = 3000)
knitr::opts_chunk$set(collapse = TRUE,
comment = "#>",echo = FALSE, warning = FALSE, message = FALSE,
cache = FALSE, tidy = FALSE, size = "small")
devtools::load_all()

Overview

In this example, we simulate an 1-compartment model with linear elimination for IV infusion over 1 hour (inspired by [@Sukeishi2021]). One hundred and fifty (150) subjects receive a 400mg loading dose on the first day, followed by 4 daily doses of 200mg. Blood samples are taken at the end of the $1^{st}$ infusion (H1), H20, H44, H66 and H120. By evaluating this design, we will then select 4 sampling times on intervals (0,48) and (72,120) for an optimal design using PSO (Particle Swarm Optimization) algorithm.

Reports of the design evaluation and optimization are available at https://github.com/iame-researchCenter/PFIM

Design evaluation

Create two PFIM projects:

MyProject_evaluation: project for the design evaluation named eval_PK_Sukeishi-2021-GS441524

MyProject_optimization: project for the design optimization named opti_PK_Sukeishi-2021-GS441524

MyProject_evaluation = PFIMProject( name = "eval_PK_Sukeishi-2021-GS441524" )
MyProject_optimization = PFIMProject( name = "opti_PK_Sukeishi-2021-GS441524" )

Create the statistical model

MyStatisticalModel = StatisticalModel()

Get the PK model Linear1InfusionSingleDose_ClV from the library of models

MyPKModel = getModel( PFIMLibraryOfModels, "Linear1InfusionSingleDose_ClV" )

Assign the PK model the statistical model

MyStatisticalModel = defineModelEquations( MyStatisticalModel, MyPKModel )

Set mu and omega for each parameter

pV = ModelParameter( "V", mu = 50, omega = sqrt( .26 ), distribution = LogNormalDistribution() )
pCl = ModelParameter( "Cl", mu = 5, omega = sqrt( .34 ), distribution = LogNormalDistribution() )

Assign the model parameters to the statistical model

MyStatisticalModel = defineParameter( MyStatisticalModel, pV )
MyStatisticalModel = defineParameter( MyStatisticalModel, pCl )

Create and add the error model to the response PK RespPK and create and add the response PK to the statistical model

errorModelresponsePK = Combined1( sigma_inter = 0.5, sigma_slope = sqrt( 0.15 ) )

responsePK = Response( "RespPK", errorModelresponsePK )

MyStatisticalModel = addResponse( MyStatisticalModel, responsePK )

Assign the statistical model to the PFIM projects

MyProject_evaluation = defineStatisticalModel( MyProject_evaluation, MyStatisticalModel )
MyProject_optimization = defineStatisticalModel( MyProject_optimization, MyStatisticalModel )

Create a design called Design

MyDesign = Design( "Design" )

Create an arm called Bras test of size 150

brasTest = Arm( name = "Bras test", arm_size = 150 )

For each arm create and add the sampling times for the response PK RespPK

brasTest = addSampling( brasTest, SamplingTimes( outcome = "RespPK", sample_time = c( 1,12,24,44,72,120 ) ) )

For the arm brasTest create and add the administration parameters of the response PK

administration_brasTest = Administration( outcome = "RespPK", Tinf = rep( 1, 5 ), time_dose = seq( 0, 96, 24 ) , amount_dose = c( 400, rep( 200, 4 ) ) )

brasTest = addAdministration( brasTest, administration_brasTest )

Add the arm brasTest to the design MyDesign

MyDesign = addArm( MyDesign, brasTest )

Add the design MyDesign to the PFIM project MyProject

MyProject_evaluation = addDesign( MyProject_evaluation, MyDesign )

Evaluate the population, individual and Bayesian FIMs

evaluationPop = EvaluatePopulationFIM( MyProject_evaluation )
evaluationInd = EvaluateIndividualFIM( MyProject_evaluation )
evaluationBay = EvaluateBayesianFIM( MyProject_evaluation )

Display the results of the design evaluation

show( evaluationPop )
show( evaluationInd )
show( evaluationBay )

Create and save the report for the design evaluation

# set the path and name of the report to save the report
outputPath = "....."

plotOptions = list( unitTime=c("hour"), unitResponses= c("mcg/mL","DI%") )

reportPFIMProject( evaluationPop,
                   outputPath = outputPath, plotOptions = plotOptions )

reportPFIMProject( evaluationInd,
                   outputPath = outputPath, plotOptions = plotOptions )

reportPFIMProject( evaluationBay,
                   outputPath = outputPath, plotOptions = plotOptions )

Design optimization

Create and add the design MyDesign2 to the project MyProject_optimization

MyDesign2 = Design( name = "MyDesign2")
MyProject_optimization = addDesign( MyProject_optimization, MyDesign2 )

Define design constraints

samplingBoundsConstraintRespPK = SamplingConstraint( response = "RespPK", continuousSamplingTimes = list( c( 1,48 ), c( 72,120 ) ) )
samplingMinimalDelayConstraintRespPK = SamplingConstraint( response = "RespPK", min_delay = 5 )

Constr1 = DesignConstraint()

Constr1 = addSamplingConstraint( Constr1, samplingBoundsConstraintRespPK )
Constr1 = addSamplingConstraint( Constr1, samplingMinimalDelayConstraintRespPK )
brasTest2 = addSamplingConstraints( brasTest2, Constr1 )

Add the arm to the design

MyDesign2 = addArm( MyDesign2, brasTest2 )

Add the design to the project

MyProject_optimization = addDesign( MyProject_optimization, MyDesign2 )

Set the the parameters of the PSO algorithm and run the algorithm for the design optimization with a population FIM

psoOptimizer = PSOAlgorithm( maxIteration = 100, populationSize = 10, personalLearningCoefficient = 2.05, globalLearningCoefficient = 2.05, showProcess = TRUE )

Run the PSO algorithm for the optimization with a population FIM

optimization_populationFIM = OptimizeDesign( MyProject_optimization, psoOptimizer, PopulationFim() )

Display the results of the design optimization

show( optimization_populationFIM )

Create and save the report for the design optimization

# set the path to save the report
outputPath = "....."

plotOptions = list( unitTime=c("hour"), unitResponses= c("mcg/mL","DI%") )

reportPFIMProject( optimization_populationFIM, outputPath = outputPath, plotOptions = plotOptions  )

References

options(backup_options)


Try the PFIM package in your browser

Any scripts or data that you put into this service are public.

PFIM documentation built on June 24, 2022, 9:06 a.m.