Forms D-optimal designs to estimate the parameters of a nonlinear or generalized linear model (W. van den Berg).

### Options

`PRINT` = string token |
Controls printed output (`results` , `monitoring` ); default `resu` , `moni` |
---|---|

`PLOT` = string token |
Controls whether to plot the design (`design` ); default `desi` |

`YARGUMENT` = identifier |
Data structure that stores the results of the function when it is calculated by expressions supplied by the `FUNCTION` option; must be set |

`XARGUMENT` = identifier |
Data structure representing the x-variate in the expressions supplied by the `FUNCTION` option; must be set |

`FUNCTION` = expression structures |
Specifies the function whose parameters are to be estimated; must be set |

`FNDERIVATIVES` = expression structures |
Specifies expressions to calculate derivative of the function with respect to each parameter; must be set |

`ITERATIVEWEIGHTS` = identifier |
Data structure that stores the iterative weights in the expressions supplied by the `FNITERATIVEWEIGHTS` option |

`FNITERATIVEWEIGHTS` = expression structures |
Specifies expressions to calculate the iterative weights when estimating the parameters of a generalized linear model |

`XSUPPORT` = variate |
Supplies the support points for the initial design, and saves those of the final design; if no initial values are supplied, an initial design is formed at random |

`XWEIGHTS` = variate |
Supplies the weights for the support points for the initial design, and saves those of the final design; if no initial values are supplied, equal weights are used initially |

`GRID` = variate |
Specifies the grid points where the design will be evaluated |

`A0` = scalar |
Initial update weight; default 0.1 |

`SEED` = scalar |
Seed for the random numbers used to select the initial design when not supplied by `XSUPPORT` and `XWEIGHTS` |

`NCYCLE` = scalar |
Number of iterations to make between at each value of `A0` , before halving it for the next batch of iterations; default 100 |

`MAXCYCLE` = scalar |
Maximum number of iterations; default 2500 |

`TOLERANCES` = variate |
Variate with two values specifying the convergence criterion and the tolerance for zero weights; default `!(1.E-6` , `1.E-5)` |

### Parameters

`PARAMETER` = scalars |
Parameters of the nonlinear or generalized linear model (with values giving an indication of their likely estimated values) |
---|---|

`DERIVATIVE` = identifiers |
Data structures that store the results of the calculation of the derivative for each parameter, in the expressions specified by the `FNDERIVATIVES` option |

### Description

`AFNONLINEAR`

constructs a design for estimating the parameters of a nonlinear or generalized linear model involving a single continuous variable *x*. The aim is to find the best values of *x* (i.e. the best *support points*) at which to observe the model, and a weight for each one. The design should then contain replicate observations at each of the support points, with the numbers of replicates in the same proportions as their weights. Suppose, for example, we have support points 1, 2 and 4, with weights 0.25, 0.25 and 0.5. A suitable design might then consist of observations at x-values 1, 2, 4 and 4 (i.e. 4 should have twice the replication of either 1 or 2). The designs that are produced are known as *continuous* designs, as the weights are not constrained to give an exact integer partitioning of the available points for any specific design size *N*. Instead you need to round *N* multiplied by each weight to the nearest feasible integer.

The model is specified in one, or more, expression structures by the `FUNCTION`

option. The `YARGUMENT`

gives the identifier of the data structure that receives the result of the function in the expressions, and the `XARGUMENT`

gives the identifier of the data structure that provides the *x*-values. For example, we could define the negative exponential model

*y* = e^{(-b × x)} + *c*

by

`EXPRESSION Func; VALUE=!e( Y = EXP(-1*B*X) + C)`

`AFNONLINEAR [FUNCTION=Func; YARGUMENT=Y; XARGUMENT=X; ...`

Notice that the data structures X and Y do not need to be declared. `AFNONLINEAR`

simply needs to know which they are within the expression, so that it can replace them by the sets of *x*– and *y*-values that it really needs (using the `REFORMULATE`

directive).

The parameters of the model (here `B`

and `C`

) must be specified by the `PARAMETER`

parameter. These must be scalars, with values that give an indication of their likely estimated values. `AFNONLINEAR`

also needs to be able to calculate the derivative of the function with respect to each parameter. You must specify expressions to do this using the `FNDERIVATIVES`

option, and indicate the data structures that will receive the results of the calculations using the `DERIVATIVE`

parameter. So, for the negative exponential above, we need

