Dominance with reference values

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Dominance with reference values

Postby pattyp12 » Wed May 13, 2015 12:59 am

Hello,

I looked through the forum to make sure my question isn't just like another one posted, but I wasn't able to find one exactly like this. Any help would be much appreciated!

I am conducting a choice survey about projects that can improve environmental benefits. Therefore, I want to have 2 options that respondent can pick with varying levels of environmental benefits that are not dominated by the reference status quo of my study area.

I have two sets of code for a CE design - one with the levels of the attributes and one with a pivot design:

Design
; alts = alt1, alt2, alt3
; eff = (mnl,d)
; rows = 80
; block = 10
; rseed = 12345
; model:
U(alt1) = b1 + b2[0.1]*WQ[155]*WQP[1]+ b3[0.1]*CS[17] + b4[0.1]*AH[.6] + b5[0.1]*GNBH[7] + b6[-0.1]*IC[0] /

U(alt2) = b2*WQ1[110,125,140,145,165,170,185,200]*WQP1[.1,.25,.50,.75,.90]+ b3*CS1[13.5,15,17,19,20.5] + b4*AH1[.40,.50,.60,.70,.80] + b5*GNBH1[5.5,6,7,8,8.5]
+ b6*IC1[10,30,50,70,90,110,130,150,170,190] /

U(alt3) = b2*WQ1*WQP1 + b3*CS1 + b4*AH1 + b5*GNBH1 + b6*IC1
$


Where: WQ = a measure of water quality, WQP = the probability that measurement of water quality is reached, CS = a measure of carbon storage, AH = the percentage of time throughout the year a river level supports aquatic habitat, GNBH = areas that support ground-nesting bird habitat, and IC = individual cost.

When I run this code, NGENE is able to come up with a design. I believe that in order to ensure that the status quo does not dominate the other alternatives, however, I will need to convert this coding into a pivot design so that I will be able to use the * command in the alternatives line of the code. I have tried to convert to a pivot design, but NGENE is not able to come up with a valid design after 1000 evaluations:

Design
; alts = alt1, alt2, alt3
; eff = (mnl,d)
; rows = 80
; rseed = 12345
; model:
U(alt1) = b1 + b2[0.1]*WQ.ref[155]*WQP.ref[1] + b3[0.1]*CS.ref[17] + b4[0.1]*AH.ref[.6] + b5[0.1]*GNBH.ref[7] + b6[-0.1]*IC.ref[0] /

U(alt2) = b2*WQ.piv[-45,-30,-15,-10,10,15,30,45]*WQP.piv[-.9,-.75,-.50,-.25,-.10]+ b3*CS.piv[-3.5,-2,0,2,3.5] + b4*AH.piv[-.2,-.1,0,.1,.2] + b5*GNBH.piv[-1.5,-1,0,1,1.5] + b6*IC.ref[10,30,50,70,90,110,130,150,170,190] /

U(alt3) = b2*WQ.piv[-45,-30,-15,-10,10,15,30,45]*WQP.piv[-.90,-.75,-.50,-.25,-.10]+ b3*CS.piv[-3.5,-2,0,2,3.5] + b4*AH.piv[-.2,-.1,0,.1,.2] + b5*GNBH.piv[-1.5,-1,0,1,1.5] + b6*IC.ref[10,30,50,70,90,110,130,150,170,190]
$


I'm confused as to why this is so, since the first set of coding works and the second set is just like the first only phrased differently. I'm sure there is a user error here!

Thanks for your time,
Pat
pattyp12
 
Posts: 6
Joined: Sun May 10, 2015 9:24 am

Re: Dominance with reference values

Postby Michiel Bliemer » Wed May 13, 2015 9:50 am

Note that you cannot have a constant in an alternative that already contains all constants. When I remove the constant (b1) it works fine:

