View source: R/efficiency_algorithms.R
| Modfed | R Documentation |
The algorithm swaps every profile of an initial start design with candidate profiles. By doing this, it tries to minimize the D(B)-error, based on a multinomial logit model. This routine is repeated for multiple starting designs.
Modfed( cand.set, n.sets, n.alts, par.draws, alt.cte = NULL, no.choice = FALSE, start.des = NULL, parallel = TRUE, max.iter = Inf, n.start = 12, best = TRUE )
cand.set |
A numeric matrix in which each row is a possible profile. The
|
n.sets |
Numeric value indicating the number of choice sets. |
n.alts |
Numeric value indicating the number of alternatives per choice set. |
par.draws |
A matrix or a list, depending on |
alt.cte |
A binary vector indicating for each alternative whether an
alternative specific constant is desired. The default is |
no.choice |
A logical value indicating whether a no choice alternative
should be added to each choice set. The default is |
start.des |
A list containing one or more matrices corresponding to initial start design(s). The default is |
parallel |
Logical value indicating whether computations should be done
over multiple cores. The default is |
max.iter |
A numeric value indicating the maximum number allowed
iterations. The default is |
n.start |
A numeric value indicating the number of random start designs to use. The default is 12. |
best |
A logical value indicating whether only the best design should be
returned. The default is |
Each iteration will loop through all profiles from the initial design,
evaluating the change in D(B)-error for every profile from cand.set.
The algorithm stops when an iteration occured without replacing a profile or
when max.iter is reached.
By specifying a numeric vector in par.draws, the D-error will be
calculated and the design will be optimised locally. By specifying a matrix,
in which each row is a draw from a multivariate distribution, the DB-error
will be calculated, and the design will be optimised globally. Whenever there
are alternative specific constants, par.draws should be a list
containing two matrices: The first matrix containing the parameter draws for
the alternative specific constant parameters. The second matrix containing
the draws for the rest of the parameters.
The DB-error is calculated by taking the mean over D-errors. It could be that
for some draws the design results in an infinite D-error. The percentage of
draws for which this was true for the final design can be found in the output
inf.error.
Alternative specific constants can be specified in alt.cte. The length
of this binary vector should equal n.alts, were 0 indicates the
absence of an alternative specific constant and 1 the opposite.
start.des is a list with one or several matrices corresponding to
initial start design(s). In each matrix each
row is a profile. The number of rows equals n.sets * n.alts, and the
number of columns equals the number of columns of cand.set + the
number of non-zero elements in alt.cte. If start.des
= NULL, n.start random initial designs will be
generated. If start designs are provided, n.start is ignored.
If no.choice is TRUE, in each choice set an alternative with
one alternative specific constant is added. The return value of the
D(B)-error is however based on the design without the no choice option.
When parallel is TRUE, detectCores will
be used to decide upon the number of available cores. That number minus 1
cores will be used to search for efficient designs. The computation time will
decrease significantly when parallel = TRUE.
If best = TRUE the design with the lowest D(B)-error is returned.
If best = FALSE, the results of all (provided) start designs are
returned.
design |
A numeric matrix wich contains an efficient design. |
error |
Numeric value indicating the D(B)-error of the design. |
inf.error |
Numeric
value indicating the percentage of draws for which the D-error was
|
probs |
Numeric matrix containing the probabilities of
each alternative in each choice set. If a sample matrix was provided in
|
idefixidefix
## Not run:
# DB-efficient designs
# 3 Attributes, all dummy coded. 1 alternative specific constant = 7 parameters
cand.set <- Profiles(lvls = c(3, 3, 3), coding = c("D", "D", "D"))
mu <- c(0.5, 0.8, 0.2, -0.3, -1.2, 1.6, 2.2) # Prior parameter vector
v <- diag(length(mu)) # Prior variance.
set.seed(123)
pd <- MASS::mvrnorm(n = 10, mu = mu, Sigma = v) # 10 draws.
p.d <- list(matrix(pd[,1], ncol = 1), pd[,2:7])
Modfed(cand.set = cand.set, n.sets = 8, n.alts = 2,
alt.cte = c(1, 0), parallel = FALSE, par.draws = p.d, best = FALSE)
# DB-efficient design with start design provided.
# 3 Attributes with 3 levels, all dummy coded (= 6 parameters).
cand.set <- Profiles(lvls = c(3, 3, 3), coding = c("D", "D", "D"))
mu <- c(0.8, 0.2, -0.3, -0.2, 0.7, 0.4) # Prior mean (total = 5 parameters).
v <- diag(length(mu)) # Prior variance.
sd <- list(example_design)
set.seed(123)
ps <- MASS::mvrnorm(n = 10, mu = mu, Sigma = v) # 10 draws.
Modfed(cand.set = cand.set, n.sets = 8, n.alts = 2,
alt.cte = c(0, 0), parallel = FALSE, par.draws = ps, start.des = sd)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.