Dominant alternatives

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Dominant alternatives

Postby eliD » Tue Sep 24, 2019 1:05 am

Dear Ngene team,

I have estimated an efficent design setting all priors at zero. This design will be used for a pilot study to obtain the priors for a Bayesian design.
Below the attribute descriptions and the sintax I used.

Attribute description:
b1 = price (1.80, 2.20, 2.60, 3.00, 3.40, 3.80)
b2 = calories per 100g (420, 436, 452, 468)
b3 = flavor (0=plain, 1=choco)
b4 = GI (0=no logo, 1=logo)

Design
;alts = alt1*, alt2*, alt3
;rows = 24
;block = 3
;eff = (mnl,d)
;model:
U(alt1) = b1 * price[1.80, 2.20, 2.60, 3.00, 3.40, 3.80]
+ b2[0] * calories[0,1,2,3]
+ b3.effects[0] * flavor[0,1]
+ b4.effects[0] * GI[0,1]/
U(alt2) = b1*price + b2*calories + b3*flavor + b4*GI/
U(alt3) = b0[0] $

My main concern is that in the design I have dominant alternatives (i.e., one of the two buyng options is objectively better than the other one in the choice task). I have also tryed with 24 rows and 2 blocks, but the problem persists. Is there any way to avoid this issue? If yes, how can I do?
Moreover, I was wondering whether to use an efficient design with zero priors is the proper approach to collect pilot data for a second wave bayesian design, or
it would be better to use 'conservative' priors (i.e., very close to zero) maybe guessing the signs of some attributes (like price and calories).
Any suggestion would be much appreciated.

Thank you very much,
Eli
eliD
 
Posts: 11
Joined: Thu Mar 30, 2017 2:17 am

Re: Dominant alternatives

Postby Michiel Bliemer » Tue Sep 24, 2019 3:10 pm

It is only possible to detect dominant alternatives if you specify non-zero priors, otherwise Ngene does not know for example that a higher price results in a lower utility. You can use very small positive or negative priors to indicate the sign, e.g. 0.000001 and -0.000001. For dummy and effects coded coefficients with more than 2 levels you can specify an ordering such as b1.dummy[0.000001|0.00002]*x[1,2,0], which means that the higher the level the more utility.

Putting dominance constraints on a design can be very restrictive, and since you have only a small number of attributes it may not be easy for Ngene to find a design without any dominant alternatives using the default swapping algorithm, especially when asking for a large number of rows. In that case, you can try to change the algorithm, ;alg = mfederov, but note that the modified Federov algorithm does not maintain attribute level balance so you may wish to impose additional level balance constraints.

One thing I noticed: your level range in calories is very narrow, I think this may create an issue with estimating b2 to a satisfactory level of statistical significant. So you may want to consider increasing the range, eg 300 to 600, to allow larger trade-offs.

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

Re: Dominant alternatives

Postby eliD » Wed Sep 25, 2019 1:15 am

Dear Michiel,
Thank you so much for your prompt response and suggestions.

First of all, I modified the intervals for calories making them larger to avoid the significance issue you mentioned. Ranges are not as wide as you suggested, but they reflect the actual calorie values of these products. I am concerned that to set much lower/upper values would make the choice context unrealistic. Do you this this is enough?

Secondly, following your indications I run a design with very small priors, specifying all the signs that I could reasonably guess. Here is the syntax I used:

Design
;alts = alt1*, alt2*, alt3
;rows = 24
;block = 2
;eff = (mnl,d)
;model:
U(alt1) = b1[-0,00001] * price[1.80, 2.20, 2.60, 3.00, 3.40, 3.80]
+ b2[-0.00001] * calories[390, 420, 460, 490]
+ b3.effects[0] * flavor[0,1]
+ b4[-0.00001] * GI[36, 44, 52, 60, 68, 76]/
U(alt2) = b1*price + b2*calories + b3.*flavor + b4*GI/
U(alt3) = b0[-0.00001] $

