From b27542321f8ddd00f8654dd323c478c0ae089df1 Mon Sep 17 00:00:00 2001 From: andrewhooker Date: Thu, 16 Nov 2023 16:03:10 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20andrewho?= =?UTF-8?q?oker/PopED@c558ce3f41aa05fa354db39b55177572c263b4e7=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- articles/examples.html | 54 +- articles/handling_LOQ.html | 243 ++++-- .../figure-html/unnamed-chunk-15-1.png | Bin 70230 -> 68619 bytes articles/intro-poped.html | 6 +- pkgdown.yml | 2 +- reference/Doptim.html | 2 +- reference/Dtrace.html | 2 +- reference/LEDoptim.html | 2 +- reference/LinMatrixL.html | 2 +- reference/LinMatrixLH.html | 2 +- reference/LinMatrixL_occ.html | 2 +- reference/RS_opt.html | 4 +- reference/a_line_search.html | 44 +- reference/bfgsb_min.html | 2 +- reference/blockexp.html | 2 +- reference/blockfinal.html | 4 +- reference/blockheader.html | 2 +- reference/blockopt.html | 2 +- reference/build_sfg.html | 4 +- reference/calc_autofocus.html | 2 +- reference/calc_ofv_and_fim.html | 2 +- reference/calc_ofv_and_grad.html | 2 +- reference/create.poped.database.html | 2 +- reference/ed_laplace_ofv.html | 2 +- reference/ed_mftot.html | 4 +- reference/evaluate.e.ofv.fim.html | 8 +- reference/evaluate.fim.html | 2 +- reference/evaluate_design.html | 2 +- reference/evaluate_fim_map.html | 2 +- reference/feps.add.html | 2 +- reference/feps.add.prop.html | 2 +- reference/feps.prop.html | 2 +- reference/ff.PK.1.comp.oral.md.CL.html | 2 +- reference/ff.PK.1.comp.oral.md.KE.html | 2 +- reference/ff.PK.1.comp.oral.sd.CL.html | 2 +- reference/ff.PK.1.comp.oral.sd.KE.html | 2 +- reference/ff.PKPD.1.comp.oral.md.CL.imax.html | 4 +- reference/ff.PKPD.1.comp.sd.CL.emax.html | 2 +- reference/getTruncatedNormal.html | 2 +- reference/get_all_params.html | 2 +- reference/get_rse.html | 2 +- reference/gradf_eps.html | 2 +- reference/mfea.html | 4 +- reference/mftot.html | 2 +- reference/model_prediction.html | 208 ++--- reference/ofv_criterion.html | 2 +- reference/ofv_fim.html | 2 +- reference/optim_ARS.html | 824 +++++++++--------- reference/optim_LS.html | 94 +- reference/pargen.html | 2 +- reference/plot_efficiency_of_windows-1.png | Bin 349879 -> 345664 bytes reference/plot_efficiency_of_windows.html | 2 +- reference/plot_model_prediction.html | 2 +- reference/poped_optim.html | 62 +- reference/poped_optimize.html | 38 +- reference/rand.html | 18 +- reference/randn.html | 18 +- reference/shrinkage.html | 2 +- reference/summary.poped_optim.html | 20 +- reference/tic.html | 4 +- reference/toc.html | 4 +- search.json | 2 +- 62 files changed, 923 insertions(+), 824 deletions(-) diff --git a/articles/examples.html b/articles/examples.html index acee157..e683b8e 100644 --- a/articles/examples.html +++ b/articles/examples.html @@ -786,9 +786,9 @@

ODE solution of PK model, mult of describing the same model.

 tic(); eval <- evaluate_design(poped.db); toc()
-#> Elapsed time: 2.759 seconds.
+#> Elapsed time: 2.855 seconds.
 tic(); eval <- evaluate_design(poped.db.Rcpp); toc()
-#> Elapsed time: 1.318 seconds.
+#> Elapsed time: 1.359 seconds.

The difference is noticeable and gets larger for more complex ODE models.

@@ -1129,7 +1129,7 @@

Model with continuous covariates
 ev <- evaluate_design(poped_db_2) 
 round(ev$ofv,1)
-#> [1] 42.3
+#> [1] 42.6
 round(ev$rse)
@@ -1148,11 +1148,11 @@

Model with continuous covariates

- + - + @@ -1214,51 +1214,51 @@

Model with continuous covariates0%