Code: Select all
Design
; alts = alt1, alt2, alt3
; eff = (mnl,d)
; rows = 80
; rseed = 12345
; model:
U(alt1) = b2[0.01]*WQ.ref[155]*WQP.ref[1] + b3[0.01]*CS.ref[17] + b4[0.01]*AH.ref[.6] + b5[0.01]*GNBH.ref[7] + b6[-0.01]*IC.ref[0] /
U(alt2) = b2*WQ.piv[-45,-30,-15,-10,10,15,30,45]*WQP.piv[-.9,-.75,-.50,-.25,-.10]+ b3*CS.piv[-3.5,-2,0,2,3.5] + b4*AH.piv[-.2,-.1,0,.1,.2] + b5*GNBH.piv[-1.5,-1,0,1,1.5] + b6*IC.ref[10,30,50,70,90,110,130,150,170,190] /
U(alt3) = b2*WQ.piv[-45,-30,-15,-10,10,15,30,45]*WQP.piv[-.90,-.75,-.50,-.25,-.10]+ b3*CS.piv[-3.5,-2,0,2,3.5] + b4*AH.piv[-.2,-.1,0,.1,.2] + b5*GNBH.piv[-1.5,-1,0,1,1.5] + b6*IC.ref[10,30,50,70,90,110,130,150,170,190]
$


Note that you do not want the constant there anyway, especially if you are checking for dominance, since this assumes that all alternatives are generic and identically specified (so no alternative-specific constants).

Note that ;rseed is only used for mixed logit models with random coefficients, so it does not do anything here.

You will find that adding the * will not work because you are asking for 80 rows. Using the default swapping algorithm in Ngene will not be able to generate a design without any dominant alternatives. For such heavily constrained designs, it is best to use the modified Federov algorithm, such as below:

Code: Select all
Design
;alts = alt1*, alt2*, alt3*
;eff = (mnl,d)
;rows = 80
;alg = mfederov(candidates = 1000)
;require:
alt1.WQ = 155, alt1.WQP = 1, alt1.CS = 17, alt1.AH = 0.6, alt1.GNBH = 7, alt1.IC = 0,
alt2.WQ <> 155, alt2.WQP < 1, alt2.IC > 0,
alt3.WQ <> 155, alt3.WQP < 1, alt3.IC > 0
;model:
U(alt1) = b2[0.1]*WQ[110,125,140,145,155,165,170,185,200]*WQP[0.1,0.25,0.50,0.75,0.90,1]+ b3[0.1]*CS[13.5,15,17,19,20.5] + b4[0.1]*AH[0.40,0.50,0.60,0.70,0.80] + b5[0.1]*GNBH[5.5,6,7,8,8.5] + b6[-0.1]*IC[0,10,30,50,70,90,110,130,150,170,190] /
U(alt2) = b2*WQ*WQP + b3*CS + b4*AH + b5*GNBH + b6*IC /
U(alt3) = b2*WQ*WQP + b3*CS + b4*AH + b5*GNBH + b6*IC
$


This works (but you have to be patient for Ngene to first generate the candidate set, this may take a minute). Further note that the mfederov algorithm lets go of attribute level balance, so in order to have some attribute level balance (if required), you will have to set upper and lower boundaries on the times each attribute level appears, e.g. GNBH[5.5,6,7,8,8,5](10-18,10-18,10-18,10-18,10-18).

Finally, please check your priors, they are all the same while your attribute levels are sometimes very small (0.40) or very large (200). If you are unsure about the coefficients, it is best to use values close to zero (e.g., 0.001 or -0.001) while ensuring that the sign is correct. Even better is to use Bayesian priors.
Michiel Bliemer
 
Posts: 1733
Joined: Tue Mar 31, 2009 4:13 pm

Re: Dominance with reference values

Postby pattyp12 » Thu May 14, 2015 1:05 am

Wow, thank you for the very thorough response! I am about to do a pilot study (granted, with options that will sometimes be dominated by the status quo) so hopefully I'll have better priors to go on when I go through your suggestions.

Thanks again!
Pat
pattyp12
 
Posts: 6
Joined: Sun May 10, 2015 9:24 am

Re: Dominance with reference values

Postby pattyp12 » Sat May 30, 2015 3:18 am

https://drive.google.com/a/my.uri.edu/file/d/0B_fbBPhXEuTTXy16N0k2OWFVLTA/view?usp=sharing

Hi Michiel,

Thanks again for your response to my earlier question. Since then I have made some tweaks to my choice experiment design. I am having a lot of trouble getting it to work in NGENE, however. I assume that I am either doing something wrong or have made the code a little too complicated, but I would really appreciate your opinion anyway.

I am interested in looking at probability weighting and evidence of loss aversion for changes in environmental benefits. There are 4 attributes: The water quality and aquatic habitat attributes have uncertainty associated with them, the carbon storage attribute is presented with certainty, and there is a cost attribute. I have included a link to an example of a choice scenario to give you an idea of what I'm trying to model in case my code doesn't reflect it well. I am trying to come up with a design that I can pretest to get better priors.

