Locally DP-Optimal Designs
Finds compound locally DP-optimal designs that meet the dual goal of parameter estimation and increasing the probability of a particular outcome in a binary response model. A compound locally DP-optimal design maximizes the product of the efficiencies of a design ξ with respect to D- and average P-optimality, weighted by a pre-defined mixing constant 0 <= α <= 1.
locallycomp( formula, predvars, parvars, family = gaussian(), lx, ux, alpha, prob, iter, k, inipars, fimfunc = NULL, ICA.control = list(), sens.control = list(), initial = NULL, npar = length(inipars), plot_3d = c("lattice", "rgl") )
formula |
A linear or nonlinear model |
predvars |
A vector of characters. Denotes the predictors in the |
parvars |
A vector of characters. Denotes the unknown parameters in the |
family |
A description of the response distribution and the link function to be used in the model.
This can be a family function, a call to a family function or a character string naming the family.
Every family function has a link argument allowing to specify the link function to be applied on the response variable.
If not specified, default links are used. For details see |
lx |
Vector of lower bounds for the predictors. Should be in the same order as |
ux |
Vector of upper bounds for the predictors. Should be in the same order as |
alpha |
A value between 0 and 1.
Compound or combined DP-criterion is the product of the efficiencies of a design with respect to D- and average P- optimality, weighted by |
prob |
Either |
iter |
Maximum number of iterations. |
k |
Number of design points. When |
inipars |
Vector. Initial values for the unknown parameters. It will be passed to the information matrix and also probability function. |
fimfunc |
A function. Returns the FIM as a |
ICA.control |
ICA control parameters. For details, see |
sens.control |
Control Parameters for Calculating the ELB. For details, see |
initial |
A matrix of the initial design points and weights that will be inserted into the initial solutions (countries) of the algorithm.
Every row is a design, i.e. a concatenation of |
npar |
Number of model parameters. Used when |
plot_3d |
Which package should be used to plot the sensitivity (derivative) function for two-dimensional design space. Defaults to |
Let Ξ be the space of all approximate designs with k design points (support points) at x_1, x_2, ..., x_k from design space χ with corresponding weights w_1,... ,w_k. Let M(ξ, θ) be the Fisher information matrix (FIM) of a k-point design ξ, θ_0 is a user-given vector of initial estimates for the unknown parameters θ and p(x_i, θ) is the ith probability of success given by x_i in a binary response model. A compound locally DP-optimal design maximizes over Ξ
α/q log|M(ξ, θ_0)| + (1- α) log ( ∑ w_i p(x_i, θ_0)).
Use plot
function to verify the general equivalence theorem for the output design or change checkfreq
in ICA.control
.
One can adjust the tuning parameters in ICA.control
to set a stopping rule
based on the general equivalence theorem. See "Examples" in locally
.
an object of class minimax
that is a list including three sub-lists:
arg
A list of design and algorithm parameters.
evol
A list of length equal to the number of iterations that stores
the information about the best design (design with least criterion value)
of each iteration. evol[[iter]]
contains:
iter |
Iteration number. | |
x |
Design points. | |
w |
Design weights. | |
min_cost |
Value of the criterion for the best imperialist (design). | |
mean_cost |
Mean of the criterion values of all the imperialists. | |
sens |
An object of class 'sensminimax' . See below. |
|
param |
Vector of parameters. | |
empires
A list of all the empires of the last iteration.
alg
A list with following information:
nfeval |
Number of function evaluations. It does not count the function evaluations from checking the general equivalence theorem. | |
nlocal |
Number of successful local searches. | |
nrevol |
Number of successful revolutions. | |
nimprove |
Number of successful movements toward the imperialists in the assimilation step. | |
convergence |
Stopped by 'maxiter' or 'equivalence' ? |
|
method
A type of optimal designs used.
design
Design points and weights at the final iteration.
out
A data frame of design points, weights, value of the criterion for the best imperialist (min_cost), and Mean of the criterion values of all the imperialistsat each iteration (mean_cost).
The list sens
contains information about the design verification by the general equivalence theorem. See sensminimax
for more details.
It is given every ICA.control$checkfreq
iterations
and also the last iteration if ICA.control$checkfreq >= 0
. Otherwise, NULL
.
param
is a vector of parameters that is the global minimum of
the minimax criterion or the global maximum of the standardized maximin criterion over the parameter space, given the current x
, w
.
McGree, J. M., Eccleston, J. A., and Duffull, S. B. (2008). Compound optimal design criteria for nonlinear models. Journal of Biopharmaceutical Statistics, 18(4), 646-661.
## Here we produce the results of Table 2 in in McGree and Eccleston (2008) # For D- and P-efficiency see, ?leff and ?peff p <- c(1, -2, 1, -1) prior4.4 <- uniform(p -1.5, p + 1.5) formula4.4 <- ~exp(b0+b1*x1+b2*x2+b3*x1*x2)/(1+exp(b0+b1*x1+b2*x2+b3*x1*x2)) prob4.4 <- ~1-1/(1+exp(b0 + b1 * x1 + b2 * x2 + b3 * x1 * x2)) predvars4.4 <- c("x1", "x2") parvars4.4 <- c("b0", "b1", "b2", "b3") lb <- c(-1, -1) ub <- c(1, 1) # set checkfreq = Inf to ask for equivalence theorem at final step. res.0 <- locallycomp(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), prob = prob4.4, lx = lb, ux = ub, alpha = 0, k = 1, inipars = p, iter = 10, ICA.control = ICA.control(checkfreq = Inf)) ## Not run: res.25 <- locallycomp(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), prob = prob4.4, lx = lb, ux = ub, alpha = .25, k = 4, inipars = p, iter = 350, ICA.control = ICA.control(checkfreq = Inf)) res.5 <- locallycomp(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), prob = prob4.4, lx = lb, ux = ub, alpha = .5, k = 4, inipars = p, iter = 350, ICA.control = ICA.control(checkfreq = Inf)) res.75 <- locallycomp(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), prob = prob4.4, lx = lb, ux = ub, alpha = .75, k = 4, inipars = p, iter = 350, ICA.control = ICA.control(checkfreq = Inf)) res.1 <- locallycomp(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), prob = prob4.4, lx = lb, ux = ub, alpha = 1, k = 4, inipars = p, iter = 350, ICA.control = ICA.control(checkfreq = Inf)) #### computing the D-efficiency # locally D-optimal design is locally DP-optimal design when alpha = 1. leff(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), x1 = res.0$evol[[10]]$x, w1 = res.0$evol[[10]]$w, inipars = p, x2 = res.1$evol[[350]]$x, w2 = res.1$evol[[350]]$w) leff(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), x1 = res.25$evol[[350]]$x, w1 = res.25$evol[[350]]$w, inipars = p, x2 = res.1$evol[[350]]$x, w2 = res.1$evol[[350]]$w) leff(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), x1 = res.5$evol[[350]]$x, w1 = res.5$evol[[350]]$w, inipars = p, x2 = res.1$evol[[350]]$x, w2 = res.1$evol[[350]]$w) leff(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), x1 = res.75$evol[[350]]$x, w1 = res.75$evol[[350]]$w, inipars = p, x2 = res.1$evol[[350]]$x, w2 = res.1$evol[[350]]$w) #### computing the P-efficiency # locally p-optimal design is locally DP-optimal design when alpha = 0. leff(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), x2 = res.0$evol[[10]]$x, w2 = res.0$evol[[10]]$w, prob = prob4.4, type = "PA", inipars = p, x1 = res.25$evol[[350]]$x, w1 = res.25$evol[[350]]$w) leff(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), x2 = res.0$evol[[10]]$x, w2 = res.0$evol[[10]]$w, prob = prob4.4, inipars = p, type = "PA", x1 = res.5$evol[[350]]$x, w1 = res.5$evol[[350]]$w) leff(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), x2 = res.0$evol[[10]]$x, w2 = res.0$evol[[10]]$w, prob = prob4.4, inipars = p, type = "PA", x1 = res.75$evol[[350]]$x, w1 = res.75$evol[[350]]$w) leff(formula = formula4.4, predvars = predvars4.4, parvars = parvars4.4, family = binomial(), x2 = res.0$evol[[10]]$x, w2 = res.1$evol[[10]]$w, prob = prob4.4, type = "PA", inipars = p, x1 = res.1$evol[[350]]$x, w1 = res.1$evol[[350]]$w) ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.