Dominance Issues

This forum is for posts covering broader stated choice experimental design issues.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Dominance Issues

Postby markp » Sat May 18, 2019 12:07 am

Hi

I am designing a DCE with 9 attributes: 8x5 levels and 1 x 4 levels. 120 rows, no constraints other than dominance.

Ngene is having trouble finding a design without dominance. There is no issue when I remove the priors.

The priors are informed by the literature.

I was hoping for some advice regarding working through this situation. Code is below

Code: Select all
Design
;alts = alt1*, alt2*
;rows = 120
;eff = (mnl, d)
;block=10
;model:
U(alt1) = b1[0.76]*time[10,5,2,1] +
b2.dummy[0|0|0|0]*se[0,1,2,3,4]  +
ise1[-0.02]*se.dummy[1]*time +
ise2[-0.04]*se.dummy[2]*time +
ise3[-0.06]*se.dummy[3]*time +
ise4[-0.08]*se.dummy[4]*time +
b3.dummy[0|0|0|0]*l[0,1,2,3,4]  +
il1[-0.02]*l.dummy[1]*time +
il2[-0.04]*l.dummy[2]*time +
il3[-0.06]*l.dummy[3]*time +
il4[-0.08]*l.dummy[4]*time +
b4.dummy[0|0|0|0]*a[0,1,2,3,4]  +
ia1[-0.02]*a.dummy[1]*time +
ia2[-0.04]*a.dummy[2]*time +
ia3[-0.06]*a.dummy[3]*time +
ia4[-0.08]*a.dummy[4]*time +
b5.dummy[0|0|0|0]*bo[0,1,2,3,4]  +
ibo1[-0.02]*bo.dummy[1]*time +
ibo2[-0.04]*bo.dummy[2]*time +
ibo3[-0.06]*bo.dummy[3]*time +
ibo4[-0.08]*bo.dummy[4]*time +
b6.dummy[0|0|0|0]*bl[0,1,2,3,4]  +
ibl1[-0.02]*bl.dummy[1]*time +
ibl2[-0.04]*bl.dummy[2]*time +
ibl3[-0.06]*bl.dummy[3]*time +
ibl4[-0.08]*bl.dummy[4]*time +
b7.dummy[0|0|0|0]*p[0,1,2,3,4] +
ip1[-0.02]*p.dummy[1]*time +
ip2[-0.04]*p.dummy[2]*time +
ip3[-0.06]*p.dummy[3]*time +
ip4[-0.08]*p.dummy[4]*time +
b8.dummy[0|0|0|0]*m[0,1,2,3,4] +
im1[-0.02]*m.dummy[1]*time +
im2[-0.04]*m.dummy[2]*time +
im3[-0.06]*m.dummy[3]*time +
im4[-0.08]*m.dummy[4]*time +
b9.dummy[0|0|0|0]*so[0,1,2,3,4] +
iso1[-0.02]*so.dummy[1]*time +
iso2[-0.04]*so.dummy[2]*time +
iso3[-0.06]*so.dummy[3]*time +
iso4[-0.08]*so.dummy[4]*time /
U(alt2) = b1*time +
b2.dummy*se  +
ise1*se.dummy[1]*time +
ise2*se.dummy[2]*time +
ise3*se.dummy[3]*time +
ise4*se.dummy[4]*time +
b3.dummy*l  +
il1*l.dummy[1]*time +
il2*l.dummy[2]*time +
il3*l.dummy[3]*time +
il4*l.dummy[4]*time +
b4.dummy*a  +
ia1*a.dummy[1]*time +
ia2*a.dummy[2]*time +
ia3*a.dummy[3]*time +
ia4*a.dummy[4]*time +
b5.dummy*bo  +
ibo1*bo.dummy[1]*time +
ibo2*bo.dummy[2]*time +
ibo3*bo.dummy[3]*time +
ibo4*bo.dummy[4]*time +
b6.dummy*bl  +
ibl1*bl.dummy[1]*time +
ibl2*bl.dummy[2]*time +
ibl3*bl.dummy[3]*time +
ibl4*bl.dummy[4]*time +
b7.dummy*p +
ip1*p.dummy[1]*time +
ip2*p.dummy[2]*time +
ip3*p.dummy[3]*time +
ip4*p.dummy[4]*time +
b8.dummy*m +
im1*m.dummy[1]*time +
im2*m.dummy[2]*time +
im3*m.dummy[3]*time +
im4*m.dummy[4]*time +
b9.dummy*so +
iso1*so.dummy[1]*time +
iso2*so.dummy[2]*time +
iso3*so.dummy[3]*time +
iso4*so.dummy[4]*time
$
markp
 
Posts: 5
Joined: Thu May 16, 2019 5:54 am

Re: Dominance Issues

Postby Michiel Bliemer » Sat May 18, 2019 10:30 am

