cv.remix {REMixed}R Documentation

REMixed algorithm over a grid of \lambda

Description

Regularization and Estimation in MIXed effects model, over a regularization path.

Usage

cv.remix(
  project = NULL,
  final.project = NULL,
  dynFUN,
  y,
  ObsModel.transfo,
  alpha,
  lambda.grid = NULL,
  alambda = 0.001,
  nlambda = 50,
  lambda_max = NULL,
  eps1 = 10^(-2),
  eps2 = 10^(-1),
  selfInit = FALSE,
  pop.set1 = NULL,
  pop.set2 = NULL,
  prune = NULL,
  n = NULL,
  parallel = TRUE,
  ncores = NULL,
  print = TRUE,
  digits = 3,
  trueValue = NULL,
  unlinkBuildProject = TRUE,
  max.iter = +Inf
)

Arguments

project

directory of the Monolix project (in .mlxtran). If NULL, the current loaded project is used (default is NULL).

final.project

directory of the final Monolix project (default add "_upd" to the Monolix project).

dynFUN

function computing the dynamics of interest for a set of parameters. This function need to contain every sub-function that it may needs (as it is called in a foreach loop). The output of this function need to return a data.frame with time as first columns and named dynamics in other columns. It must take in input :

y

a named vector with the initial condition. The names are the dynamics names.

parms

a named vector of parameter

.

time

vector a timepoint.

See dynFUN_demo, model.clairon, model.pasin or model.pk for examples.

y

initial condition of the mechanism model, conform to what is asked in dynFUN.

ObsModel.transfo

list containing two lists of transformations and two vectors linking each transformations to their observation model name in the Monolix project. The list should include identity transformations and be named S and R. The two vectors should be named linkS and linkR.

Both S (for the direct observation models) and linkS, as well as R (for latent process models) and linkR, must have the same length.

S

a list of transformations for the direct observation models. Each transformation corresponds to a variable Y_p=h_p(S_p), where the name indicates which dynamic is observed (from dynFUN);

linkS

a vector specifying the observation model names (that is used in the monolix project, alpha1, etc.) for each transformation, in the same order as in S

;

R

similarly, a list of transformations for the latent process models. Although currently there is only one latent dynamic, each s_k, k\leq K transformation corresponds to the same dynamic but may vary for each Y_k observed. The names should match the output from dynFUN;

linkR

a vector specifying the observation model names for each transformation, in the same order as in R.

alpha

named list of named vector "alpha0", "alpha1" (all alpha1 are mandatory). The name of alpha$alpha0 and alpha$alpha1 are the observation model names from the monolix project to which they are linked (if the observations models are defined whithout intercept, alpha$alpha0 need to be set to the vector NULL).

lambda.grid

grid of user-suuplied penalisation parameters for the lasso regularization (if NULL, the sequence is computed based on the data).

alambda

if lambda.grid is null, coefficients used to compute the grid (default to 0.05, see details).

nlambda

if lambda.grid is null, number of lambda parameter to test (default to 50).

lambda_max

if lambda.grid is null, maximum of the lambda grid to test (default is automatically computed, see details)

eps1

integer (>0) used to define the convergence criteria for the regression parameters.

eps2

integer (>0) used to define the convergence criteria for the likelihood.

selfInit

logical, if the SAEM is already done in the monolix project should be use as the initial point of the algorithm (if FALSE, SAEM is automatically compute according to pop.set1 settings ; if TRUE, a SAEM through monolix need to have been launched).

pop.set1

population parameters setting for initialisation (see details).

pop.set2

population parameters setting for iterations.

prune

percentage for prunning (\in[0;1]) in the Adaptative Gauss-Hermite algorithm used to compute the log-likelihood and its derivates (see gh.LL).

n

number of points for gaussian quadrature (see gh.LL).

parallel

logical, if the computation should be done in parallel when possible (default TRUE).

ncores

number of cores for parallelization (default NULL and detectCores is used).

print

logical, if the results and algotihm steps should be displayed in the console (default to TRUE).

digits

number of digits to print (default to 3).

trueValue

-for simulation purposes- named vector of true value for parameters.

unlinkBuildProject

logical, if the build project of each lambda should be deleted.

max.iter

maximum number of iteration (default 20).

Details

See REMixed-package for details on the model. For each \lambda\in\Lambda, the remix is launched. For population parameter estimation settings, see (<https://monolixsuite.slp-software.com/r-functions/2024R1/setpopulationparameterestimationsettings>).

Value

A list of outputs of the final project and of the iterative process over each value of lambda.grid:

info

Information about the parameters.

project

The project path if not unlinked.

lambda

The grid of \lambda.

BIC

Vector of BIC values for the model built over the grid of \lambda.

BICc

Vector of BICc values for the model built over the grid of \lambda.

LL

Vector of log-likelihoods for the model built over the grid of \lambda.

LL.pen

Vector of penalized log-likelihoods for the model built over the grid of \lambda.

res

List of all REMixed results for each \lambda (see remix).

outputs

List of all REMixed outputs for each \lambda (see remix).

Examples

## Not run: 
project <- getMLXdir()

ObsModel.transfo = list(S=list(AB=log10),
                        linkS="yAB",
                        R=rep(list(S=function(x){x}),5),
                        linkR = paste0("yG",1:5))

alpha=list(alpha0=NULL,
           alpha1=setNames(paste0("alpha_1",1:5),paste0("yG",1:5)))

y = c(S=5,AB=1000)

res = cv.remix(project = project,
               dynFUN = dynFUN_demo,
               y = y,
               ObsModel.transfo = ObsModel.transfo,
               alpha = alpha,
               selfInit = TRUE,
               eps1=10**(-2),
               ncores=8,
               nlambda=8,
               eps2=1)

## End(Not run)

[Package REMixed version 0.1.0 Index]