Design evaluation and optimization with covariates — analytical PK model

Overview

This example illustrates the evaluation of a population design for a one-compartment PK model with first-order absorption, defined analytically. Two covariates are considered:

Experimental design

The design consists of a single arm of 40 subjects, each receiving a single oral dose of 30 mg at time 0, sampled at 5 time points. The population FIM is evaluated, and a covariate test is run to assess the power to detect the covariate effects (significance, non-relevance, and equivalence tests).

Objectives

The objective is to evaluate this design and how it assesses significance and non-relevance on the covariates, with the power for initial sample size and the number of subjects required to reach 90% power. Secondly, we aim to find the D-optimal design with only 3 sampling times, using possible sampling time windows and a continuous design space optimization. The number of subjects and the dosing regimen is unchanged. At the end, we aim to compare if this sparser optimal design leads to equivalent performances on covariate tests than the initial design.

Optimization results are computed by example03_execute.R (run once, then cached as .RDS in data/). HTML reports are written to results/. Reports are also available at https://github.com/packagePFIM

Design evaluation

PK model user-defined

The equation corresponds to a one-compartment model with first-order absorption, with parameters ka, V and Cl. The dose is passed via the dose_RespPK keyword.

Define the PK model equation

modelEquations = list(
  "RespPK" = "dose_RespPK/V * ka/(ka - Cl/V) * (exp(-Cl/V * t) - exp(-ka * t))"
)

Model parameters

The model has three structural parameters, all log-normally distributed. Inter-individual variability (\(\omega\)) and inter-occasion variability (\(\gamma\)) are specified for each.

Parameter Description \(\mu\) \(\omega\) \(\gamma\) Fixed \(\mu\) Fixed \(\omega\)
ka Absorption rate constant (h\(^{-1}\)) 1 \(\sqrt{0.09} \approx 0.30\) \(\sqrt{0.0225} = 0.15\) No No
V Volume of distribution (L) 3.5 \(\sqrt{0.09} \approx 0.30\) \(\sqrt{0.0225} = 0.15\) No No
Cl Elimination clearance (L/h) 2 \(\sqrt{0.09} \approx 0.30\) \(\sqrt{0.0225} = 0.15\) No No

Define mu, omega and gamma for each parameter

modelParameters = list(
  ModelParameter( name = "ka", distribution = LogNormal( mu = 1,   omega = sqrt(0.09) ), gamma = sqrt(0.0225) ),
  ModelParameter( name = "V",  distribution = LogNormal( mu = 3.5, omega = sqrt(0.09) ), gamma = sqrt(0.0225) ),
  ModelParameter( name = "Cl", distribution = LogNormal( mu = 2,   omega = sqrt(0.09) ), gamma = sqrt(0.0225) )
)

Residual error model

A constant (additive) residual error model is used, with sigmaInter = 0.1 (variance = 0.01).

Define the error model to the response PK RespPK

modelError = list( Constant( output = "RespPK", sigmaInter = 0.1 ) )

Covariates

Covariate effects are parameterised on the log scale (modelCovariatesEquation = "exponential"), so each \(\beta\) coefficient represents the log-ratio of the affected parameter between the non-reference and the reference category.

Covariate Type Categories Proportions Affected parameter Effect (\(\beta\)) Reference
Sex Between-subject (fixed) M / F 50 % / 50 % V log(1.2) \(\approx\) 0.182 M
Treatment Within-subject (occasion) R / T 50 % / 50 % Cl log(1.1) \(\approx\) 0.095 R

Sex is a between-subject covariate with an exponential effect on V. The log-ratio between female and male typical values is log(1.2).

Define the between-subject covariate

sex = Covariate(
  name = "Sex",
  categories = c("M", "F"),
  categoriesProportions = c(0.5, 0.5),
  effects = list( "F" = c( "V" = log(1.2) ) )
)

Treatment is a within-subject (occasion) covariate following a two-sequence, two-period crossover design. The log-ratio of clearance under treatment T relative to treatment R is log(1.1).

Define the within-subject covariate

