I’m designing a choice experiment on protection infrastructures against nature hazards. It is a d-efficient design, with unlabelled alternatives and constraints on protection infrastructure and cost attributes. I have 6 attributes: 5 categorical ones [biodiversity (biodiv), recreation (recrea), natural resource use (NRuse), risk, infrastructure] and 1 continuous (price).
Here are specificities regarding my three alternatives:
- alt1 and alt2:
o all levels are possible for biodiv, recrea, NRuse
o risk must have level 1
o infrastructure must have either level 1,2 or 3
- alt3
o all levels are fixed such as
o biodiv must have level 2
o recrea must have level 0
o NRuse must have level 0
o risk must have level 0
o infrastructure must have level 0
Despite multiple attempts, going through the manual and the forum posts, I’m stuck with errors and would appreciate your guidance.
Here is what I tried and the issues I encountered:
- I set the levels of alt3 as constants, but of course, the constants are viewed as additional attributes and not as levels of the given attributes
- alt3 has the same utility function as alt1 and alt2, but I added restrictions with “reject”. I get the error message “The ';reject' property contains an attribute that does not exist in the design. '[2,1]’”. If I want to exclude several levels for an attribute, do I have to write the restriction for each level separately?
- (Code below) when I set the level to a specific number for alt3, I get the error message “Two identically named attributes do not have consistently specified levels: 'alt3.biodiv', 'alt1.biodiv'”
- Code: Select all
Design
alts = alt1*, alt2*, alt3;
rows = 48;
block = 4;
eff = (mnl,d);
;model:
u(alt1) = b1.dummy[0|0]*biodiv[2,1,0] + b2.dummy[0|0]*recrea[2,1,0] + b3.dummy[0|0]*NRuse[2,1,0] + b4.dummy[0|0]*infrastructure[3,2,1] + b5*risk[1] + b6*price[25,50,100,150,200,400] /
u(alt2) = b1.dummy[0|0]*biodiv[2,1,0] + b2.dummy[0|0]*recrea[2,1,0] + b3.dummy[0|0]*NRuse[2,1,0] + b4.dummy[0|0]*infrastructure[3,2,1] + b5*risk[1] + b6*price[25,50,100,150,200,400] /
u(alt3) = b1*biodiv[2] + b2*recrea[0] + b3*NRuse[0] + b4*infrastructure[0] + b5*risk[0] + b6*price[0]
;cond:
if(alt2.infrastructure = 3, alt2.price = [150,200,400]),
if(alt1.infrastructure = 3, alt1.price = [150,200,400]),
if(alt2.infrastructure = 1, alt2.price = [25,50,100,150,200]),
if(alt1.infrastructure = 1, alt1.price = [25,50,100,150,200]),
if(alt2.price = 25, alt1.price=[25,50,100,150,200]),
if(alt1.price = 25, alt2.price=[25,50,100,150,200])
$
Any guidance on the way forward to make it work would be greatly appreciated!
Best regards,
Julie