- - + + - + - - + + - + - - - - + + + + - - - - + + + + - - - - + + + + - - + +
WT_CL2826
WT_V2220
d_CL3.25 3.3222.5817.3220.8416.06 21.0221.9521.94 10.06
25% 3.25 3.3227.1020.7627.4321.03 21.03 21.9510.0710.06
50%3.263.3329.0622.273.273.3429.2122.38 21.03 21.96 10.07
75%3.323.3931.4524.103.313.3832.9125.22 21.03 21.96 10.07
100%3.433.5040.5331.053.693.7741.2331.59 21.0321.9610.0721.9710.08
@@ -1935,7 +1935,7 @@

#> 5.030673 2.983917 14.014958 29.787587 36.758952 26.753311 31.645011 #> SIGMA[2,2] #> 25.341368 -#> Elapsed time: 0.142 seconds. +#> Elapsed time: 0.141 seconds.

We can see that the result, based on MC sampling, is somewhat variable with so few samples.

@@ -1968,7 +1968,7 @@ 

#> 5.021700 2.980981 14.068646 29.765030 36.691675 26.754137 31.469425 #> SIGMA[2,2] #> 25.311870 -#> Elapsed time: 0.135 seconds.

+#> Elapsed time: 0.131 seconds.

Design evaluation for a subset of model parameters of interest (Ds diff --git a/articles/handling_LOQ.html b/articles/handling_LOQ.html index c725e53..41f73d7 100644 --- a/articles/handling_LOQ.html +++ b/articles/handling_LOQ.html @@ -103,16 +103,16 @@

Andrew -
-library(PopED)
-packageVersion("PopED")
-#> [1] '0.6.0.9002'

Define a model

Here we define, as an example, a one-compartment pharmacokinetic model with linear absorption (analytic solution) in PopED (Nyberg et al. 2012).

+
+library(PopED)
+packageVersion("PopED")
+#> [1] '0.6.0.9002'
 ff <- function(model_switch,xt,parameters,poped.db){
   with(as.list(parameters),{
@@ -138,10 +138,9 @@ 

Define a modelDefine an initial design and design space

Now we define the model parameter values, the initial design and -design space for optimization.

-

We define model parameters similar to the Warfarin example from the -software comparison in Nyberg et al. (2015) and an -arbitrary design of two groups of 20 individuals.

+design space for optimization. We define model parameters similar to the +Warfarin example from the software comparison in Nyberg et al. (2015) and an arbitrary design of one +group of 32 individuals.

 poped_db <- 
   create.poped.database(
@@ -164,9 +163,9 @@ 

Define an initial design and

Simulation

-

First it may make sense to check your model and design to make sure -you get what you expect when simulating data. Here we plot the model -typical values for the two groups:

+

First it may make sense to check the model and design to make sure we +get what we expect when simulating data. Here we plot the model typical +value and a 95% prediction interval (PI) for the intial design:

 plot_model_prediction(poped_db, model_num_points = 500,facet_scales = "free",PI=T)

@@ -177,12 +176,87 @@

Design evaluation
 eval_full <- evaluate_design(poped_db)
-round(eval_full$rse)
-#>       CL        V       KA     d_CL      d_V     d_KA sig_prop  sig_add 
-#>        5        4       15       34       70       28       89       36

+round(eval_full$rse)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +RSE +
+CL + +5 +
+V + +4 +
+KA + +15 +
+d_CL + +34 +
+d_V + +70 +
+d_KA + +28 +
+sig_prop + +89 +
+sig_add + +36 +

We see that the relative standard error of the parameters (in percent) are relatively well estimated with this initial design except -for the proportional RUV parameter (sig_prop).

+for the between subject variability parameter for volume of distribution +(d_V) and the proportional RUV parameter +(sig_prop).

LOQ handling @@ -194,25 +268,37 @@

LOQ handlingplot_model_prediction(poped_db, model_num_points = 500,facet_scales = "free",PI=T) + geom_hline(yintercept = 2,color="red",linetype="dotted",linewidth=1)

-

We use optimization criteria based on the D6 -(loq_method=1 which is the default) and D2 -(loq_method=2) methods from Vong et -al. (2012). For -the D6 method, which has been shown to be a better method in comparison -to SSE studies, we have updated the method to only investigate points -where the 95% PI overlaps LOQ, otherwise we set the design point to -either no information or full information. Further we filter out -situations with very low probabilities -(loq_prob_limit = 0.001). Both the CI% and the low -probability limit can be specified in the calculation (default values -are loq_PI_conf_level = 0.95 and -loq_prob_limit = 0.001). In this way we can get the D6 -method to compute in reasonable time-frames even for larger number of -design samples.

-

Here we can evaluate the design with both methods and test the speed -of computation. We see that D6 is significantly slower than D2 (but D6 -should be a more accurate representation of the RSE expected using M3 -estimation methods).

+

To evaluate the designs we use the design evaluation criteria based +on the “integration and FIM scaling” method (loq_method=1 +which is the default) and the “omit observations where PRED<LOQ” +method (loq_method=2) from Vong et +al. (2012) +(referred to as the D6 and D2 methods, respectively, in the presentation +by Vong et al.). In the D6 method we:

+
    +
  1. Enumerate all permutations of each sample point being +quantifiable or not (below the lower LOQ, or above the upper LOQ). If +sample points have an expected prediction interval (default is 95%, +loq_PI_conf_level = 0.95) that does not overlap the LOQ +then the design point is assumed to either always be observed or to +always be outside the limit of quantification.

  2. +
  3. Compute the probability of each permutation occurring, filtering +out potential realized designs with very low probabilities (default is +loq_prob_limit = 0.001).

  4. +
  5. Evalaute the Fisher Information Matrix (FIM) for all remaining +design permutations, assuming no information from any design point if, +for that permutation, it is not in within the limits of +quantification.

  6. +
  7. Take the weighted sum of the resulting information +matrices.

  8. +
+

The D2 method is a simplification of this process where all samples +with a typical value prediction (PRED) below the lower LOQ or above +upper LOQ are removed from the design before calculating the FIM.

+

Here we evaluate the initial design with both methods and test the +speed of the computations. We see that D6 is significantly slower than +D2 (but D6 should be a more accurate representation of the RSE expected +using M3 estimation methods).

 set.seed(1234)
 e_time_D6 <- system.time(
@@ -223,11 +309,12 @@ 

LOQ handlingeval_D2 <- evaluate_design(poped_db,loq=2, loq_method=2) ) -cat("D6 evaluation time: ",e_time_D6[1],"\n" ) -cat("D2 evaluation time: ",e_time_D2[1],"\n" ) -#> D6 evaluation time: 0.047 -#> D2 evaluation time: 0.007

-

The D2 nmethod is the same as removing the last data point

+cat("D6 evaluation time: ",e_time_D6[1],"seconds \n" ) +cat("D2 evaluation time: ",e_time_D2[1],"deconds \n" ) +#> D6 evaluation time: 0.047 seconds +#> D2 evaluation time: 0.007 deconds
+

The D2 method is the same as removing the last design point, as you +can se below.

 poped_db_2 <- create.poped.database(
     ff_fun=ff,
@@ -247,12 +334,17 @@ 

LOQ handlingeval_red <- evaluate_design(poped_db_2) testthat::expect_equal(eval_red$ofv,eval_D2$ofv) testthat::expect_equal(eval_red$rse,eval_D2$rse)

-

Predicted parameter uncertainty for the three methods is shown in the -table below (as relative standard error, RSE, in percent). We see that -the uncertainty is generally higher with the LOQ evaluations (as -expected). We also see that because the D2 method ignores data that is -below LOQ (the last observation in the design), then the predictions of -uncertainty are significantly larger.

+

The predicted parameter uncertainty for the three methods is shown in +the table below (as relative standard error, RSE, in percent). We see +that the uncertainty is generally higher with the LOQ evaluations (as +expected). We also see that the predictions of uncertainty are +significantly larger than the D6 method. This too is expected, because +the D2 method ignores design points where the model PRED is below LOQ +(the last observation in the design), whereas it appears from the +previous figure that ~25% of the observations from the last design point +will be above LOQ. The M6 method accounts for this probability that the +last design point will have data above LOQ and is thus a more realistic +assessment of the expected parameter uncertainty.

@@ -396,6 +488,7 @@

ULOQ handlinggeom_hline(yintercept = 2,color="red",linetype="dotted",linewidth=1) + geom_hline(yintercept = 7,color="blue",linetype="dotted",linewidth=1)

+

We can then evaluate the design based on the D2 and D6 methods.

 eval_ul_D6 <-evaluate_design(poped_db,
                 loq=2,
@@ -407,11 +500,17 @@ 

ULOQ handling=7, uloq_method=2) #> Problems inverting the matrix. Results could be misleading.

+

And then look at the predicted RSE in percent.

+
+eval_rse_2 <-
+  tibble::tibble("Parameter"=names(eval_full$rse),
+                 "No LOQ"=round(eval_full$rse),
+                 "D6 (only LLOQ)"=round(eval_D6$rse),
+                 "D2 (only LLOQ)"=round(eval_D2$rse),
+                 "D6 (ULOQ and LLOQ)"=round(eval_ul_D6$rse),
+                 "D2 (ULOQ and LLOQ)"=round(eval_ul_D2$rse))
+eval_rse_2
-
-RSE (in %) for the initial design using different methods of handling -LOQ and ULOQ. -
Parameter @@ -600,9 +699,9 @@

ULOQ handling

Design optimization

-

We can then optimize the design using the different methods of -computing the FIM. Here we optimize only using lower LOQ.

-
+

Next, we optimize the design using the different methods of computing +the FIM. Here we optimize only using the lower LOQ.

+
 optim_D6 <- poped_optim(poped_db, opt_xt = TRUE,
                         parallel=T,
                         loq=2)
@@ -614,20 +713,16 @@ 

Design optimizationoptim_full <- poped_optim(poped_db, opt_xt = TRUE, parallel=T)

-All designs together in one plot show how the different handling of BLQ -data results in different optimal designs. -
-Design points for the apraoch ignoring LOQ, using the D2 method, and using the D6 method

-Design points for the apraoch ignoring LOQ, using the D2 method, and -using the D6 method -

-
-

Predictions using the D6 method from each of the optimizations shows -the expected %RSE of the parameters if each design is used and the LOQ -is at 2 concentration units. We see that D2 may be a reasonable strategy -to optimize designs that are “good enough” if the D6 method is too slow -for optimization.

-
+

All designs points shown together in one plot to demonstrate how the +different handling of BLQ data results in different optimal designs. The +“full” design, ignoring LOQ, places a design point at the end of the +sampling space, which will results in many observations below LOQ. Both +the D2 and D6 methods push the design points to regions where fewer LOQ +observations will occur.

+

To compare the effects of these different designs on parameter +precision, we evaluate each of the optimal designs above using the D6 +method.

+
 optim_full_D6<- with(optim_full, 
   evaluate_design(poped.db,
                   loq=2))
@@ -639,10 +734,18 @@ 

Design optimizationoptim_D6_D6<- with(optim_D6, evaluate_design(poped.db, loq=2))

+

The expected %RSE of the parameters is shown below. We see that the +D6 optimized design gives, on average, the best parameter precision. The +D2 optimal design stragetgy may be a reasonable obtain designs that are +“good enough” if the D6 method is too slow for optimization.

+
+optim_rse_D6 <-
+  tibble::tibble("Parameter"=names(eval_full$rse),
+                 "No LOQ"=round(optim_full_D6$rse),
+                 "D6"=round(optim_D6_D6$rse),
+                 "D2"=round(optim_D2_D6$rse))
+optim_rse_D6
-
-RSE (in %) for the optimized designs evaluated using the D6 method. -
Parameter @@ -802,7 +905,7 @@

References

Version information

-
+
 sessionInfo()
 #> R version 4.3.2 (2023-10-31)
 #> Platform: x86_64-pc-linux-gnu (64-bit)
diff --git a/articles/handling_LOQ_files/figure-html/unnamed-chunk-15-1.png b/articles/handling_LOQ_files/figure-html/unnamed-chunk-15-1.png
index d651cefcd30c7031a08833316328b01d22f30c58..045cdac3bdbb70d5147d7c1a2a86abae1da3ae0c 100644
GIT binary patch
delta 19521
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 optimization#>         d_CL   0.0625      28    26
 #>     sig_prop     0.04      14    15
 #> 
-#> Total running time: 17.17 seconds
+#> Total running time: 17.252 seconds
 plot_model_prediction(output$poped.db)

We see that there are four distinct sample times for this design. @@ -518,7 +518,7 @@

Optimize over a discrete design s #> d_CL 0.0625 28 27 #> sig_prop 0.04 14 15 #> -#> Total running time: 10.479 seconds +#> Total running time: 10.495 seconds plot_model_prediction(output_discrete$poped.db, model_num_points = 300)

Here we see that the optimization ran somewhat quicker, but gave a @@ -583,7 +583,7 @@

Cost function to optimize dose#> d_CL 0.0625 28 28 #> sig_prop 0.04 14 14 #> -#> Total running time: 3.866 seconds +#> Total running time: 3.904 seconds

We see that the optimal doses are 31.6 and 55.2 for the two groups. This leads to population trough concentrations of 0.2 and 0.35 for the two groups of patients at 240 hours:

diff --git a/pkgdown.yml b/pkgdown.yml index c98124c..ae8d248 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -6,7 +6,7 @@ articles: model_def_other_pkgs: model_def_other_pkgs.html examples: examples.html intro-poped: intro-poped.html -last_built: 2023-11-16T13:23Z +last_built: 2023-11-16T16:00Z urls: reference: https://andrewhooker.github.io/PopED/reference article: https://andrewhooker.github.io/PopED/articles diff --git a/reference/Doptim.html b/reference/Doptim.html index fd847d0..441fb42 100644 --- a/reference/Doptim.html +++ b/reference/Doptim.html @@ -352,7 +352,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/Dtrace.html b/reference/Dtrace.html index 00edd90..64ea047 100644 --- a/reference/Dtrace.html +++ b/reference/Dtrace.html @@ -215,7 +215,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/LEDoptim.html b/reference/LEDoptim.html index 806448a..bf9e2a4 100644 --- a/reference/LEDoptim.html +++ b/reference/LEDoptim.html @@ -289,7 +289,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/LinMatrixL.html b/reference/LinMatrixL.html index d53557b..21a9ed7 100644 --- a/reference/LinMatrixL.html +++ b/reference/LinMatrixL.html @@ -152,7 +152,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/LinMatrixLH.html b/reference/LinMatrixLH.html index b9ee760..69bcc5b 100644 --- a/reference/LinMatrixLH.html +++ b/reference/LinMatrixLH.html @@ -179,7 +179,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/LinMatrixL_occ.html b/reference/LinMatrixL_occ.html index 1041faf..f12d506 100644 --- a/reference/LinMatrixL_occ.html +++ b/reference/LinMatrixL_occ.html @@ -176,7 +176,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/RS_opt.html b/reference/RS_opt.html index 87b44ba..93e5f10 100644 --- a/reference/RS_opt.html +++ b/reference/RS_opt.html @@ -346,7 +346,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function @@ -466,7 +466,7 @@

Examples#> SIGMA[1,1] 0.01 33 33 #> SIGMA[2,2] 0.25 26 26 #> -#> Total running time: 0.036 seconds +#> Total running time: 0.039 seconds if (FALSE) { diff --git a/reference/a_line_search.html b/reference/a_line_search.html index 6d9bdd1..ffa0106 100644 --- a/reference/a_line_search.html +++ b/reference/a_line_search.html @@ -215,7 +215,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function @@ -256,7 +256,6 @@

Examples#> ***************************** #> Line Search #> -#> Searching xt8 on group 1 #> Searching xt6 on group 1 #> group 1 -- xt[6] changed from 36 to 0.01 #> OFV(MF) changed from 55.3964 to 55.7162 @@ -264,42 +263,43 @@

Examples#> OFV(MF) changed from 55.7162 to 55.7556 #> group 1 -- xt[6] changed from 90.0025 to 120 #> OFV(MF) changed from 55.7556 to 55.7972 -#> Searching xt5 on group 1 -#> Searching xt3 on group 1 -#> Searching xt4 on group 1 +#> Searching xt8 on group 1 #> Searching xt7 on group 1 #> group 1 -- xt[7] changed from 72 to 90.0025 #> OFV(MF) changed from 55.7972 to 55.8529 -#> Searching xt2 on group 1 -#> group 1 -- xt[2] changed from 1 to 0.01 -#> OFV(MF) changed from 55.8529 to 55.89 -#> group 1 -- xt[2] changed from 0.01 to 30.0075 -#> OFV(MF) changed from 55.89 to 55.9369 -#> group 1 -- xt[2] changed from 30.0075 to 90.0025 -#> OFV(MF) changed from 55.9369 to 55.9441 -#> group 1 -- xt[2] changed from 90.0025 to 120 -#> OFV(MF) changed from 55.9441 to 55.9617 +#> Searching xt5 on group 1 #> Searching xt1 on group 1 -#> OFV(MF): 55.9617 +#> group 1 -- xt[1] changed from 0.5 to 0.01 +#> OFV(MF) changed from 55.8529 to 55.8913 +#> group 1 -- xt[1] changed from 0.01 to 30.0075 +#> OFV(MF) changed from 55.8913 to 55.9353 +#> group 1 -- xt[1] changed from 30.0075 to 90.0025 +#> OFV(MF) changed from 55.9353 to 55.9487 +#> group 1 -- xt[1] changed from 90.0025 to 120 +#> OFV(MF) changed from 55.9487 to 55.9661 +#> Searching xt3 on group 1 +#> Searching xt4 on group 1 +#> Searching xt2 on group 1 +#> OFV(MF): 55.9661 #> -#> Best value for OFV(MF) = 55.9617 +#> Best value for OFV(MF) = 55.9661 #> #> Best value for xt: -#> Group 1: 0.5 2 6 24 90 120 120 120 +#> Group 1: 1 2 6 24 90 120 120 120 #> #> Searching a1 on individual/group 1 #> group 1 -- a[1] changed from 70 to 75.0025 -#> OFV(MF) changed from 55.9617 to 56.1549 +#> OFV(MF) changed from 55.9661 to 56.1502 #> group 1 -- a[1] changed from 75.0025 to 100 -#> OFV(MF) changed from 56.1549 to 56.7447 -#> OFV(MF): 56.7447 -#> Best value for OFV(MF) = 56.7447 +#> OFV(MF) changed from 56.1502 to 56.7067 +#> OFV(MF): 56.7067 +#> Best value for OFV(MF) = 56.7067 #> #> Best value for a: #> Group 1: 100 [0.01,100] #> #> -#> Line search run time: 0.314 seconds +#> Line search run time: 0.316 seconds #> *************************** #> diff --git a/reference/bfgsb_min.html b/reference/bfgsb_min.html index 7c1a7f9..eaaaa60 100644 --- a/reference/bfgsb_min.html +++ b/reference/bfgsb_min.html @@ -164,7 +164,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/blockexp.html b/reference/blockexp.html index d6d3b62..942154b 100644 --- a/reference/blockexp.html +++ b/reference/blockexp.html @@ -154,7 +154,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/blockfinal.html b/reference/blockfinal.html index e7d10bc..d02eecf 100644 --- a/reference/blockfinal.html +++ b/reference/blockfinal.html @@ -254,7 +254,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function @@ -332,7 +332,7 @@

Examples#> sig_prop 0.01 32 32 #> sig_add 0.25 26 26 #> -#> Total running time: 1.531 seconds +#> Total running time: 1.561 seconds diff --git a/reference/blockheader.html b/reference/blockheader.html index 33637d7..c90cbb5 100644 --- a/reference/blockheader.html +++ b/reference/blockheader.html @@ -240,7 +240,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/blockopt.html b/reference/blockopt.html index 140673f..827b755 100644 --- a/reference/blockopt.html +++ b/reference/blockopt.html @@ -125,7 +125,7 @@

Examples#> return(list(y = y, poped.db = poped.db)) #> }) #> } -#> <bytecode: 0x55eddf040570> +#> <bytecode: 0x5639cc3a7808> #> <environment: namespace:PopED> ## -- parameter definition function diff --git a/reference/build_sfg.html b/reference/build_sfg.html index 702f7cc..a50a9b3 100644 --- a/reference/build_sfg.html +++ b/reference/build_sfg.html @@ -121,7 +121,7 @@

Examples#> function (x, a, bpop, b, bocc) #> parameters = c(CL = bpop[1] * exp(b[1]), Favail = bpop[2], KA = bpop[3] * #> exp(b[2]), V = bpop[4] * exp(b[3]), DOSE = a[1], TAU = a[2]) -#> <environment: 0x55eddd17c190> +#> <environment: 0x5639ca53cbb0> etas <- c(Favail="exp",KA="exp",V="add",CL="exp") build_sfg(model="ff.PK.1.comp.oral.md.CL",etas = etas) @@ -129,7 +129,7 @@

Examples#> parameters = c(CL = bpop[1] * exp(b[1]), Favail = bpop[2] * exp(b[2]), #> KA = bpop[3] * exp(b[3]), V = bpop[4] + b[4], DOSE = a[1], #> TAU = a[2]) -#> <environment: 0x55eddd17c190> +#> <environment: 0x5639ca53cbb0>