treatment = Covariate(
  name = "Treatment",
  categories = c("R", "T"),
  sequences            = list( c("R","T"), c("T","R") ),
  sequencesProportions = c(0.5, 0.5),
  effects = list( "T" = c( "Cl" = log(1.1) ) )
)

Administration and sampling times

A single oral dose of 30 mg is administered at time 0. Five sampling times are specified to cover both the absorption and elimination phases.

Define the administration parameters and the sampling times of the response PK

administrationRespPK = Administration( outcome = "RespPK", timeDose = c(0), dose = c(30) )

samplingTimesRespPK = SamplingTimes( outcome = "RespPK", samplings = c(0.5, 2, 4, 6, 8) )

Arm and design

A single arm of 40 subjects on the same regimen.

Define an arm called arm1 of size 40 encompassed in the design design1

arm1 = Arm( name = "arm1",
            size = 40,
            administrations = list( administrationRespPK ),
            samplingTimes   = list( samplingTimesRespPK ) )

design1 = Design( name = "design1", arms = list( arm1 ) )

Population FIM evaluation

The covariate effects use an exponential parameterisation (modelCovariatesEquation = "exponential"). The analytic model does not require ODE solver parameters.

Evaluate the population FIM

evaluationPop = Evaluation(
  name            = "",
  modelParameters = modelParameters,
  modelCovariates = list( sex, treatment ),
  modelCovariatesEquation = "exponential",
  modelEquations  = modelEquations,
  modelError      = modelError,
  designs         = list( design1 ),
  fimType         = "population",
  outputs         = list( "RespPK" = "RespPK" )
)

evaluationPopFIM = run( evaluationPop )

Display the population FIM

show( evaluationPopFIM )
*************************************** 
  Population Fisher Matrix 
*************************************** 

                       μ_ka         μ_V       μ_Cl   β_V_Sex_F β_Cl_Treatment_T        ω²_ka         ω²_V        ω²_Cl        γ²_ka         γ²_V        γ²_Cl σ_inter_RespPK
μ_ka             339.888866 -12.1244029  2.2403232 -17.9762700        1.8294873    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
μ_V              -12.124403  29.3831440  0.5085979  52.3319426        0.4561115    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
μ_Cl               2.240323   0.5085979 98.2790307   0.8587853       98.1435338    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
β_V_Sex_F        -17.976270  52.3319426  0.8587853 183.1617992        0.8270805    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
β_Cl_Treatment_T   1.829487   0.4561115 98.1435338   0.8270805      953.4932901    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
ω²_ka              0.000000   0.0000000  0.0000000   0.0000000        0.0000000 1444.4800032 2.303490e+01 2.509671e-01 7.250348e+02 1.529776e+01 1.301725e-01      423.70188
ω²_V               0.000000   0.0000000  0.0000000   0.0000000        0.0000000   23.0348957 1.620000e+03 1.586320e-01 1.385535e+01 8.131879e+02 8.052141e-02      269.48022
ω²_Cl              0.000000   0.0000000  0.0000000   0.0000000        0.0000000    0.2509671 1.586320e-01 1.931754e+03 1.290869e-01 9.016087e-02 9.658788e+02       18.52264
γ²_ka              0.000000   0.0000000  0.0000000   0.0000000        0.0000000  725.0347675 1.385535e+01 1.290869e-01 1.201459e+04 4.448247e+03 4.969634e+01     2591.78367
γ²_V               0.000000   0.0000000  0.0000000   0.0000000        0.0000000   15.2977604 8.131879e+02 9.016087e-02 4.448247e+03 1.990898e+04 3.195887e+01     1814.53482
γ²_Cl              0.000000   0.0000000  0.0000000   0.0000000        0.0000000    0.1301725 8.052141e-02 9.658788e+02 4.969634e+01 3.195887e+01 3.707617e+04      615.30442
σ_inter_RespPK     0.000000   0.0000000  0.0000000   0.0000000        0.0000000  423.7018815 2.694802e+02 1.852264e+01 2.591784e+03 1.814535e+03 6.153044e+02    36667.05676

