Page 1 of 1

Attribute level restrictions

PostPosted: Mon Jan 27, 2025 11:25 pm
by atien
I am designing a choice experiment to explore preferences for environmental restoration, focusing on the environmental state in 2055. The experiment includes three alternatives:

No restoration program, which represents a scenario with decreasing environmental quality.
Restoration Program A, aimed at improving environmental quality.
Restoration Program B, also aimed at improving environmental quality.

The base level reflects the environmental state in 2055 if no action is taken. Therefore, the current levels of attributes can be seen as "improvements".

Design
;alts = alt1*, alt2*, np*
?np=no program, specific atribute levels related to this
;rows = 36
;block = 6
;eff = (mnl, d)
;alg = mfederov
;require:
np.drought = 0,
np.flood = 0,
np.biodiv = 0,
np.water = 0,
np.emission =0,
np.cost =0,
alt1.cost > 0,
alt2.cost >0


? efficient design, multinomial logit model, d-optimality
? attributes:
? DROUGHT = occurrence of droughts (0 increases from the current level, 1 no change from the current level, 2 decreases from the current level)
? FLOOD = occurrence of floods (0 increases from the current level, 1 no change from the current level, 2 decreases from the current level)
? BIODIV = proportion of endangered species, % (0 increases by 5%, 1 stays at current level, 2 decreases by 6%, 3 decreases by 12%)
? WATER = proportion of surface waters in excellent or good condition, %,(0 decreases by 5%, 1 stays at current level, 2 increases by 5%, 3 increases by 10%)
? EMISSION = GHG emissions from wetlands (0 increases by 5%, 1 stays at current level, 2 decreases by 10%, 3 decreases by 20%)
? COST = Cost as tax increase, € (0, 10, 20, 50, 100, 200, 500)

? small coefficients to indicate the expected sign of parameters for pilot, priors from pilot to final design

;model:
U(alt1) = drought.dummy [0.0001|0.0002] * DROUGHT[1,2,0]
+ flood.dummy [0.0001|0.0002] * FLOOD[1,2,0]
+ biodiv.dummy [0.0001|0.0002|0.0003] * BIODIV[1,2,3,0]
+ water.dummy [0.0001|0.0002|0.0003] * WATER[1,2,3,0]
+ emission.dummy [0.0001|0.0002|0.0003] * EMISSION[1,2,3,0]
+ cost [-0.0001] * COST[]
/
U(alt2) = drought.dummy * DROUGHT
+ flood.dummy * FLOOD
+ biodiv.dummy * BIODIV
+ water.dummy * WATER
+ emission.dummy * EMISSION
+ cost * COST
/
U(np) = drought.dummy * DROUGHT
+ flood.dummy * FLOOD
+ biodiv.dummy * BIODIV
+ water.dummy * WATER
+ emission.dummy * EMISSION
+ cost * COST
$

I have a few questions regarding attribute levels and restrictions:

Attribute levels for "No Program" in other alternatives:

I believe that the attribute levels for the "No Program" alternative (i.e., decreasing environmental quality) need to be present for the program alternatives as well. Otherwise, it might create issues in the experimental design? Is this correct?

Restricting the frequency of negative outcomes:

If the "No Program" attribute levels (decreasing environmental quality) do need to appear in the program alternatives, what is the best way to restrict these levels so that:
They appear less frequently across the program alternatives.
They do not appear simultaneously for multiple attributes in the same choice task (to avoid "useless" restoration programs)?

Advice on how to set these restrictions (or other solutions to the problem) would be greatly appreciated.

Best regards
Annika

Re: Attribute level restrictions

PostPosted: Tue Jan 28, 2025 3:52 pm
by Michiel Bliemer
Yes, level 0 must also appear also in alt1 and alt2 for the dummy coded attributes to make your model that you specified identifiable.
However, you can also modify your model by using only a constant and COST in your utility function for np and remove level 0 from the attributes in alt1 and alt2. This will allow you to not show level 0 in alt1 and alt2, although the constant in np now captures all status quo levels and therefore you have reduced interpretability.

