help dcreate

Title

dcreate - Efficient designs for discrete choice experiments

Syntax

dcreate
fvvarlist
,
nalt(#) nset(#) bmat(name) [vmat(name) asc(numlist) fixedalt(name) maxiter(#)
criterion(#) seed(#) nrep(#) burn(#)]

genfact [, levels(name)]

blockdes newvar , nblock(#) [neval(#) seed(#)]

evaldes fvvarlist , bmat(name) [vmat(name) nrep(#) burn(#)]

Description

dcreate creates efficient designs for discrete choice experiments using the modified
Fedorov algorithm (Cook and Nachtsheim, 1980; Zwerina et al., 1996; Carlsson and Martinsson, 2003).
The algorithm maximises the D-efficiency of the design based on the covariance matrix of the
conditional logit model.

dcreate assumes that the dataset in memory contains the candidate set, i.e. the set of
alternatives from which the choice sets will be created. This will often be the full-factorial
design, which can be created using genfact.

In addition to the variables in the design dcreate creates two id variables, choice_set
and alt, where choice_set identifies the choice set and alt identifies the
alternatives within the choice set.

After running dcreate the blockdes command can be used to divide the design into blocks.
This is useful for large designs where it is considered infeasible for a single respondent to complete
all of the choice sets.

The evaldes command can be used to evaluate the D-efficiency of a generated design for
alternative model specifications and/or coefficient priors.

Options for dcreate

nalt(#) is required; it specifies the number of alternatives in the design.

nset(#) is required; it specifies the number of choice sets in the design.

bmat(name) is required; it specifies a matrix of coefficient priors used to evaluate
the D-efficiency of the design.

vmat(name) optionally specifies the covariance matrix of the coefficient priors. This allows for
uncertainty in the priors by using a Bayesian design (Sándor and Wedel, 2001). The priors are assumed to
be normally distributed, and the D-efficiency measure is approximated using simulation (see nrep
and burn below for related options). Specifying this option significantly increases the time
required to generate a design.

asc(numlist) include alternative-specific constants (ASCs) for the alternatives in numlist.
Coefficients for the ASCs must be included as the final elements of bmat.

fixedalt(name) specifies a matrix with attribute levels for an additional alternative
in the design. The attribute levels for this alternative are held constant at the specified
levels in all of the generated choice sets. This option can for example be used to include an
"opt-out" (or "no purchase") alternative in the design (see Example 3 below).

maxiter(#) specifies the maximum number of iterations for the modified Fedorov
algorithm; default is maxiter(10).

criterion(#) specifies the convergence criterion for the modified Fedorov algorithm;
default is criterion(0.00001).

seed(#) sets the random-number seed; default is seed(435).

nrep(#) specifies the number of draws used for the simulation. The default is nrep(50).
This option is only relevant if vmat has been specified.

burn(#) specifies the number of initial sequence elements to drop when creating the Halton
sequences used in the simulation. The default is burn(15). This option is only relevant if
vmat has been specified.

Options for genfact

levels(name) is required; it specifies a matrix containing the levels of the attributes in the design.

Options for blockdes

nblock(#) is required; it specifies the number of blocks.

neval(#) specifies the number of evaluations for the blocking algorithm. The default is
neval(10). In each evaluation a blocking variable is randomly generated and its association
with the design variables is measured using a series of Pearson chi-squared tests. The blocking
variable with the lowest association with the design attributes is chosen as the final blocking
variable. Important: blockdes assumes that no changes to the dataset have been made after
running dcreate. Any changes are likely to affect the quality of the blocking.

seed(#) sets the random-number seed; default is seed(435).

Examples

The following examples create choice designs with 2 alternatives and 16 choice sets.
There are 2 four-level attributes and 4 two-level attributes in the design.

Example 1: All the attributes are treated as qualitative using dummy coding.

Create a dataset containing the full-factorial using genfact. The four-level
attributes are coded 1/2/3/4 and the two-level attributes 1/2:

. matrix levmat = 4,4,2,2,2,2

. genfact, levels(levmat)

Define b, the coefficient matrix. In this and the following examples all of
the coefficients are assumed to be equal to zero:

. matrix b = J(1,10,0)

Create a design with 16 choice sets using dcreate. Dummy coding of the design
attributes is specified using factor variable notation (see fvvarlist). The
lowest level (1) is treated as the base level:

. dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) bmat(b)

Divide the design into two blocks with 8 choice sets each using blockdes:

. blockdes block, nblock(2)

Example 2: As Example 1 but including an interaction between attributes x3 and x4:

. matrix levmat = 4,4,2,2,2,2

. genfact, levels(levmat)

. matrix b = J(1,11,0)

. dcreate i.x1 i.x2 i.x3##i.x4 i.x5 i.x6, nalt(2) nset(16) bmat(b)

Evaluate the efficiency of the generated design for the model specification in Example 1:

. matrix b = J(1,10,0)

. evaldes i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, bmat(b)

Example 3: As Example 1 but including an additional "opt-out" alternative with an associated alternative-specific constant:

. matrix levmat = 4,4,2,2,2,2

. genfact, levels(levmat)

Create a matrix containing the attribute levels for the opt-out alternative. All the attribute levels are
set to the base level (1):

. matrix optout = J(1,6,1)

. matrix b = J(1,11,0)

. dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) fixedalt(optout) asc(3) bmat(b)

Example 4: As Example 1 but allowing for uncertainty in the priors using a Bayesian design:

. matrix levmat = 4,4,2,2,2,2

. genfact, levels(levmat)

. matrix b = J(1,10,0)

Define V, the coefficient covariance matrix, which in this example is assumed to be equal
to the identity matrix:

. matrix V = I(10)

. dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) bmat(b) vmat(V)

References

Carlsson F, Martinsson P. 2003. Design techniques for stated preference methods in health
economics. Health Economics 12: 281-294.

Cook RD, Nachtsheim CJ. 1980. A comparison of algorithms for constructing exact D-optimal
designs. Technometrics 22: 315-324.

Sándor Z, Wedel M. 2001. Designing conjoint choice experiments using managers’
prior beliefs. Journal of Marketing Research 38: 430–444.

Zwerina K, Huber J, Kuhfeld W. 1996. A general method for constructing efficient choice designs.
Working Paper, Fuqua School of Business, Duke University.

Author

This command was written by Arne Risa Hole (a.r.hole@sheffield.ac.uk),
Department of Economics, University of Sheffield. Comments and suggestions are welcome.