With these codes, after a number of attempts, I finally obtained a design without dominant alternatives, which seems ok. However I still have some doubts:
- is it correct to use, when possible, very small priors specifying the signs, meanwhile leaving some other priors at zero (specifically b3, since I cannot really guess about its sign)?
- About the fact that I could obtain a good design only after a number of attempts... should I interpret this as a bad sign or an indication that something is wrong?

Furthermore, after going back to previous conversations in this forum, I also tried to run a Bayesian design with uniform priors.

Design
;alts = alt1*, alt2*, alt3
;rows = 24
;block = 2
;eff = (mnl, d, mean)
;model:
U(alt1) = b1[(u, -0.1785,0.1785)] * price[1.80, 2.20, 2.60, 3.00, 3.40, 3.80]
+ b2[(u, -0.0011, 0.0011)] * calories[390, 420, 460, 490]
+ b3.effects[(u, -0.0001, 0.0001)] * flavor[0,1]
+ b4[(u, -0.0089, 0.0089)] * GI[36, 44, 52, 60, 68, 76]/
U(alt2) = b1*price + b2*calories + b3.effects*flavor + b4*GI/
U(alt3) = b0[(u, -0.0005, 0.0005)] $

Provided that I still have dominance problems (but in this case i did not try modifying the ;alg yet) as expected the d-error is much lower, but I am not sure that this approach is suitable for a pilot study to collect ‘informative’ priors to run the final design.
Furthermore, I am not sure that the priors are correctly specified. Is it ok to use -0.0001 and 0.0001 for b3, which is effects coded, and -0.0005, 0.0005 for the no-buy alternative?

Thank you for your help.
Eli
eliD
 
Posts: 11
Joined: Thu Mar 30, 2017 2:17 am

Re: Dominant alternatives

Postby Michiel Bliemer » Wed Sep 25, 2019 3:46 pm

The default swapping algorithm will find it challenging to find a design with dominant alternatives, so could I suggest using the following syntax:

Code: Select all
Design
;alts = alt1*, alt2*, alt3
;rows = 24
;block = 2
;eff = (mnl,d)
;alg = mfederov
;model:
U(alt1) = b1[-0,00001] * price[1.80, 2.20, 2.60, 3.00, 3.40, 3.80](3-5,3-5,3-5,3-5,3-5,3-5)
        + b2[-0.00001] * calories[390, 420, 460, 490](5-7,5-7,5-7,5-7)
        + b3.effects[0] * flavor[0,1]
        + b4[-0.00001] * GI[36, 44, 52, 60, 68, 76](3-5,3-5,3-5,3-5,3-5,3-5)
        /
U(alt2) = b1*price
        + b2*calories
        + b3*flavor
        + b4*GI
        /
U(alt3) = b0[0] $


You can set the prior for b0 to zero since there is no checking for dominance for alt3. You can leave b3 priors zero, this will simply ignore the flavor attribute from dominance checks since there is no obvious dominance for this attribute as you say.

You should only use informative (non-zero) priors when you have them for all parameters. Especially using b0 close to zero and the other parameters not will not result in appropriate choice probabilities and therefore cannot properly calculate efficient designs. In your case I would use near-zero priors for your pilot study, then estimate parameters using your pilot data and use these as (Bayesian) priors for your final design.

I cannot really comment much on your calorie settings, if you believe that these are the widest realistic values you could use then I guess it is the best you can do.

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

Re: Dominant alternatives

Postby eliD » Fri Oct 04, 2019 1:36 am

Dear Michiel,

sorry for this delay in anwering. I was out of office and I was able to run your codes only this morning. Everything looks fine now.
Thank you so much for your kind help.

Eli
eliD
 
Posts: 11
Joined: Thu Mar 30, 2017 2:17 am


Return to Choice experiments - Ngene

Who is online

Users browsing this forum: No registered users and 27 guests