To keep more control over the choice set and check whether there are any strange choice tasks, I suggest you do the following.
Step 1: Create and inspect candidate set
- Code: Select all
design ? Context 1 Scenario A design
;alts = sq*, alt1*, alt2*,
;rows = 1500
;fact
;require: ? fixed reference level for status quo option
sq.type=0,
sq.emission=0,
sq.cost=700,
sq.time=90
? 0=type0, 1=type1, 2=type2, 3=type3
;reject:
?time for type1 is always equal to type0,which is 90
alt1.type=1 AND alt1.time = 105 OR alt1.time = 120 OR alt1.time = 135 OR alt1.time = 150,
alt2.type=1 AND alt2.time = 105 OR alt2.time = 120 OR alt2.time = 135 OR alt2.time = 150,
?time for type2 is always the highest
alt1.type=2 AND alt1.time <= alt2.time,
alt2.type=2 AND alt2.time <= alt1.time,
alt1.type=2 AND alt1.time = 90,
alt2.type=2 AND alt2.time = 90,
? time for type3 is always higher than type0
alt1.type=3 AND alt2.type=0 AND alt1.time <= alt2.time,
alt2.type=3 AND alt1.type=0 AND alt2.time <= alt1.time,
alt1.type=3 AND alt1.time = 90,
alt2.type=3 AND alt2.time = 90,
? time for type3 is always higher than type1
alt1.type=3 AND alt2.type=1 AND alt1.time <= alt2.time,
alt2.type=3 AND alt1.type=1 AND alt2.time <= alt1.time,
? emissions for type0 is the base level, so always 0
alt1.type=0 AND alt1.emission=10 OR alt1.emission=35 OR alt1.emission=60 OR alt1.emission=80 OR alt1.emission=100,
alt2.type=0 AND alt2.emission=10 OR alt2.emission=35 OR alt2.emission=60 OR alt2.emission=80 OR alt2.emission=100,
? emissions for type2 and type3 are always 100
alt1.type=2 AND alt1.emission=10 OR alt1.emission=35 OR alt1.emission=60 OR alt1.emission=80 OR alt1.emission=0,
alt1.type=3 AND alt1.emission=10 OR alt1.emission=35 OR alt1.emission=60 OR alt1.emission=80 OR alt1.emission=0,
alt2.type=2 AND alt2.emission=10 OR alt2.emission=35 OR alt2.emission=60 OR alt2.emission=80 OR alt2.emission=0,
alt2.type=3 AND alt2.emission=10 OR alt2.emission=35 OR alt2.emission=60 OR alt2.emission=80 OR alt2.emission=0,
? emissions for type1 range from 10% to 100%
alt1.type=1 AND alt1.emission=0,
alt2.type=1 AND alt2.emission=0,
? sq.type=0, don’t want a design that has three type0 option
alt1.type=0 AND alt2.type=0
;model:
U(alt1) = b0[(n,0.469650837,0.373433012)]
+ btype.dummy[(n,0.24,0.494067)|(n,0.610872,0.431096)|(n,0.231311,0.418886)]*type[1,2,3,0] ?the expected preference order: type2>type1>type3>type0; 0=type0, 1=type1, 2=type2, 3=type3
+ bemission[(n,0.004666,0.004099)]*emission[0,10,35,60,80,100]
+ bcost[(n,-0.0028,0.00054)]*cost[420,560,700,840,980]
+ btime[(n,-0.00998,0.006987)]*time[90,105,120,135,150]
/
U(alt2) = b0
+ btype*type
+ bemission*emission
+ bcost*cost
+ btime*time
/
U(sq) = btype*type
+ bemission*emission
+ bcost*cost
+ btime*time
$
Step 2: Save this design as candidateset.ngd
Step 3: Generate a Bayesian efficient design using this candidate set.
- Code: Select all
design ? Context 1 Scenario A design
;alts = sq*, alt1*, alt2*,
;rows = 36
;block= 12
;eff = (mnl,d,median) ? for context 2 I used ;eff = (mnl,d,mean) as 102 data collected
;bdraws = sobol(500)
;alg = mfederov (candidates=candidateset.ngd)
;require:
sq.type=0
;model:
U(alt1) = b0[(n,0.469650837,0.373433012)]
+ btype.dummy[(n,0.24,0.494067)|(n,0.610872,0.431096)|(n,0.231311,0.418886)]*type[1,2,3,0] ?the expected preference order: type2>type1>type3>type0; 0=type0, 1=type1, 2=type2, 3=type3
+ bemission[(n,0.004666,0.004099)]*emission[0,10,35,60,80,100] (3-36,3-36,3-36,3-36,3-36,3-36)
+ bcost[(n,-0.0028,0.00054)]*cost[420,560,700,840,980](4-36,4-36,4-36,4-36,4-36)
+ btime[(n,-0.00998,0.006987)]*time[90,105,120,135,150](4-36,4-36,4-36,4-36,4-36)
/
U(alt2) = b0
+ btype*type
+ bemission*emission
+ bcost*cost
+ btime*time
/
U(sq) = btype*type
+ bemission*emission_sq[0]
+ bcost*cost_sq[700]
+ btime*time_sq[90]
$
When I do this, the candidate set does not have any alternatives that are identical to the status quo and the design does not suffer from this issue. In my script the candidate set is generated slightly differently, which allows the dominance constraints to be applied more properly because in my script the attributes for the status quo alternative have the same name as the attributes in the other alternatives.
Michiel