To create realistic choice sets with trade-offs between the alternatives, I need to introduce a few design constraints, which I am unclear how to do in this particular case.
For context:
I would like to understand which information types transit users most need to plan a journey. There are 8 attributes that represent information types with attribute levels representing the quality/certainty of the information types: 4 have 3 levels (exact, estimate, none) and 4 have 2 levels (exact, none). So for example, 'frequencies' is an attribute, and a user could choose to say they need either 'exact', 'estimated' or 'no' frequency information to plan a journey.
In a given choice set, there are 3 alternatives.
On running the design without conditions, I see that the proposed designs would include choice sets that would have 'no-duh' choices (e.g. 1 alternative has all 'exact' attribute levels, 1 alternative has a mix of 'estimate' and 'none' levels, and 1 alternative has all 'none' levels save for 1 'estimate' level.)
I would like to include the following rules:
1) Each alternative must contain at least 1 'exact' attribute level
2) Each alternative must contain exactly 4 'none' attribute levels
How would I go about incorporating in such rules? Is there a source besides the NGene User Manual with syntax terms that can be used and examples?
In the design below, [0] represents 'none' and [1] represents 'exact':
Design
;alts = alt1*, alt2*, alt3*
;rows = 24
;block = 6
;eff = (mnl, d)
; model:
U(alt1) =
+ b2.dummy[-.1|.1] * fare[0,1,2]
+ b3.dummy[-.1|.1] * departure[0,1,2]
+ b4.dummy[-.1|.1] * arrival[0,1,2]
+ b5.dummy[-.1|.1] * frequency[0,1,2]
+ b6.dummy[-.1] * safeon[0,1]
+ b7.dummy[-.1] * safewait[0,1]
+ b8.dummy[-.1] * safewalk[0,1]
+ b9.dummy[-.1] * identifier[0,1]
/
U(alt2) = b2.dummy*fare + b3.dummy*departure + b4.dummy*arrival + b5.dummy*frequency + b6.dummy*safeon + b7.dummy*safewait + b8.dummy*safewalk + b9.dummy*identifier /
U(alt3) = b2.dummy*fare + b3.dummy*departure + b4.dummy*arrival + b5.dummy*frequency + b6.dummy*safeon + b7.dummy*safewait + b8.dummy*safewalk + b9.dummy*identifier
$