I have tried the following code, but NGENE freezes up on me:

Design
;alts = alt1*, alt2*, alt3*
;eff = (mnl,d)
;rows = 63
;block = 9
;alg = mfederov(candidates = 1000)
;require:
alt1.WQ1 = 155, alt1.WQ1P = 100, alt1.AH1 = 7, alt1.AH1P = 100, alt1.CS = 17, alt1.IC = 0,
alt2.WQ1 <> 155, alt2.WQ1P < 100, alt2.AH1 <> 7, alt2.AH1P < 100, alt2.IC < 0,
alt3.WQ1 <> 155, alt3.WQ1P < 100, alt3.AH1 <> 7, alt3.AH1P < 100, alt3.IC < 0
;model:
U(alt1) = b1[0.001]*WQ1[110,125,140,145,155,165,170,185,200]*WQ1P[10,25,45,55,75,90,100] + b2[0.001]*WQ2[155]*WQ2P[fcn(100-alt1.WQ1P)]
+ b3[0.001]*AH1[4,5,6,7,8,9,10]*AH1P[10,25,45,55,75,90,100] + b4[0.001]*AH2[7]*AH2P[fcn(100-alt1.AH1P)]
+ b5[0.001]*CS[14,15,16,17,18,19,20] + b6[0.001]*IC[0,-10,-30,-50,-70,-90,-110,-130,-150] /
U(alt2) = b1*WQ1*WQ1P + b2*WQ2[155]*WQ2P[fcn(100-alt2.WQ1P)] + b3*AH1*AH1P + b4*AH2*AH2P[fcn(100-alt2.AH1P)] + b5*CS + b6*IC /
U(alt3) = b1*WQ1*WQ1P + b2*WQ2[155]*WQ2P[fcn(100-alt3.WQ1P)] + b3*AH1*AH1P + b4*AH2*AH2P[fcn(100-alt3.AH1P)] + b5*CS + b6*IC $

I thought that maybe the problem was happening because of the high number of levels so I tried to drastically reduce the levels to see if NGENE wouldn't freeze up, but that didn't work:

Design
;alts = alt1*, alt2*, alt3*
;eff = (mnl,d)
;rows = 9
;block = 1
;alg = mfederov(candidates = 1000)
;require:
alt1.WQ1 = 155, alt1.WQ1P = 100, alt1.AH1 = 7, alt1.AH1P = 100, alt1.CS = 17, alt1.IC = 0,
alt2.WQ1 <> 155, alt2.WQ1P < 100, alt2.AH1 <> 7, alt2.AH1P < 100, alt2.IC < 0,
alt3.WQ1 <> 155, alt3.WQ1P < 100, alt3.AH1 <> 7, alt3.AH1P < 100, alt3.IC < 0
;model:
U(alt1) = b1[0.001]*WQ1[145,155,165]*WQ1P[25,75,100] + b2[0.001]*WQ2[155]*WQ2P[fcn(100-alt1.WQ1P)]
+ b3[0.001]*AH1[4,7,10]*AH1P[25,75,100] + b4[0.001]*AH2[7]*AH2P[fcn(100-alt1.AH1P)]
+ b5[0.001]*CS[15,17,19] + b6[0.001]*IC[0,-10,-30] /
U(alt2) = b1*WQ1*WQ1P + b2*WQ2[155]*WQ2P[fcn(100-alt2.WQ1P)] + b3*AH1*AH1P + b4*AH2*AH2P[fcn(100-alt2.AH1P)] + b5*CS + b6*IC /
U(alt3) = b1*WQ1*WQ1P + b2*WQ2[155]*WQ2P[fcn(100-alt3.WQ1P)] + b3*AH1*AH1P + b4*AH2*AH2P[fcn(100-alt3.AH1P)] + b5*CS + b6*IC $

So now, I'm thinking that I have too many constraints. I think the dominance constraint might be the biggest constraint but I don't want to get rid of it because the status quo is free and the other two options cost money so I think they need to have at least one attribute level (either the water quality, aquatic habitat, or carbon storage) to have a value greater than the status quo. In fact, I think it would be ok for all of those attributes to be above the status quo values because they always cost more money than the status quo. But, I am completely open to any suggestions or codings that would help me achieve my goal of having at least one of the attributes in the other projects better than the status quo.

So, to sum up, my questions are 1) does my code seem reasonable given the choice example that I have provided and 2) do you have any suggestions as to how I can fix my code for the design?

