From 675a733fa2acc08daabb9b8b571c7d658f281f73 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Tue, 26 May 2020 18:38:51 +0200 Subject: Use all cores per default, confint tolerance Also, use more intelligent starting values for the variance of the random effects for saemix. While this does not appear to speed up the convergence, it shows where this variance is greatly reduced by using mixed-effects models as opposed to the separate independent fits. --- docs/reference/saemix.html | 135 +++++++++++++++------------------------------ 1 file changed, 46 insertions(+), 89 deletions(-) (limited to 'docs/reference/saemix.html') diff --git a/docs/reference/saemix.html b/docs/reference/saemix.html index 1737a21c..d3eb216c 100644 --- a/docs/reference/saemix.html +++ b/docs/reference/saemix.html @@ -153,7 +153,7 @@ list of mkinfit objects that have been obtained by fitting the same model to a list of datasets.

-
saemix_model(object)
+    
saemix_model(object, cores = parallel::detectCores())
 
 saemix_data(object, ...)
@@ -164,6 +164,11 @@ a list of datasets.

object

An mmkin row object containing several fits of the same model to different datasets

+ + cores +

The number of cores to be used for multicore processing. +On Windows machines, cores > 1 is currently not supported.

+ ...

Further parameters passed to saemix::saemixData

@@ -174,21 +179,22 @@ a list of datasets.

An saemix::SaemixModel object.

An saemix::SaemixData object.

+

Details

+ +

