Learn R Programming

ICAOD (version 0.9.8)

sens.minimax.control: Control Parameters for Verifying General Equivalence Theorem

Description

This function returns a list of control parameters that are used to find the ``asnwering set'' for minimax and standardized maximin generated designs. The answering set is required to obtain the sensitivity (derivative) function in order to verify the optimality of a given design. Moreover, it contains a list of nloptr control parameters to find maximum of the sensitivity (derivative) function over the design space, used to calculate the efficiency lower bound (ELB).

Usage

sens.minimax.control(answering.set = list(n_seg = 6, merge_tol = 0.005),
  x0 = NULL, optslist = list(stopval = -Inf, algorithm =
  "NLOPT_GN_DIRECT_L", xtol_rel = 1e-08, ftol_rel = 1e-10, maxeval = 6000),
  ...)

Arguments

answering.set

A list of control parameters to find the answering set in minimax and standardized maximin optimal design problems. See 'Details'.

x0

Vector of starting values for maximizing the sensitivity (derivative) function over the design space \(x\). It will be passed to the optimization function nloptr.

optslist

A list. It will be passed to the argument opts of the function nloptr to find the maximum of the sensitivity function over the design space. See 'Details'.

...

Further arguments will be passed to nl.opts from package nloptr.

Value

A list of control parameters for verifying the general equivalence theorem for minimax, standardized maximin and locally optimal designs.

Details

Given a design, an ``answering set'' is a subset of all local optima of the optimality criterion over the parameter space (only applicable for minimax and standardized maximin design problems). For an optimality verification by the general equivalence theorem, finding the true answering set is important because the sensitivity (derivative) function in a minimax or standardized maximin problem is obtained based on it. An invalid answering set may result in a false sensitivity plot and ELB. Unfortunately, there is no theoretical rule on how to choose the number of elements of an answering set, and they would have to be found by trial and error. Given a design, the answering set for a minimax criterion is obtained as follows:

  • Step 1: Find all the local maxima of the optimality criterion (minimax) over the parameter space. For this purpose, in our algorithm, the parameter space is divided into (n_seg + 1)^p segments, where p is the number of unknown model parameters. Then, each boundary point of the resulted segments (intervals) is assigned to the argument par of the function optim in order to start a local search using the "L-BFGS-B" method.

  • Step 2: Pick the ones nearest to the global minimum subject to a merging tolerance merge_tol (default 0.005).

The resulting maxima establish the answering set. Obviously, the answering set is a subset of all the local maxima. Therefore, it is very important to be able to find all the local maxima to create the true answering set with no missing elements. Otherwise, even when the design is optimal, the sensitivity (derivative) plot may not verify the optimality of the design. Finding all the local optimal of a multimodal function like the sensitivity function is not an easy task and this is the main reason that checking the general equivalence theorem (even plotting) in minimax and standardized maximin problems is complicated. As a result, the argument answering.set is a list with two elements:

n_seg

Please increase the value of n_seg for models with larger number of unknown parameters or large parameter space.

merge_tol

We advise to not change the default value of the parameter merge_tol as it has been successfully tested for many examples.

ELB is a measure of proximity of a design to the optimal design without knowing the latter. Given a design, let \(\epsilon\) be the global maximum of the sensitivity (derivative) function with respect the vector of the model predictors \(x\) over the design space. ELB is given by $$ELB = p/(p + \epsilon),$$ where \(p\) is the number of model parameters. Obviously, calculating ELB requires finding \(\epsilon\) and therefore, a maximization problem to be solved. The function nloptr is used here to solve this maximization problem. The arguments x0 and optslist will be passed to this function as follows:

Argument x0 provides the user initial values for this maximization problem and will be passed to the argument with the same name in the function nloptr.

Argument optslist will be passed to the argument opts of the function nloptr. optslist is a list and the most important components are listed as follows:

stopval

Stop minimization when an objective value <= stopval is found. Setting stopval to -Inf disables this stopping criterion (default).

algorithm

Defaults to NLOPT_GN_DIRECT_L. DIRECT-L is a deterministic-search algorithm based on systematic division of the search domain into smaller and smaller hyperrectangles.

xtol_rel

Stop when an optimization step (or an estimate of the optimum) changes every parameter by less than xtol_rel multiplied by the absolute value of the parameter. Criterion is disabled if xtol_rel is non-positive. Defaults to 1e-8.

ftol_rel

Stop when an optimization step (or an estimate of the optimum) changes the objective function value by less than ftol_rel multiplied by the absolute value of the function value. Criterion is disabled if ftol_rel is non-positive. Defaults to 1e-10.

maxeval

Stop when the number of function evaluations exceeds maxeval. Criterion is disabled if maxeval is non-positive. Defaults to 6000. See 'Note' on when to change its value.

A detailed explanation of all the options is shown by the function nloptr.print.options() in package nloptr.

Examples

Run this code
# NOT RUN {
sens.minimax.control()
sens.minimax.control(answering.set = list(n_seg = 4))
sens.minimax.control(answering.set = list(n_seg = 4), optslist = list(maxeval = 1000))
# faster checking process
sens.minimax.control(answering.set = list(n_seg = 4), optslist = list(maxeval = 2000))
# }

Run the code above in your browser using DataLab