Learn R Programming

ICAOD (version 0.9.1)

multica_4pl: Imperialist Competitive Algorithm to find multiple-objective optimal designs for the 4-parameter logistic models.

Description

The 4-parameter Hill model is $Y_i = f(Di, a, b, c, d) + \epsiloni$ where $\epsiloni ~ N(0, \sigma2)$, $$f(D_i, a,b, c, d) = c + \frac{(d-c)(\frac{D_i}{a})^b}{1+(\frac{D_i}{a})^b}$$ is the mean response at dose $Di$, $a$ is the ED50, $d$ is the upper limit of response, $c$ is the lower limit of response and $b$ denotes the Hill constant that control the flexibility in the slope of the response curve. Let $\bold{\theta} = (\theta1, \theta2, \theta3, \theta4)$. The Hill model may be re-parameterized as $$f(x, \bold{\theta}) = \frac{\theta_1}{1 + exp(\theta_2 x + \theta_3)} + \theta_4,$$ which is sometimes referred to as 4-parameter logistic model. This form is equivalent to Hill model with $\theta1 = d - c$, $\theta2 = - b$, $\theta3 = blog(a)$, $\theta4 = c$, $\theta1 > 0$, $\theta2 not equal to 0$, and $-\infty < ED50 < \infty$, where $xi = log(Di) belongs to [-M, M]$ for some sufficiently large value of $M$. The user can easily transform $a$, $b$, $c$, $d$ and $D$ to $\theta1$, $\theta2$, $\theta3$, $\theta4$ and $x$ to find the multiple-objective optimal design for the 4-parameter logisitc model with this function and then transform the design for 4-parameter logistic model to the 4-parameter Hill model. See "Examples".

Usage

multica_4pl(lx, ux, param, iter, k, delta, lambda, control = list(), initial = NULL)

Arguments

lx
lower bound of the design space $\chi$.
ux
upper bound of the design space $\chi$.
param
initial guess of parameters $\bold{\theta} = (\theta1, \theta2, \theta3, \theta4)$.
iter
maximum number of iterations.
k
number of design (support) points. Must be larger than the number of model parameters $4$ to avoid singularity of the FIM.
delta
numeric, predetermined clinically significant effect to define the MED. When the dose-response relationship (slop $\theta2$) is decreasing (increasing), the value of delta is negative (positive).
lambda
user select weights, where $\lambda1$ is the weight for estimating parameters, $\lambda2$ is the weignt for estimating median effective dose level (ED50), and $\lambda3$ is the weight for estimating minimum effective dose level (MED).
control
a list of control parameters. See "Details" of mica.
initial
initial a matrix of user intial countries or a vector of a country that will be inserted into the initial countries of ICA. See "Details" of mica.

Value

an object of class "ICA". See "Value" in mica.

Details

When $\lambda1 > 0$, then the number of support points k must at least be 4 to avoid singularity of the information matrix. This function is not suitable for finding the c-optimal designs for estimating 'MED' or 'ED50' and the results may not be stable. The reason is that for c-optimal the generalized inverese of Fisher information matrix unstable and depends on the tolerenace (probably because the matrix is exactly singular).

The tolerance for finding the general inverse of Fisher information matrix is set to .Machine$double.xmin.

References

Hyun, S. W., & Wong, W. K. (2015). Multiple-Objective Optimal Designs for Studying the Dose Response Function and Interesting Dose Levels. The international journal of biostatistics, 11(2), 253-271.

Examples

Run this code

## An example on how to create the design in Hyun and Wong (2015)
## An initial guess from Table 1:

Theta1 <- c(1.563, 1.790, 8.442, 0.137)

#########################################################
## Table 2 first row
# creating optimal design for estimating parameters: xi_D
res <- multica_4pl(lx = log(.001),
                   ux = log(1000),
                   param = Theta1,
                   k = 4,
                   lambda = c(1, 0, 0),
                   delta = -1,
                   iter = 150,
                   control = list(seed = 1366, plot_cost = TRUE))
## Not run: 
# #######################################################
# ## finding multiple objective optimal design: example 1, Table 3
# res1 <- multica_4pl(lx = log(.001),
#                    ux = log(1000),
#                    param = Theta1,
#                    k = 4, lambda = c(0.05, 0.05, .90),
#                    delta = -1, iter = 400,
#                    control = list(seed = 1366))
# 
# plot(res1)
# 
# #######################################################
# ## finding multiple objective optimal design: example 2, Table 3
# res2 <- multica_4pl(lx = log(.001),
#                    ux = log(1000),
#                    param = c(16.8, -1, 4.248, 22),
#                    k = 4, lambda = c(0, 0.1, .9),
#                    delta = 5, iter = 200,
#                    control = list(seed = 1366))
# plot(res2)
# 
# ##########################################################
# ## how to transfer from Hill model to 4-parameter logistic model
# ## parameters for Hill model
# a <- 0.008949  # ED50
# b <- -1.79 # Hill constant
# c <- 0.137 # lower limit
# d <- 1.7 # upper limit
# D <- c(.001, 1000) ## dose in mg
# ## Hill_para is c(a, b, c, d)
# res2 <- multica_4pl(lx = log(.001),
#                    ux = log(1000),
#                    param =  c(d - c, -b, b * log(a), c),
#                    k = 4, lambda = c(0.05, 0.05, .90),
#                    delta = -1, iter = 400,
#                    control = list(seed = 1366))
# exp(res2$evol[[length(res2$evol)]]$x) # dose level in mg
# ## End(Not run)

Run the code above in your browser using DataLab