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

## Description

Finds Locally D-optimal designs for Weibull regression model which is defined as E(y) = a-b\exp(-λ*x^h) with Var(y) = σ^2, where a, b, λ, h and σ are unknown parameters.

## Usage

 ```1 2``` ```ldweibull(a, b, lambda, h, 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. `lambda` initial value for paremeter λ. `h` initial value for paremeter h. `lb` lower bound of design interval, must be greater than 0. Value 0 for lower bound is not allowed, instead of 0 a small value such as 10^-10 can be used. `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 generator 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.

Dette, H., Pepelyshev, A. (2008), Efficient Experimental Designs for Sigmoidal Growth Models, Statistical Planning and Inference, 138, 2-17.

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``` ```ldweibull(a = 1, b = 1, lambda = 2, h = 1, lb = 10^-10, ub =3) # \$points: 0.0000000001 0.1713914120 0.8002692550 3.0000000000 ## usage of n.sim and n.restars: # Various responses for different rseed ldweibull(a = 1, b = 1, lambda = 3, h = 1, lb = 0.001, ub = 19, rseed = 1) # \$points: 0.0010000 0.2991952 5.2428039 19.0000000 ldweibull(a = 1, b = 1, lambda = 3, h = 1, lb = 0.001, ub = 19, rseed = 19) # \$points: 0.001000 1.217404 3.566328 19.000000 ldweibull(a = 1, b = 1, lambda = 3, h = 1, lb = 0.001, ub = 19, n.sim = 10, n.restarts = 10) # (valid respone) \$points: 0.0010000, 0.1205858, 0.5544623, 19.0000000 ```