Starting values for the fixed effects (population mean parameters, argument psi0 of +saemix::saemixModel() are the mean values of the parameters found using +mmkin. Starting variances of the random effects (argument omega.init) are the +variances of the deviations of the parameters from these mean values.

Examples

ds <- lapply(experimental_data_for_UBA_2019[6:10], function(x) subset(x$data[c("name", "time", "value")])) names(ds) <- paste("Dataset", 6:10) sfo_sfo <- mkinmod(parent = mkinsub("SFO", "A1"), - A1 = mkinsub("SFO"))
#> Successfully compiled differential equation model from auto-generated C code.
f_mmkin <- mmkin(list("SFO-SFO" = sfo_sfo), ds, quiet = TRUE, cores = 5) -# \dontrun{ -if (require(saemix)) { - m_saemix <- saemix_model(f_mmkin) - d_saemix <- saemix_data(f_mmkin) - saemix_options <- list(seed = 123456, save = FALSE, save.graphs = FALSE) - saemix(m_saemix, d_saemix, saemix_options) -}
#> Loading required package: saemix
#> Package saemix, version 3.1.9000 -#> please direct bugs, questions and feedback to emmanuelle.comets@inserm.fr
#> + A1 = mkinsub("SFO"))
#> Successfully compiled differential equation model from auto-generated C code.
# \dontrun{ +f_mmkin <- mmkin(list("SFO-SFO" = sfo_sfo), ds, quiet = TRUE) +library(saemix)
#> Package saemix, version 3.1.9000 +#> please direct bugs, questions and feedback to emmanuelle.comets@inserm.fr
m_saemix <- saemix_model(f_mmkin)
#> #> #> The following SaemixModel object was successfully created: #> @@ -224,12 +230,12 @@ a list of datasets.

#> out_values <- out_wide[out_index] #> } #> return(out_values) -#> }, mc.cores = 15) +#> }, mc.cores = cores) #> res <- unlist(res_list) #> return(res) #> } -#> <bytecode: 0x555559875398> -#> <environment: 0x55555973a248> +#> <bytecode: 0x555559668108> +#> <environment: 0x555559677c08> #> Nb of parameters: 4 #> parameter names: parent_0 log_k_parent log_k_A1 f_parent_ilr_1 #> distribution: @@ -248,8 +254,7 @@ a list of datasets.

#> No covariate in the model. #> Initial values #> parent_0 log_k_parent log_k_A1 f_parent_ilr_1 -#> Pop.CondInit 86.53449 -3.207005 -3.060308 -1.920449 -#> +#> Pop.CondInit 86.53449 -3.207005 -3.060308 -1.920449
d_saemix <- saemix_data(f_mmkin)
#> #> #> The following SaemixData object was successfully created: #> @@ -257,12 +262,14 @@ a list of datasets.

#> longitudinal data for use with the SAEM algorithm #> Dataset ds_saemix #> Structured data: value ~ time + name | ds -#> X variable for graphs: time () -#> Running main SAEM algorithm -#> [1] "Mon May 25 12:48:51 2020" -#> .
#> .
#> .
#> .
#> +#> X variable for graphs: time ()
saemix_options <- list(seed = 123456, + save = FALSE, save.graphs = FALSE, displayProgress = FALSE, + nbiter.saemix = c(200, 80)) +f_saemix <- saemix(m_saemix, d_saemix, saemix_options)
#> Running main SAEM algorithm +#> [1] "Tue May 26 18:25:16 2020" +#> .. #> Minimisation finished -#> [1] "Mon May 25 12:56:39 2020"
#> Nonlinear mixed-effects model fit by the SAEM algorithm +#> [1] "Tue May 26 18:31:09 2020"
#> Nonlinear mixed-effects model fit by the SAEM algorithm #> ----------------------------------- #> ---- Data ---- #> ----------------------------------- @@ -322,12 +329,12 @@ a list of datasets.

#> out_values <- out_wide[out_index] #> } #> return(out_values) -#> }, mc.cores = 15) +#> }, mc.cores = cores) #> res <- unlist(res_list) #> return(res) #> } -#> <bytecode: 0x555559875398> -#> <environment: 0x55555973a248> +#> <bytecode: 0x555559668108> +#> <environment: 0x555559677c08> #> Nb of parameters: 4 #> parameter names: parent_0 log_k_parent log_k_A1 f_parent_ilr_1 #> distribution: @@ -353,7 +360,7 @@ a list of datasets.

#> Estimation of individual parameters (MAP) #> Estimation of standard errors and linearised log-likelihood #> Estimation of log-likelihood by importance sampling -#> Number of iterations: K1=300, K2=100 +#> Number of iterations: K1=200, K2=80 #> Number of chains: 10 #> Seed: 123456 #> Number of MCMC iterations for IS: 5000 @@ -369,19 +376,19 @@ a list of datasets.

#> ----------------- Fixed effects ------------------ #> ---------------------------------------------------- #> Parameter Estimate SE CV(%) -#> [1,] parent_0 86.21 1.51 1.7 +#> [1,] parent_0 86.14 1.61 1.9 #> [2,] log_k_parent -3.21 0.59 18.5 -#> [3,] log_k_A1 -4.64 0.29 6.3 -#> [4,] f_parent_ilr_1 -0.32 0.30 93.2 -#> [5,] a.1 4.69 0.27 5.8 +#> [3,] log_k_A1 -4.66 0.30 6.4 +#> [4,] f_parent_ilr_1 -0.33 0.30 91.7 +#> [5,] a.1 4.68 0.27 5.8 #> ---------------------------------------------------- #> ----------- Variance of random effects ----------- #> ---------------------------------------------------- #> Parameter Estimate SE CV(%) -#> parent_0 omega2.parent_0 6.07 7.08 117 -#> log_k_parent omega2.log_k_parent 1.75 1.11 63 +#> parent_0 omega2.parent_0 7.71 8.14 106 +#> log_k_parent omega2.log_k_parent 1.76 1.12 63 #> log_k_A1 omega2.log_k_A1 0.26 0.26 101 -#> f_parent_ilr_1 omega2.f_parent_ilr_1 0.38 0.27 71 +#> f_parent_ilr_1 omega2.f_parent_ilr_1 0.39 0.28 71 #> ---------------------------------------------------- #> ------ Correlation matrix of random effects ------ #> ---------------------------------------------------- @@ -399,66 +406,16 @@ a list of datasets.

#> --------------- Statistical criteria ------------- #> ---------------------------------------------------- #> Likelihood computed by linearisation -#> -2LL= 1064.397 -#> AIC = 1082.397 -#> BIC = 1078.882 +#> -2LL= 1064.364 +#> AIC = 1082.364 +#> BIC = 1078.848 #> #> Likelihood computed by importance sampling -#> -2LL= 1063.161 -#> AIC = 1081.161 -#> BIC = 1077.646 -#> ----------------------------------------------------
#> Nonlinear mixed-effects model fit by the SAEM algorithm -#> ----------------------------------------- -#> ---- Data and Model ---- -#> ----------------------------------------- -#> Data -#> Dataset ds_saemix -#> Longitudinal data: value ~ time + name | ds -#> -#> Model: -#> Mixed model generated from mmkin object -#> 4 parameters: parent_0 log_k_parent log_k_A1 f_parent_ilr_1 -#> error model: constant -#> No covariate -#> -#> Key options -#> Estimation of individual parameters (MAP) -#> Estimation of standard errors and linearised log-likelihood -#> Estimation of log-likelihood by importance sampling -#> Number of iterations: K1=300, K2=100 -#> Number of chains: 10 -#> Seed: 123456 -#> Number of MCMC iterations for IS: 5000 -#> Input/output -#> results not saved -#> no graphs -#> ---------------------------------------------------- -#> ---- Results ---- -#> Fixed effects -#> Parameter Estimate SE CV(%) -#> parent_0 86.214 1.506 1.75 -#> log_k_parent -3.210 0.593 18.47 -#> log_k_A1 -4.643 0.294 6.34 -#> f_parent_ilr_1 -0.322 0.300 93.24 -#> a.1 4.689 0.270 5.76 -#> -#> Variance of random effects -#> Parameter Estimate SE CV(%) -#> omega2.parent_0 6.068 7.078 116.7 -#> omega2.log_k_parent 1.752 1.111 63.4 -#> omega2.log_k_A1 0.256 0.257 100.5 -#> omega2.f_parent_ilr_1 0.385 0.273 70.8 -#> -#> Statistical criteria -#> Likelihood computed by linearisation -#> -2LL= 1064.397 -#> AIC= 1082.397 -#> BIC= 1078.882 -#> Likelihood computed by importance sampling -#> -2LL= 1063.161 -#> AIC= 1081.161 -#> BIC= 1077.646
# } -
+#> -2LL= 1063.462 +#> AIC = 1081.462 +#> BIC = 1077.947 +#> ----------------------------------------------------
plot(f_saemix, plot.type = "convergence")
#> Plotting convergence plots
# } +