`EXPRESSION Gfunc[1,2]; VALUE=!e( GradB = -1*X*EXP(-1*B*X) ),\`

` !e( GradC = 1 )`

`AFNONLINEAR [FUNCTION=Function; YARGUMENT=Y; XARGUMENT=X;\`

` FNDERIVATIVE=Gfunc[]; XSUPPORT=X; XWEIGHTS=W;\`

` GRID=Grid] PARAMETER=B,C; DERIVATIVE=GradB,GradC`

The `GRID`

option defines the *x*-values at which the design is evaluated. These should cover the range of feasible *x*-values.

The `XSUPPORT`

option saves the support points of the design, in a variate. If the variate has values already defined on entry to `AFNONLINEAR`

, these are used to provide the support points for the initial design where `AFNONLINEAR`

begins its search. Otherwise `AFNONLINEAR`

chooses an initial design at random by selecting *m* points at random from the grid points, where *m* is twice the number of parameters in the model. The `SEED`

option specifies a seed for the random numbers that are used to make the selection. The default value of zero continues an existing sequence of random numbers if any have already been used in the current Genstat job, or obtains a random seed using system clock if none have been used already.

The `XWEIGHTS`

option saves the weights of the support points, in a variate, and can supply weights for an initial design. Otherwise `AFNONLINEAR`

starts with equal weights.

To form designs for generalized linear models, you also need to supply expressions to calculate the iterative weights at various *x*-values. The `FNITERATIVEWEIGHTS`

option supplies the expressions, and the `ITERATIVEWEIGHTS`

option indicate the data structure that will receive the results of the calculations.

By default `AFNONLINEAR`

produces a plot showing the function and prediction variance at the selected grid points, but you can suppress this by setting option `PLOT=*`

.

`AFNONLINEAR`

uses the algorithm of Federov (1972). This involves a sequence of iterations in which a new support point may be added, or the weight of an existing point may be increased. The `A0`

option specifies the weights to be given to a new point, or to be added to an existing point. (The weights of the other support points are then decreased, proportionally, so that the weights still add up to one.) The `NCYCLE`

option controls how many iterations are made with each value of `AO`

(default 100); so, at the end of each set of `NCYCLE`

iterations, `AO`

is divided by two in order for the weights to converge to a stable solution.

The `TOLERANCES`

option can be set to a variate of length two, to specify the convergence criterion and the tolerance for zero weights (defaults 10^{-6} and 10^{-5}, respectively). The algorithm stops when the number of support points equals the number of parameters, and the prediction variance minus the number of parameters is less than the first `TOLERANCES`

value. Weights less than the second `TOLERANCES`

value are set to zero at each iteration (so that the corresponding points leave the design).

Options: `PRINT`

, `PLOT`

, `YARGUMENT`

, `XARGUMENT`

, `FUNCTION`

, `FNDERIVATIVES`

, `ITERATIVEWEIGHTS`

, `FNITERATIVEWEIGHTS`

, `XSUPPORT`

, `XWEIGHTS`

, `GRID`

, `A0`

, `SEED`

, `NCYCLE`

, `MAXCYCLE`

, `TOLERANCES`

.

Parameters: `PARAMETER`

, `DERIVATIVE`

.

### Method

For a D-optimal design the number of support points is equal to the number of parameters, and the determinant of the information matrix is at its maximum. Instead of maximizing the information matrix, `AFNONLINEAR`

uses the General Equivalence Theorem. By minimizing the maximum prediction variance of the response a G-optimal design is obtained, with the maximum prediction variance of the response equal to the number of parameters and occurring at the support points. According to the General Equivalence Theorem the design will also be D-optimal.

Fedorov (1972) proposes starting with a value for `A0`

of e.g. 0.1, and dividing `A0`

by two after each iteration so that the determinant of the information matrix is lower than the determinant of the information matrix of the preceding iteration. `AFNONLINEAR`

allows you to set the initial value of `A0`

(option `A0`

default 0.1), and the number of iterations to make before dividing it by two (option `NCYCLE`

, default 100).

Sometimes the weight of a support point may be divided over two neighbouring points of the grid, and the algorithm may fail to converge. In that case you could replace the two support points by a new point with a weight equal to the total of their two weights, and located at their average. Alternatively, you could change the `SEED`

option to run `AFNONLINEAR`

again from a different starting design.

### Reference

Fedorov, V.V. (1972). *Theory of Optimal Experiments*. Academic Press, New York & London.

### See also

Directive: `AFRESPONSESURFACE`

.

Commands for: Design of experiments.

### Example

CAPTION 'AFNONLINEAR example'; STYLE=meta VARIATE [VALUES=3,4] X VARIATE [VALUES=0.6,0.4] W VARIATE [VALUES=0,0.1... 5] Grid SCALAR B,C; VALUE=1,5 EXPRESSION Function; VALUE=!e( Y = EXP(-1*B*X) + C ) EXPRESSION Gfunction[1,2]; VALUE=!e( GradB = -1*X*EXP(-1*B*X) ),\ !e( GradC = 1 ) AFNONLINEAR [FUNCTION=Function; YARGUMENT=Y; XARGUMENT=X;\ FNDERIVATIVE=Gfunction[]; XSUPPORT=X; XWEIGHTS=W; GRID=Grid]\ PARAMETER=B,C; DERIVATIVE=GradB,GradC