rowexch
Row exchange
Syntax
dRE = rowexch(nfactors,nruns)
[dRE,X] = rowexch(nfactors,nruns)
[dRE,X] = rowexch(nfactors,nruns,model
)
[dRE,X] = rowexch(___,param1
,val1
,param2
,val2
,...)
Description
dRE = rowexch(nfactors,nruns)
uses
a row-exchange algorithm to generate a D-optimal
design dRE
with nruns
runs (the
rows of dRE
) for a linear additive model with nfactors
factors
(the columns of dRE
). The model includes a constant
term.
[dRE,X] = rowexch(nfactors,nruns)
also
returns the associated design matrix X
, whose columns
are the model terms evaluated at each treatment (row) of dRE
.
[dRE,X] = rowexch(nfactors,nruns,
uses
the linear regression model specified in model
)model
. model
is
one of the following:
'linear'
— Constant and linear terms. This is the default.'interaction'
— Constant, linear, and interaction terms'quadratic'
— Constant, linear, interaction, and squared terms'purequadratic'
— Constant, linear, and squared terms
The order of the columns of X
for a full
quadratic model with n terms is:
The constant term
The linear terms in order 1, 2, ..., n
The interaction terms in order (1, 2), (1, 3), ..., (1, n), (2, 3), ..., (n–1, n)
The squared terms in order 1, 2, ..., n
Other models use a subset of these terms, in the same order.
Alternatively, model
can be a matrix
specifying polynomial terms of arbitrary order. In this case, model
should
have one column for each factor and one row for each term in the model.
The entries in any row of model
are powers
for the factors in the columns. For example, if a model has factors X1
, X2
,
and X3
, then a row [0 1 2]
in model
specifies
the term (X1.^0).*(X2.^1).*(X3.^2)
. A row of all
zeros in model
specifies a constant term,
which can be omitted.
[dRE,X] = rowexch(___,
specifies options for the design using one or more parameter/value pairs in addition to
any of the input argument combinations in the previous syntaxes. Valid parameters and
their values are listed in the following table.param1
,val1
,param2
,val2
,...)
Parameter | Value |
---|---|
'AvoidDuplicates' | Flag to specify whether |
'Bounds' | Lower and upper bounds for each factor, specified as
a |
'CategoricalVariables' | Indices of categorical predictors. |
'Display' | Either |
'ExcludeFcn' | Handle to a function that excludes undesirable runs.
If the function is f, it must support the syntax b = f(S),
where S is a matrix of treatments with |
'InitialDesign' | Initial design as an |
'MaxIterations' | Maximum number of iterations. The default is
|
'NumLevels' | Vector of number of levels for each factor. |
'NumTries' | Number of times to try to generate a design from a new starting
point. The algorithm uses random points for each try, except
possibly the first. The default is
|
'Options' | A structure that specifies whether to run in parallel, and specifies the random stream
or streams. Create the
|
Examples
Suppose you want a design to estimate the parameters in the following three-factor, seven-term interaction model:
Use rowexch
to generate a D-optimal
design with seven runs:
nfactors = 3; nruns = 7; [dRE,X] = rowexch(nfactors,nruns,'interaction','NumTries',10) dRE = -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 X = 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1
Columns of the design matrix X
are the model
terms evaluated at each row of the design dRE
.
The terms appear in order from left to right: constant term, linear
terms (1, 2, 3), interaction terms (12, 13, 23). Use X
to
fit the model, as described in Linear Regression, to response data measured at the design
points in dRE
.
Algorithms
Both cordexch
and
rowexch
use iterative search algorithms. They operate by
incrementally changing an initial design matrix X to increase
D =
|XTX|
at each step. In both algorithms, there is randomness built into the selection of the
initial design and into the choice of the incremental changes. As a result, both
algorithms may return locally, but not globally, D-optimal designs.
Run each algorithm multiple times and select the best result for your final design. Both
functions have a 'NumTries'
parameter that automates this repetition
and comparison.
At each step, the row-exchange algorithm exchanges an entire
row of X with a row from a design matrix C evaluated
at a candidate set of feasible treatments. The rowexch
function
automatically generates a C appropriate for a specified
model, operating in two steps by calling the candgen
and candexch
functions in sequence. Provide
your own C by calling candexch
directly.
In either case, if C is large, its static presence
in memory can affect computation.