# ldlogistic: Locally D-optimal designs for Logistic model In LDOD: Finding Locally D-optimal optimal designs for some nonlinear and generalized linear models.

## Description

Finds Locally D-optimal designs for Logistic and Logistic dose-response models which are defined as E(y) = 1/(1+\exp(-a-bx)) and E(y) = 1/(1+\exp(-b(x-a))) with Var(y) = E(y)(1-E(y)), respectively, where a and b are unknown parameters.

## Usage

 ```1 2``` ```ldlogistic(a, b, form = 1 , lb, ub, user.points = NULL, user.weights = NULL, ..., n.restarts = 1, n.sim = 1, tol = 1e-8, prec = 53, rseed = NULL) ```

## Arguments

 `a` initial value for paremeter a. `b` initial value for paremeter b. `form` must be `1` or `2`. If `form = 1`, then E(y)=(1/(\exp(-a-bx)+1)); if 'form = 2', then E(y)=1/(\exp(b2(x-b1))+1). `lb` lower bound of design interval. `ub` upper bound of design interval. `user.points` (optional) vector of user design points which calculation of its D-efficiency is aimed. Each element of `user.points` must be within the design interval. `user.weights` (optional) vector of weights which its elements correspond to `user.points` elements. The sum of weights should be 1; otherwise they will be normalized. `...` (optional) additional parameters will be passed to function `curve`. `prec` (optional) a number, the maximal precision to be used for D-efficiency calculation, in bite. Must be at least 2 (default 53), see 'Details'. `n.restarts` (optional optimization parameter) number of solver restarts required in optimization process (default 1), see 'Details'. `n.sim` (optional optimization parameter) number of random parameters to generate for every restart of solver in optimization process (default 1), see 'Details'. `tol` (optional optimization parameter) relative tolerance on feasibility and optimality in optimization process (default 1e-8). `rseed` (optional optimization parameter) a seed to initiate the random number generator, else system time will be used.

## Details

While D-efficiency is `NaN`, an increase in `prec` can be beneficial to achieve a numeric value, however, it can slow down the calculation speed.

Values of `n.restarts` and `n.sim` should be chosen according to the length of design interval.

## Value

plot of derivative function, see 'Note'.

a list containing the following values:

 `points` obtained design points `weights` corresponding weights to the obtained design points `det.value` value of Fisher information matrix determinant at the obtained design `user.eff` D-efficeincy of user design, if `user.design` and `user.weights` are not `NULL`.

## Note

To verify optimality of obtained design, derivate function (symmetry of Frechet derivative with respect to the x-axis) will be plotted on the design interval. Based on the equivalence theorem (Kiefer, 1974), a design is optimal if and only if its derivative function are equal or less than 0 on the design interval. The equality must be achieved just at the obtained points.

## Author(s)

Ehsan Masoudi, Majid Sarmad and Hooshang Talebi

## References

Masoudi, E., Sarmad, M. and Talebi, H. 2012, An Almost General Code in R to Find Optimal Design, In Proceedings of the 1st ISM International Statistical Conference 2012, 292-297.

Kiefer, J. C. (1974), General equivalence theory for optimum designs (approximate theory). Ann. Statist., 2, 849-879.

`cfisher`, `cfderiv` and `eff`.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21``` ```ldlogistic(a = .9 , b = .8, form = 1, lb = -5, ub = 5) # \$points: -3.0542559 0.8042557 ## usage of n.sim and n.restars: # Various responses for different values of rseed ldlogistic(a = 20 , b = 10, form = 1, lb = -5, ub = 5, rseed = 9) # \$points: -4.746680 -1.976591 ldlogistic(a = 20 , b = 10, form = 1, lb = -5, ub = 5, rseed = 11) # \$points -4.994817 -2.027005 ldlogistic(a = 20 , b = 10, form = 1, lb = -5, ub = 5, n.restarts = 5, n.sim = 5) # (valid response) \$points: -2.15434, -1.84566 ## usage of precision: ldlogistic(a = 22 , b = 10, form = 1, lb = -5, ub = 20, n.restarts = 7, n.sim = 7, user.points = c(20, 5), user.weights = c(.5, .5)) # \$user.eff: NaN ldlogistic(a = 22 , b = 10, form = 1, lb = -5, ub = 20, n.restarts = 7, n.sim = 7, user.points = c(20, 5), user.weights = c(.5, .5), prec = 321) # \$user.eff: 0 ```