*************************************** 
  Fixed effects (μ) 
*************************************** 

                       μ_ka         μ_V       μ_Cl   β_V_Sex_F β_Cl_Treatment_T
μ_ka             339.888866 -12.1244029  2.2403232 -17.9762700        1.8294873
μ_V              -12.124403  29.3831440  0.5085979  52.3319426        0.4561115
μ_Cl               2.240323   0.5085979 98.2790307   0.8587853       98.1435338
β_V_Sex_F        -17.976270  52.3319426  0.8587853 183.1617992        0.8270805
β_Cl_Treatment_T   1.829487   0.4561115 98.1435338   0.8270805      953.4932901

*************************************** 
  Variance components (ω², γ², σ) 
*************************************** 

                      ω²_ka         ω²_V        ω²_Cl        γ²_ka         γ²_V        γ²_Cl σ_inter_RespPK
ω²_ka          1444.4800032 2.303490e+01 2.509671e-01 7.250348e+02 1.529776e+01 1.301725e-01      423.70188
ω²_V             23.0348957 1.620000e+03 1.586320e-01 1.385535e+01 8.131879e+02 8.052141e-02      269.48022
ω²_Cl             0.2509671 1.586320e-01 1.931754e+03 1.290869e-01 9.016087e-02 9.658788e+02       18.52264
γ²_ka           725.0347675 1.385535e+01 1.290869e-01 1.201459e+04 4.448247e+03 4.969634e+01     2591.78367
γ²_V             15.2977604 8.131879e+02 9.016087e-02 4.448247e+03 1.990898e+04 3.195887e+01     1814.53482
γ²_Cl             0.1301725 8.052141e-02 9.658788e+02 4.969634e+01 3.195887e+01 3.707617e+04      615.30442
σ_inter_RespPK  423.7018815 2.694802e+02 1.852264e+01 2.591784e+03 1.814535e+03 6.153044e+02    36667.05676

********************************************* 
  Determinant, condition numbers and D-criterion 
 *********************************************** 

Determinant: 9.179643e+37 
D-criterion: 1457.367 
Condition number (fixed effects): 73.40657 
Condition number (variance components): 27.34871 

*************************************** 
  Parameters estimation 
*************************************** 

Parameter                 Value           SE     RSE(%)
μ_ka                1.00000000  0.054662025   5.466202
μ_V                 3.50000000  0.264574919   7.559283
μ_Cl                2.00000000  0.106506758   5.325338
β_V_Sex_F           0.18232156  0.105457033  57.841231
β_Cl_Treatment_T     0.09531018  0.034189595  35.871924
ω²_ka              0.09000000  0.026779506  29.755007
ω²_V               0.09000000  0.025141327  27.934808
ω²_Cl              0.09000000  0.022901883  25.446537
γ²_ka              0.02250000  0.009744927  43.310785
γ²_V               0.02250000  0.007496871  33.319425
γ²_Cl              0.02250000  0.005228287  23.236831
σ_inter_RespPK      0.10000000  0.005272574   5.272574


*************************************** 
 Legend: 
 μ  = fixed effects (population means)
 β  = covariate effects
 ω² = inter-individual variability (IIV)
 γ² = inter-occasion variability (IOV)
 σ  = residual error SD
*************************************** 

[1] 1457.367
plotsEval = plotEvaluation( evaluationPopFIM, plotOptions )
print( plotsEval$design1$arm1$RespPK )
plotsSI = plotSensitivityIndices( evaluationPopFIM, plotOptions )
print( plotsSI$design1$arm1$RespPK$V )
print( plotsSI$design1$arm1$RespPK$Cl )
plotEval_SE = PFIM::plotSE( evaluationPopFIM )

plotEval_RSE = PFIM::plotRSE( evaluationPopFIM )

outputFile = "vignette3_evaluation_popFim_report.html"
Report(evaluationPopFIM, paths$reports, outputFile, plotOptions)

Of note, we could also use these functions to extract specific results:

getFisherMatrix( evaluationPopFIM ) 
getCorrelationMatrix( evaluationPopFIM ) 
getSE( evaluationPopFIM ) 
getRSE( evaluationPopFIM ) 
getDeterminant( evaluationPopFIM ) 
getDcriterion( evaluationPopFIM ) 

Covariate tests

The covariateTest function computes power for three hypothesis testing frameworks:

\(\Delta\) is conventionally set to \(\log(1.25) \approx 0.223\).

Evaluate and display covariate tests

resultsTests = covariateTest( evaluationPopFIM )
show( resultsTests )
============================================================
 Statistical significance (β, bilateral Wald test)
 Target power: 90% | Current sample size N = 40
============================================================

        Parameter  Value     SE   RSE Power N_Required
        β_V_Sex_F 0.1823 0.1055 57.84  40.9        141
 β_Cl_Treatment_T 0.0953 0.0342 35.87  79.6         55

============================================================
 Clinical non-relevance (TOST on β)
 Target power: 90% | Current sample size N = 40 | Equivalence IC (90%) on ratio: [0.80, 1.25]
============================================================

        Parameter  Value     SE   RSE Ratio IC_Inf IC_Sup Power N_Required
        β_V_Sex_F 0.1823 0.1055 57.84   1.2 1.0089 1.4273   9.0       2287
 β_Cl_Treatment_T 0.0953 0.0342 35.87   1.1 1.0398 1.1636  98.2         25

============================================================
 Clinical relevance (β outside equivalence bounds)
 Target power: 90% | Current sample size N = 40 | Equivalence IC (90%) on ratio: [0.80, 1.25]
============================================================

  (none)

Design optimization

Both optimization algorithms share the same model, error, covariates, and covariate equation as the evaluation step. Only the arm definition and the optimizer-specific parameters differ between the two approaches. The goal is to reduce the design to 3 sampling times while maximising the D-criterion of the population FIM.

Multiplicative algorithm

The Multiplicative Algorithm operates over a discrete candidate set: at each iteration it reweights a probability distribution over elementary designs (one per candidate time point) and prunes those with negligible weight. It is well-suited when the candidate set is finite and moderate in size.

Define administration and sampling constraints

The dose is fixed at 30 mg. Three of the five candidate sampling times are left optimizable; no windows are imposed, so the algorithm selects freely among \(\{0.5, 2, 4, 6, 8\}\) h.

administrationConstraintsRespPK = AdministrationConstraints(
  outcome = "RespPK",
  doses   = list( 30 )
)

samplingConstraintsRespPK = SamplingTimeConstraints(
  outcome                      = "RespPK",
  initialSamplings             = c( 0.5, 2, 4, 6, 8 ),
  numberOfsamplingsOptimisable = 3
)

Create the constraint arm and the associated design

The arm carries both administrationsConstraints and samplingTimesConstraints. The full set of candidate times is used as the initial sampling grid.

armMult = Arm( name = "armOpt",
               size = 40,
               administrations            = list( administrationRespPK ),
               samplingTimes              = list( samplingTimesRespPK ),
               administrationsConstraints = list( administrationConstraintsRespPK ),
               samplingTimesConstraints   = list( samplingConstraintsRespPK ) )

designMult = Design( name = "design1", arms = list( armMult ) )

Set the parameters of the Multiplicative algorithm

optimizationMult = Optimization(
  name                    = "Multiplicative",
  modelEquations          = modelEquations,
  modelParameters         = modelParameters,
  modelCovariates         = list( treatment, sex ),
  modelCovariatesEquation = "exponential",
  numberOfOccasions       = 2,
  modelError              = modelError,
  optimizer               = "MultiplicativeAlgorithm",
  optimizerParameters     = list( lambda             = 0.99,
                                  numberOfIterations = 1000,
                                  weightThreshold    = 0.01,
                                  delta              = 1e-04,
                                  showProcess        = TRUE ),
  designs                 = list( designMult ),
  fimType                 = "population",
  outputs                 = list( "RespPK" = "RespPK" )
)

Run the Multiplicative algorithm for the optimization with a population FIM