Ngene looks at the rankings of the main effects of each attribute. So by providing a positive prior for b1 Ngene you tell Ngene that level 10 is more preferred (higher utility) than level 1. If you do not provide any rankings, i.e. if you use zero priors, then Ngene ignores that attribute. Interaction effects are excluded from dominance checks (it is not evident how interaction effects influence dominance).

In this case, you only provide rankings for "time", but not any of the other attributes. Therefore, you are asking Ngene to exclude dominant alternative by only checking "time", which is not possible because all choice tasks will have a dominant alternative in that case unless the levels for "time" are the same for all alternatives.

Therefore, if you would like to check for dominance you will need to add the ranking information for each attribute, i.e. if higher levels of "se" increase utility, then you could use b2.dummy[-0.004|-0.003|-0.002|-0.001]*se[0,1,2,3,4], nothing that the last level 4 is the reference level.

Michiel
Michiel Bliemer
 
Posts: 1705
Joined: Tue Mar 31, 2009 4:13 pm

Re: Dominance Issues

Postby markp » Sat May 18, 2019 10:30 pm

Thank you! That fixed the problem.

I am not interested in the main effects and will not be using them in my analysis. Is there a way to run Ngene without them? I haven't had success.
markp
 
Posts: 5
Joined: Thu May 16, 2019 5:54 am

Re: Dominance Issues

Postby Michiel Bliemer » Sun May 19, 2019 11:16 am

Yes that can be done, but note that by removing main effects you are no longer able to check for dominance (although I doubt that there is any problem since you have many attributes).

In the syntax below I have created a model called "not_used" that includes all main effects such that they at least are defined, and a model called "main" that only includes interaction effects. In the optimisation I specify that only model "main" should be optimised by setting ;eff = main(mnl,d) and it ignores "not_used". This is a trick to remove the main effects from the utility function.

Code: Select all
Design
;alts(not_used) = alt1, alt2
;alts(main) = alt1, alt2
;rows = 120
;eff = main(mnl, d)
;block=10
;model(not_used):
U(alt1) = b1[0.76]*time[10,5,2,1] +
b2.dummy[0|0|0|0]*se[0,1,2,3,4]  +
ise1[-0.02]*se.dummy[1]*time +
ise2[-0.04]*se.dummy[2]*time +
ise3[-0.06]*se.dummy[3]*time +
ise4[-0.08]*se.dummy[4]*time +
b3.dummy[0|0|0|0]*l[0,1,2,3,4]  +
il1[-0.02]*l.dummy[1]*time +
il2[-0.04]*l.dummy[2]*time +
il3[-0.06]*l.dummy[3]*time +
il4[-0.08]*l.dummy[4]*time +
b4.dummy[0|0|0|0]*a[0,1,2,3,4]  +
ia1[-0.02]*a.dummy[1]*time +
ia2[-0.04]*a.dummy[2]*time +
ia3[-0.06]*a.dummy[3]*time +
ia4[-0.08]*a.dummy[4]*time +
b5.dummy[0|0|0|0]*bo[0,1,2,3,4]  +
ibo1[-0.02]*bo.dummy[1]*time +
ibo2[-0.04]*bo.dummy[2]*time +
ibo3[-0.06]*bo.dummy[3]*time +
ibo4[-0.08]*bo.dummy[4]*time +
b6.dummy[0|0|0|0]*bl[0,1,2,3,4]  +
ibl1[-0.02]*bl.dummy[1]*time +
ibl2[-0.04]*bl.dummy[2]*time +
ibl3[-0.06]*bl.dummy[3]*time +
ibl4[-0.08]*bl.dummy[4]*time +
b7.dummy[0|0|0|0]*p[0,1,2,3,4] +
ip1[-0.02]*p.dummy[1]*time +
ip2[-0.04]*p.dummy[2]*time +
ip3[-0.06]*p.dummy[3]*time +
ip4[-0.08]*p.dummy[4]*time +
b8.dummy[0|0|0|0]*m[0,1,2,3,4] +
im1[-0.02]*m.dummy[1]*time +
im2[-0.04]*m.dummy[2]*time +
im3[-0.06]*m.dummy[3]*time +
im4[-0.08]*m.dummy[4]*time +
b9.dummy[0|0|0|0]*so[0,1,2,3,4] +
iso1[-0.02]*so.dummy[1]*time +
iso2[-0.04]*so.dummy[2]*time +
iso3[-0.06]*so.dummy[3]*time +
iso4[-0.08]*so.dummy[4]*time /
U(alt2) = b1*time +
b2.dummy*se  +
ise1*se.dummy[1]*time +
ise2*se.dummy[2]*time +
ise3*se.dummy[3]*time +
ise4*se.dummy[4]*time +
b3.dummy*l  +
il1*l.dummy[1]*time +
il2*l.dummy[2]*time +
il3*l.dummy[3]*time +
il4*l.dummy[4]*time +
b4.dummy*a  +
ia1*a.dummy[1]*time +
ia2*a.dummy[2]*time +
ia3*a.dummy[3]*time +
ia4*a.dummy[4]*time +
b5.dummy*bo  +
ibo1*bo.dummy[1]*time +
ibo2*bo.dummy[2]*time +
ibo3*bo.dummy[3]*time +
ibo4*bo.dummy[4]*time +
b6.dummy*bl  +
ibl1*bl.dummy[1]*time +
ibl2*bl.dummy[2]*time +
ibl3*bl.dummy[3]*time +
ibl4*bl.dummy[4]*time +
b7.dummy*p +
ip1*p.dummy[1]*time +
ip2*p.dummy[2]*time +
ip3*p.dummy[3]*time +
ip4*p.dummy[4]*time +
b8.dummy*m +
im1*m.dummy[1]*time +
im2*m.dummy[2]*time +
im3*m.dummy[3]*time +
im4*m.dummy[4]*time +
b9.dummy*so +
iso1*so.dummy[1]*time +
iso2*so.dummy[2]*time +
iso3*so.dummy[3]*time +
iso4*so.dummy[4]*time

