Computes an optimal approximate design under the standard (size) constraint using one of three methods.
od_REX(Fx, crit="D", h=NULL, w1=NULL, alg.AA="REX",
eff=0.999999, it.max=Inf, t.max=60, echo=TRUE, track=TRUE)
A list with the following components:
The call of the function.
The resulting exact design.
The indices of the support of w.best
.
The weights of w.best
on the support.
The information matrix of w.best
.
The criterion value of w.best
.
A lower bound on the efficiency of w.best
with respect to the optimal approximate design.
The number of iterations performed.
The actual time of the computation.
the n
times m
(where m>=2
, m<=n
) matrix containing all candidate regressors (as rows), i.e., n
is the number of candidate design points, and m
(where m>=2
) is the number of parameters
the optimality criterion. Possible values are "D"
, "A"
, "I"
, "C"
and "c"
.
a non-zero vector of length m
corresponding to the coefficients of the linear parameter combination of interest. If crit
is not "C"
nor "c"
then h
is ignored. If crit
is "C"
or "c"
and h=NULL
then h
is assumed to be c(0,...,0,1)
.
a real vector of length n
with non-negative components, representing the initial design. The information matrix of w1
must be nonsingular. It should have a small support (e.g., m
) provided that alg.AA="REX"
and it should have the full support of length n
provided that alg.AA="MUL"
. The argument w1
can also be NULL
; in that case a non-singular initial design is generated by od_PIN
.
the computational method to be applied; possible choices are "REX"
, "MUL"
, and "VDM"
. For crit="c"
, argument alg.AA
is ignored and the function uses the rapid linear programming approach (see the references).
the efficiency for the stopping rule in the interval (0,1)
. The algorithm will be stopped if a lower bound on the efficiency of the actual design is equal or greater than eff
.
the maximum allowed number of iterations of the method.
the time limit for the computation.
Print the call of the function?
Trace the computation?
Radoslav Harman, Lenka Filova
The function implements three algorithms for the computation of optimal approximate designs with respect to the criteria of D-, A-, I-, and C-optimality: the standard vertex-direction method ("VDM"
), the standard multiplicative method ("MUL"
), and the randomized exchange method ("REX"
). The first two methods are classical and the method REX is proposed in Harman et al (2019).
For the specific criterion of c-optimality, the function runs the LP-based method from Harman and Jurik (2008).
The information matrix of w1
should have the reciprocal condition number of at least 1e-5
. Even if no initial design is provided, the model should be non-singular in the sense that there exists an approximate design w
with an information matrix that is not severely ill-conditioned. If this requirement is not satisfied, the computation may fail, or it may produce a deficient design. If w1=NULL
, the initial design is computed with od_PIN
.
Since the result is a normalized approximate design, it only gives recommended proportions of trials in individual design points. To convert it to an optimal approximate design of size N (under the standard, i.e., size, constraints), just multiply w.best
by N. To obtain an efficient exact design with N trials, w.best
must be multiplied by N and the result should be properly rounded to the neighboring integers by, for example, od_PUK
. However, it is often more efficient to directly use od_KL
to obtain an efficient exact design of size N.
Harman R, Jurik T (2008). Computing c-optimal experimental designs using the simplex method of linear programming. Computational Statistics and Data Analysis 53 (2008) 247-254
Harman R, Filova L, Richtarik P (2019). A randomized exchange algorithm for computing optimal approximate designs of experiments. Journal of the American Statistical Association, 1-30.
od_KL, od_RC, od_MISOCP, od_AQUA
if (FALSE) {
# Note: Many small examples of od_REX are in other help files.
# Compute an essentially perfect D-optimal design
# on 10 million design points in a few seconds
n <- 10000000; m <- 5
Fx <- matrix(rnorm(n*m), ncol = m)
w <- od_REX(Fx, t.max = 10)$w.best
Fx.small <- od_DEL(Fx, w)$Fx.keep
w <- od_REX(Fx.small, eff = 0.999999999)$w.best
od_plot(Fx.small, w, Fx.small[, 1:2], dd.pch = 16, dd.size = 0.35)
}
Run the code above in your browser using DataLab