optimizationMultPopFIM = run( optimizationMult )

Display and plot Multiplicative algorithm results

show( optimizationMultPopFIM )
--- Optimal design ---

  Arms name Number of subjects Outcome Dose Sampling times
1      Arm2                 40  RespPK   30    (0.5, 2, 6)

*************************************** 
  Population Fisher Matrix 
*************************************** 

                       μ_ka         μ_V       μ_Cl  β_V_Sex_F β_Cl_Treatment_T        ω²_ka         ω²_V        ω²_Cl        γ²_ka         γ²_V        γ²_Cl σ_inter_RespPK
μ_ka             329.525019 -14.8691159  3.6912288 -22.229595         3.834115    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
μ_V              -14.869116  28.6258030  0.9910258  51.227048         1.140631    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
μ_Cl               3.691229   0.9910258 97.7403300   1.572171        97.536153    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
β_V_Sex_F        -22.229595  51.2270485  1.5721714 179.294670         1.950838    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
β_Cl_Treatment_T   3.834115   1.1406306 97.5361532   1.950838       921.108493    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
ω²_ka              0.000000   0.0000000  0.0000000   0.000000         0.000000 1357.8361091   34.5732189    0.6847072 6.813632e+02 2.154327e+01 3.442112e-01      471.21810
ω²_V               0.000000   0.0000000  0.0000000   0.000000         0.000000   34.5732189 1537.8685240    0.6068128 1.953730e+01 7.728726e+02 3.116263e-01      318.44875
ω²_Cl              0.000000   0.0000000  0.0000000   0.000000         0.000000    0.6847072    0.6068128 1910.6360130 3.574753e-01 3.591748e-01 9.553226e+02       37.92596
γ²_ka              0.000000   0.0000000  0.0000000   0.000000         0.000000  681.3632370   19.5373025    0.3574753 1.110686e+04 5.046391e+03 7.411171e+01     2362.92816
γ²_V               0.000000   0.0000000  0.0000000   0.000000         0.000000   21.5432660  772.8726445    0.3591748 5.046391e+03 1.814370e+04 1.153055e+02     1743.34778
γ²_Cl              0.000000   0.0000000  0.0000000   0.000000         0.000000    0.3442112    0.3116263  955.3226353 7.411171e+01 1.153055e+02 3.441060e+04     1139.56787
σ_inter_RespPK     0.000000   0.0000000  0.0000000   0.000000         0.000000  471.2181022  318.4487533   37.9259602 2.362928e+03 1.743348e+03 1.139568e+03     5510.31205

*************************************** 
  Fixed effects (μ) 
*************************************** 

                       μ_ka         μ_V       μ_Cl  β_V_Sex_F β_Cl_Treatment_T
μ_ka             329.525019 -14.8691159  3.6912288 -22.229595         3.834115
μ_V              -14.869116  28.6258030  0.9910258  51.227048         1.140631
μ_Cl               3.691229   0.9910258 97.7403300   1.572171        97.536153
β_V_Sex_F        -22.229595  51.2270485  1.5721714 179.294670         1.950838
β_Cl_Treatment_T   3.834115   1.1406306 97.5361532   1.950838       921.108493

*************************************** 
  Variance components (ω², γ², σ) 
*************************************** 

                      ω²_ka         ω²_V        ω²_Cl        γ²_ka         γ²_V        γ²_Cl σ_inter_RespPK
ω²_ka          1357.8361091   34.5732189    0.6847072 6.813632e+02 2.154327e+01 3.442112e-01      471.21810
ω²_V             34.5732189 1537.8685240    0.6068128 1.953730e+01 7.728726e+02 3.116263e-01      318.44875
ω²_Cl             0.6847072    0.6068128 1910.6360130 3.574753e-01 3.591748e-01 9.553226e+02       37.92596
γ²_ka           681.3632370   19.5373025    0.3574753 1.110686e+04 5.046391e+03 7.411171e+01     2362.92816
γ²_V             21.5432660  772.8726445    0.3591748 5.046391e+03 1.814370e+04 1.153055e+02     1743.34778
γ²_Cl             0.3442112    0.3116263  955.3226353 7.411171e+01 1.153055e+02 3.441060e+04     1139.56787
σ_inter_RespPK  471.2181022  318.4487533   37.9259602 2.362928e+03 1.743348e+03 1.139568e+03     5510.31205