;model(main):
U(alt1) =
ise1[-0.02]*se.dummy[1]*time +
ise2[-0.04]*se.dummy[2]*time +
ise3[-0.06]*se.dummy[3]*time +
ise4[-0.08]*se.dummy[4]*time +
il1[-0.02]*l.dummy[1]*time +
il2[-0.04]*l.dummy[2]*time +
il3[-0.06]*l.dummy[3]*time +
il4[-0.08]*l.dummy[4]*time +
ia1[-0.02]*a.dummy[1]*time +
ia2[-0.04]*a.dummy[2]*time +
ia3[-0.06]*a.dummy[3]*time +
ia4[-0.08]*a.dummy[4]*time +
ibo1[-0.02]*bo.dummy[1]*time +
ibo2[-0.04]*bo.dummy[2]*time +
ibo3[-0.06]*bo.dummy[3]*time +
ibo4[-0.08]*bo.dummy[4]*time +
ibl1[-0.02]*bl.dummy[1]*time +
ibl2[-0.04]*bl.dummy[2]*time +
ibl3[-0.06]*bl.dummy[3]*time +
ibl4[-0.08]*bl.dummy[4]*time +
ip1[-0.02]*p.dummy[1]*time +
ip2[-0.04]*p.dummy[2]*time +
ip3[-0.06]*p.dummy[3]*time +
ip4[-0.08]*p.dummy[4]*time +
im1[-0.02]*m.dummy[1]*time +
im2[-0.04]*m.dummy[2]*time +
im3[-0.06]*m.dummy[3]*time +
im4[-0.08]*m.dummy[4]*time +
iso1[-0.02]*so.dummy[1]*time +
iso2[-0.04]*so.dummy[2]*time +
iso3[-0.06]*so.dummy[3]*time +
iso4[-0.08]*so.dummy[4]*time /
U(alt2) =
ise1*se.dummy[1]*time +
ise2*se.dummy[2]*time +
ise3*se.dummy[3]*time +
ise4*se.dummy[4]*time +
il1*l.dummy[1]*time +
il2*l.dummy[2]*time +
il3*l.dummy[3]*time +
il4*l.dummy[4]*time +
ia1*a.dummy[1]*time +
ia2*a.dummy[2]*time +
ia3*a.dummy[3]*time +
ia4*a.dummy[4]*time +
ibo1*bo.dummy[1]*time +
ibo2*bo.dummy[2]*time +
ibo3*bo.dummy[3]*time +
ibo4*bo.dummy[4]*time +
ibl1*bl.dummy[1]*time +
ibl2*bl.dummy[2]*time +
ibl3*bl.dummy[3]*time +
ibl4*bl.dummy[4]*time +
ip1*p.dummy[1]*time +
ip2*p.dummy[2]*time +
ip3*p.dummy[3]*time +
ip4*p.dummy[4]*time +
im1*m.dummy[1]*time +
im2*m.dummy[2]*time +
im3*m.dummy[3]*time +
im4*m.dummy[4]*time +
iso1*so.dummy[1]*time +
iso2*so.dummy[2]*time +
iso3*so.dummy[3]*time +
iso4*so.dummy[4]*time
$


Michiel
Michiel Bliemer
 
Posts: 1705
Joined: Tue Mar 31, 2009 4:13 pm

Re: Dominance Issues

Postby markp » Mon May 20, 2019 2:04 am

Thank you. that worked great.
markp
 
Posts: 5
Joined: Thu May 16, 2019 5:54 am


Return to Choice experiments - general

Who is online

Users browsing this forum: No registered users and 4 guests

cron