I hope this wasn't too confusing. I also REALLY appreciate your time!

Thanks,
Pat
pattyp12
 
Posts: 6
Joined: Sun May 10, 2015 9:24 am

Re: Dominance with reference values

Postby Michiel Bliemer » Sat May 30, 2015 5:07 pm

A few things:

1. Your WQ[155] has no variation, so should be removed, I am not sure why you need this interaction effect with a constant. I have put it into the b2 coefficient, i.e. b2[0.155].
2. Your design is indeed very constraint, it seems difficult to generate 1000 candidates. I tried it with 2 alternatives below and only 95 candidates exist with these two alternatives (so I set it to 80).

Code: Select all
Design
;alts = alt1*, alt2*
;eff = (mnl,d)
;rows = 9
;alg = mfederov(candidates = 80)
;require:
alt1.WQ1 = 155, alt1.WQ1P = 100, alt1.AH1 = 7, alt1.AH1P = 100, alt1.CS = 17, alt1.IC = 0,
alt2.WQ1 <> 155, alt2.WQ1P < 100, alt2.AH1 <> 7, alt2.AH1P < 100, alt2.IC < 0
;model:
U(alt1) = b1[0.001]*WQ1[145,155,165]*WQ1P[25,75,100] + b2[0.155]*WQ2P[fcn(100-alt1.WQ1P)]
+ b3[0.001]*AH1[4,7,10]*AH1P[25,75,100] + b4[0.001]*AH2[7]*AH2P[fcn(100-alt1.AH1P)]
+ b5[0.001]*CS[15,17,19] + b6[0.001]*IC[0,-10,-30] /
U(alt2) = b1*WQ1*WQ1P + b2*WQ2P[fcn(100-alt2.WQ1P)] + b3*AH1*AH1P + b4*AH2*AH2P[fcn(100-alt2.AH1P)] + b5*CS + b6*IC $


So next I tried it with 3 alternatives and got this syntax working:

Code: Select all
Design
;alts = alt1*, alt2*, alt3*
;eff = (mnl,d)
;rows = 9
;alg = mfederov(candidates = 20)
;require:
alt1.WQ1 = 155, alt1.WQ1P = 100, alt1.AH1 = 7, alt1.AH1P = 100, alt1.CS = 17, alt1.IC = 0,
alt2.WQ1 <> 155, alt2.WQ1P < 100, alt2.AH1 <> 7, alt2.AH1P < 100, alt2.IC < 0,
alt3.WQ1 <> 155, alt3.WQ1P < 100, alt3.AH1 <> 7, alt3.AH1P < 100, alt3.IC < 0
;model:
U(alt1) = b1[0.001]*WQ1[145,155,165]*WQ1P[25,75,100] + b2[0.155]*WQ2P[fcn(100-alt1.WQ1P)]
+ b3[0.001]*AH1[4,7,10]*AH1P[25,75,100] + b4[0.001]*AH2[7]*AH2P[fcn(100-alt1.AH1P)]
+ b5[0.001]*CS[15,17,19] + b6[0.001]*IC[0,-10,-30] /
U(alt2) = b1*WQ1*WQ1P + b2*WQ2P[fcn(100-alt2.WQ1P)] + b3*AH1*AH1P + b4*AH2*AH2P[fcn(100-alt2.AH1P)] + b5*CS + b6*IC /
U(alt3) = b1*WQ1*WQ1P + b2*WQ2P[fcn(100-alt3.WQ1P)] + b3*AH1*AH1P + b4*AH2*AH2P[fcn(100-alt3.AH1P)] + b5*CS + b6*IC $


Note that I have set the candidates to 20, since I am sure there are 20 feasible possibilities. You can increase it to try how far you can go, I am not able to tell you how many feasible solutions there are here.

Note that it takes a bit of time for Ngene to find these 20 candidates, so please give it a minute.
Michiel Bliemer
 
Posts: 1733
Joined: Tue Mar 31, 2009 4:13 pm

Re: Dominance with reference values

Postby pattyp12 » Tue Jun 02, 2015 2:18 am

Wow, thanks again for the quick and very thorough response. I'll take a look at your code and let you know how it works out.

Thanks,
Pat
pattyp12
 
Posts: 6
Joined: Sun May 10, 2015 9:24 am


Return to Choice experiments - Ngene

Who is online

Users browsing this forum: No registered users and 37 guests