********************************************* 
  Determinant, condition numbers and D-criterion 
 *********************************************** 

Determinant: 6.99616e+36 
D-criterion: 1175.994 
Condition number (fixed effects): 73.62066 
Condition number (variance components): 27.12185 

*************************************** 
  Parameters estimation 
*************************************** 

Parameter                 Value           SE     RSE(%)
μ_ka                1.00000000  0.055779755   5.577975
μ_V                 3.50000000  0.269550251   7.701436
μ_Cl                2.00000000  0.107001337   5.350067
β_V_Sex_F           0.18232156  0.106866965  58.614553
β_Cl_Treatment_T     0.09531018  0.034841408  36.555810
ω²_ka              0.09000000  0.027873726  30.970807
ω²_V               0.09000000  0.025956084  28.840093
ω²_Cl              0.09000000  0.023038148  25.597942
γ²_ka              0.02250000  0.010667716  47.412069
γ²_V               0.02250000  0.008076677  35.896343
γ²_Cl              0.02250000  0.005448899  24.217327
σ_inter_RespPK      0.10000000  0.014423557  14.423557


*************************************** 
 Legend: 
 μ  = fixed effects (population means)
 β  = covariate effects
 ω² = inter-individual variability (IIV)
 γ² = inter-occasion variability (IOV)
 σ  = residual error SD
*************************************** 

[1] 1175.994
plotMult_SE = PFIM::plotSE(optimizationMultPopFIM)

plotMult_RSE = PFIM::plotRSE(optimizationMultPopFIM)

Create and save the report for the design optimization

outputFile = "vignette3_optimization_Mult_populationFIM_report.html"
Report( optimizationMultPopFIM, paths$reports,outputFile, plotOptions)

Simplex algorithm

The Simplex (Nelder-Mead) algorithm is a derivative-free local optimizer that searches over a continuous design space. It is more flexible than the Multiplicative algorithm but sensitive to the starting point and may converge to a local optimum.

Define sampling constraints

Three sampling times are optimized continuously within \([0, 8]\) h, with a minimum spacing of 0.5 h between consecutive samples (minSampling). The initial design \(\{0.5, 4, 8\}\) h seeds the starting simplex.

samplingTimesRespPK_simplex = SamplingTimes( outcome = "RespPK", samplings = c( 0.5, 4, 8 ) )

samplingConstraintsRespPK_simplex = SamplingTimeConstraints(
  outcome                = "RespPK",
  initialSamplings       = c( 0.5, 4, 8 ),
  samplingsWindows       = list( c(0, 8) ),
  numberOfTimesByWindows = c(3),
  minSampling            = c(0.5)
)

Create the constraint arm and the associated design

No administration constraints are needed here since the dose is fixed. The arm uses the Simplex-specific initial samplings and constraints.

armSimplex = Arm( name = "armOpt",
                  size = 40,
                  administrations          = list( administrationRespPK ),
                  samplingTimes            = list( samplingTimesRespPK_simplex ),
                  samplingTimesConstraints = list( samplingConstraintsRespPK_simplex ) )

designSimplex = Design( name = "design1", arms = list( armSimplex ) )

Set the parameters of the Simplex algorithm

optimizationSimplex = Optimization(
  name                    = "Simplex",
  modelEquations          = modelEquations,
  modelParameters         = modelParameters,
  modelCovariates         = list( treatment, sex ),
  modelCovariatesEquation = "exponential",
  modelError              = modelError,
  optimizer               = "SimplexAlgorithm",
  optimizerParameters     = list( pctInitialSimplexBuilding = 20,
                                  maxIteration              = 200,
                                  tolerance                 = 1e-6,
                                  showProcess               = TRUE ),
  designs                 = list( designSimplex ),
  fimType                 = "population",
  outputs                 = list( "RespPK" = "RespPK" )
)