In the code below:
1) I added a constant np_asc to measure the preference for "no program" relative to "program".
2) I added reject constraints to illustrate how you can ensure that level 0 does not appear more than once across each profile.
3) I added attribute level frequency constraints (0-36,..etc) to reduce the frequency with which level 0 occurs for alt1 and alt2.
And I made a few other suggestions.

Code: Select all
;alg = mfederov(candidates = 1000)
;require:
np.drought_np = 0,
np.flood_np = 0,
np.biodiv_np = 0,
np.water_np = 0,
np.emission_np =0

;reject:
alt1.drought = 0 and alt1.flood = 0,
alt1.drought = 0 and alt1.biodiv = 0,
alt1.drought = 0 and alt1.water = 0,
alt1.drought = 0 and alt1.emission = 0,
alt1.flood = 0 and alt1.biodiv = 0,
alt1.flood = 0 and alt1.water = 0,
alt1.flood = 0 and alt1.emission = 0,
alt1.biodiv = 0 and alt1.water = 0,
alt1.biodiv = 0 and alt1.emission = 0,
alt1.water = 0 and alt1.emission = 0,
alt2.drought = 0 and alt2.flood = 0,
alt2.drought = 0 and alt2.biodiv = 0,
alt2.drought = 0 and alt2.water = 0,
alt2.drought = 0 and alt2.emission = 0,
alt2.flood = 0 and alt2.biodiv = 0,
alt2.flood = 0 and alt2.water = 0,
alt2.flood = 0 and alt2.emission = 0,
alt2.biodiv = 0 and alt2.water = 0,
alt2.biodiv = 0 and alt2.emission = 0,
alt2.water = 0 and alt2.emission = 0

? efficient design, multinomial logit model, d-optimality
? attributes:
? DROUGHT = occurrence of droughts (0 increases from the current level, 1 no change from the current level, 2 decreases from the current level)
? FLOOD = occurrence of floods (0 increases from the current level, 1 no change from the current level, 2 decreases from the current level)
? BIODIV = proportion of endangered species, % (0 increases by 5%, 1 stays at current level, 2 decreases by 6%, 3 decreases by 12%)
? WATER = proportion of surface waters in excellent or good condition, %,(0 decreases by 5%, 1 stays at current level, 2 increases by 5%, 3 increases by 10%)
? EMISSION = GHG emissions from wetlands (0 increases by 5%, 1 stays at current level, 2 decreases by 10%, 3 decreases by 20%)
? COST = Cost as tax increase, € (0, 10, 20, 50, 100, 200, 500)

? small coefficients to indicate the expected sign of parameters for pilot, priors from pilot to final design

;model:
U(alt1) = drought.dummy [0.0001|0.0002] * DROUGHT[1,2,0](0-36,0-36,0-8)
+ flood.dummy [0.0001|0.0002] * FLOOD[1,2,0](0-36,0-36,0-8)
+ biodiv.dummy [0.0001|0.0002|0.0003] * BIODIV[1,2,3,0](0-36,0-36,0-36,0-6)
+ water.dummy [0.0001|0.0002|0.0003] * WATER[1,2,3,0](0-36,0-36,0-36,0-6)
+ emission.dummy [0.0001|0.0002|0.0003] * EMISSION[1,2,3,0](0-36,0-36,0-36,0-6)
+ cost [-0.0001] * COST[10,20,50,100,200,500]
/
U(alt2) = drought.dummy * DROUGHT
+ flood.dummy * FLOOD
+ biodiv.dummy * BIODIV
+ water.dummy * WATER
+ emission.dummy * EMISSION
+ cost * COST
/
U(np) = np_asc
+ drought.dummy * DROUGHT_np[1,2,0](0-36,0-36,0-36)
+ flood.dummy * FLOOD_np[1,2,0](0-36,0-36,0-36)
+ biodiv.dummy * BIODIV_np[1,2,3,0](0-36,0-36,0-36,0-36)
+ water.dummy * WATER_np[1,2,3,0](0-36,0-36,0-36,0-36)
+ emission.dummy * EMISSION_np[1,2,3,0](0-36,0-36,0-36,0-36)
+ cost * COST_np[0]
$


Michiel