Run the Simplex algorithm for the optimization with a population FIM

optimizationSimplexPopFIM = run( optimizationSimplex )

Display and plot Simplex results

show( optimizationSimplexPopFIM )
--- Optimal design ---

  Arms name Number of subjects Outcome Dose     Sampling times
1    armOpt                 40  RespPK   30 (0.44, 2.12, 5.86)

*************************************** 
  Population Fisher Matrix 
*************************************** 

                       μ_ka         μ_V       μ_Cl  β_V_Sex_F β_Cl_Treatment_T        ω²_ka         ω²_V        ω²_Cl        γ²_ka         γ²_V        γ²_Cl σ_inter_RespPK
μ_ka             330.439745 -14.7495376  3.8038395 -21.980586        3.5060207    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
μ_V              -14.749538  28.6089272  0.9876018  51.204431        0.9983358    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
μ_Cl               3.803840   0.9876018 97.8118620   1.614347       97.6747350    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
β_V_Sex_F        -21.980586  51.2044310  1.6143474 179.215508        1.7737472    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
β_Cl_Treatment_T   3.506021   0.9983358 97.6747350   1.773747      926.7816150    0.0000000    0.0000000    0.0000000 0.000000e+00 0.000000e+00 0.000000e+00        0.00000
ω²_ka              0.000000   0.0000000  0.0000000   0.000000        0.0000000 1365.3935336   34.0460374    0.7245992 6.851897e+02 2.128161e+01 3.663988e-01      466.02497
ω²_V               0.000000   0.0000000  0.0000000   0.000000        0.0000000   34.0460374 1536.0663676    0.6000035 1.933685e+01 7.720054e+02 3.020143e-01      321.07135
ω²_Cl              0.000000   0.0000000  0.0000000   0.000000        0.0000000    0.7245992    0.6000035 1913.4339006 3.743861e-01 3.421471e-01 9.567191e+02       35.06315
γ²_ka              0.000000   0.0000000  0.0000000   0.000000        0.0000000  685.1897079   19.3368484    0.3743861 1.124511e+04 4.986075e+03 8.824822e+01     2378.03245
γ²_V               0.000000   0.0000000  0.0000000   0.000000        0.0000000   21.2816084  772.0053609    0.3421471 4.986075e+03 1.789745e+04 1.079444e+02     1802.97824
γ²_Cl              0.000000   0.0000000  0.0000000   0.000000        0.0000000    0.3663988    0.3020143  956.7190716 8.824822e+01 1.079444e+02 3.486307e+04     1041.15299
σ_inter_RespPK     0.000000   0.0000000  0.0000000   0.000000        0.0000000  466.0249713  321.0713506   35.0631508 2.378032e+03 1.802978e+03 1.041153e+03     5472.27695

*************************************** 
  Fixed effects (μ) 
*************************************** 

                       μ_ka         μ_V       μ_Cl  β_V_Sex_F β_Cl_Treatment_T
μ_ka             330.439745 -14.7495376  3.8038395 -21.980586        3.5060207
μ_V              -14.749538  28.6089272  0.9876018  51.204431        0.9983358
μ_Cl               3.803840   0.9876018 97.8118620   1.614347       97.6747350
β_V_Sex_F        -21.980586  51.2044310  1.6143474 179.215508        1.7737472
β_Cl_Treatment_T   3.506021   0.9983358 97.6747350   1.773747      926.7816150

*************************************** 
  Variance components (ω², γ², σ) 
*************************************** 

                      ω²_ka         ω²_V        ω²_Cl        γ²_ka         γ²_V        γ²_Cl σ_inter_RespPK
ω²_ka          1365.3935336   34.0460374    0.7245992 6.851897e+02 2.128161e+01 3.663988e-01      466.02497
ω²_V             34.0460374 1536.0663676    0.6000035 1.933685e+01 7.720054e+02 3.020143e-01      321.07135
ω²_Cl             0.7245992    0.6000035 1913.4339006 3.743861e-01 3.421471e-01 9.567191e+02       35.06315
γ²_ka           685.1897079   19.3368484    0.3743861 1.124511e+04 4.986075e+03 8.824822e+01     2378.03245
γ²_V             21.2816084  772.0053609    0.3421471 4.986075e+03 1.789745e+04 1.079444e+02     1802.97824
γ²_Cl             0.3663988    0.3020143  956.7190716 8.824822e+01 1.079444e+02 3.486307e+04     1041.15299
σ_inter_RespPK  466.0249713  321.0713506   35.0631508 2.378032e+03 1.802978e+03 1.041153e+03     5472.27695

********************************************* 
  Determinant, condition numbers and D-criterion 
 *********************************************** 

Determinant: 7.158466e+36 
D-criterion: 1178.243 
Condition number (fixed effects): 74.1044 
Condition number (variance components): 27.29803 

*************************************** 
  Parameters estimation 
*************************************** 

Parameter                 Value           SE     RSE(%)
μ_ka                1.00000000  0.055691378   5.569138
μ_V                 3.50000000  0.269619463   7.703413
μ_Cl                2.00000000  0.106939190   5.346960
β_V_Sex_F           0.18232156  0.106899271  58.632272
β_Cl_Treatment_T     0.09531018  0.034726340  36.435079
ω²_ka              0.09000000  0.027786365  30.873739
ω²_V               0.09000000  0.025974156  28.860173
ω²_Cl              0.09000000  0.023019434  25.577148
γ²_ka              0.02250000  0.010580034  47.022372
γ²_V               0.02250000  0.008124777  36.110122
γ²_Cl              0.02250000  0.005409441  24.041960
σ_inter_RespPK      0.10000000  0.014478141  14.478141


*************************************** 
 Legend: 
 μ  = fixed effects (population means)
 β  = covariate effects
 ω² = inter-individual variability (IIV)
 γ² = inter-occasion variability (IOV)
 σ  = residual error SD
*************************************** 

[1] 1178.243
plotSimplex_SE = PFIM::plotSE(optimizationSimplexPopFIM)

plotSimplex_RSE = PFIM::plotRSE(optimizationSimplexPopFIM)

Create and save the report for the design optimization

outputFile = "vignette3_optimization_Simplex_populationFIM_report.html"
Report( optimizationSimplexPopFIM, paths$reports, outputFile, plotOptions)

Covariate tests on Simplex optimal design

optimisationDesign = prop( optimizationSimplexPopFIM, "optimisationDesign" )
evaluationOptimalDesign = optimisationDesign$evaluationOptimalDesign

optimalTests = covariateTest( evaluationOptimalDesign )

show( optimalTests )
============================================================
 Statistical significance (β, bilateral Wald test)
 Target power: 90% | Current sample size N = 40
============================================================

        Parameter  Value     SE   RSE Power N_Required
        β_V_Sex_F 0.1823 0.1069 58.63  40.0        145
 β_Cl_Treatment_T 0.0953 0.0347 36.44  78.4         56

============================================================
 Clinical non-relevance (TOST on β)
 Target power: 90% | Current sample size N = 40 | Equivalence IC (90%) on ratio: [0.80, 1.25]
============================================================

        Parameter  Value     SE   RSE Ratio IC_Inf IC_Sup Power N_Required
        β_V_Sex_F 0.1823 0.1069 58.63   1.2 1.0065 1.4307   8.7       2350
 β_Cl_Treatment_T 0.0953 0.0347 36.44   1.1 1.0389 1.1647  97.9         26

============================================================
 Clinical relevance (β outside equivalence bounds)
 Target power: 90% | Current sample size N = 40 | Equivalence IC (90%) on ratio: [0.80, 1.25]
============================================================

  (none)

Using 3-point optimal design leads to only a slight loss of power, with N = 145 subjects required to achieve 90% power on the significance of the sex effect on V, instead of N = 141 on 5-point initial design. It also requires N = 26 subjects to assess clinical non-relevance of the treatment on Cl with 90% power, instead of N = 25 on 5-point initial design.