Undesired dominant alternatives in generated design

This forum is for posts that specifically focus on the Windows desktop version of Ngene (i.e. all version 1.x releases).

Moderators: Andrew Collins, Michiel Bliemer, johnr

Post Reply
ChrisG
Posts: 8
Joined: Wed Mar 08, 2023 2:16 am

Undesired dominant alternatives in generated design

Post by ChrisG »

Hi everyone, I will be conducting a choice experiment on job preferences in order to estimate how much wage individuals are willing to forgo to enjoy job amenities. Therefore, it's a willingness-to-pay design with the wage parameter (b1 below) as WTP denominator. Most importantly, we also want to estimate interaction effects between different attributes.
To plan a pilot I am using Ngene to generate an efficient design with 24 choice situations which will be presented to participants in blocks of six per participant.
Utility functions for the two alternatives are identical; priors for main effects are estimations based on the literature. Specifically, for categorical attribute B preferences are assumed to be 1>2>3>4, and for P 1>2>3, therefore the defined dummy priors in the code. "A" is a risk factor, therefore, generates disutility. Parameters for the interaction effects are completely unknown; therefore, the zeroes as priors for b51 to b102.

My problem is that when generating designs using the code below, I frequently get clearly dominant alternatives in the suggested choice situations.
To give an example, Ngene suggests the following choice situation where alt2 is clearly dominant:
alt1: W=75 / B=3 / P=1 / A=30
alt2: W=130 / B=2 / P=1 / A=30

Can you help/explain to me what I am doing/coding wrong?
I would highly appreciate it!

Code: Select all

Design
;alts = alt1, alt2
;rows = 24
;block = 4
;eff = (mnl, wtp(ref1))
;wtp = ref1(*/b1)
;model:
U(alt1) = b1[0.01] * W[75,100,115,130] + b2.dummy[0.3|0.2|0.1]* B[1,2,3,4] 
+ b3.dummy[0.2|0.1] * P[1,2,3] + b4[-0.01] * A[30,45,60]
+ b51[0] * W*B.dummy[1] + b52[0] * W*B.dummy[2] + b53[0] * W*B.dummy[3] 
+ b61[0] * W*P.dummy[1] + b62[0] * W*P.dummy[2]
+ b7[0]*W*A	
+ b811[0] * B.dummy[1]*P.dummy[1] + b812[0] * B.dummy[1]*P.dummy[2]
+ b821[0] * B.dummy[2]*P.dummy[1] + b822[0] * B.dummy[2]*P.dummy[2]
+ b831[0] * B.dummy[3]*P.dummy[1] + b832[0] * B.dummy[3]*P.dummy[2]
+ b91[0] * B.dummy[1]*A + b92[0] * B.dummy[2]*A + b93[0] * B.dummy[3]*A 
+ b101[0] * P.dummy[1]*A + b102[0] * P.dummy[2]*A
					/
U(alt2) = b1 * W + b2.dummy * B + b3.dummy * P + b4 * A
+ b51 * W*B.dummy[1] + b52 * W*B.dummy[2] + b53 * W*B.dummy[3] 
+ b61 * W*P.dummy[1] + b62 * W*P.dummy[2]
+ b7*W*A
+ b811 * B.dummy[1]*P.dummy[1] + b812 * B.dummy[1]*P.dummy[2]
+ b821 * B.dummy[2]*P.dummy[1] + b822 * B.dummy[2]*P.dummy[2]
+ b831 * B.dummy[3]*P.dummy[1] + b832 * B.dummy[3]*P.dummy[2]
+ b91 * B.dummy[1]*A + b92 * B.dummy[2]*A + b93 * B.dummy[3]*A 
+ b101 * P.dummy[1]*A + b102 * P.dummy[2]*A
$
Michiel Bliemer
Posts: 2055
Joined: Tue Mar 31, 2009 4:13 pm

Re: Undesired dominant alternatives in generated design

Post by Michiel Bliemer »

You need to indicate that alt1 and alt2 are generic alternatives by adding an asterisk:

;alts = alt1*, alt2*

This tells Ngene to avoid dominant alternatives and also duplicates where profiles of alt1 and alt2 are merely swapped.

Note that you should not use ;wtp if the priors are not informative. In your case, b1 is an uninformative near-zero prior and therefore WTP is dividing by near-zero, which is an issue. I suggest simply optimising for the D-error as in the script below.

Code: Select all

Design
;alts = alt1*, alt2*
;rows = 24
;block = 4
;eff = (mnl, d)
;model:
U(alt1) = b1[0.01]              * W[75,100,115,130] 
        + b2.dummy[0.3|0.2|0.1] * B[1,2,3,4]
        + b3.dummy[0.2|0.1]     * P[1,2,3] 
        + b4[-0.01]             * A[30,45,60]
        + b51[0]                * W*B.dummy[1] 
        + b52[0]                * W*B.dummy[2] 
        + b53[0]                * W*B.dummy[3]
        + b61[0]                * W*P.dummy[1] 
        + b62[0]                * W*P.dummy[2]
        + b7[0]                 * W*A   
        + b811[0]               * B.dummy[1]*P.dummy[1] 
        + b812[0]               * B.dummy[1]*P.dummy[2]
        + b821[0]               * B.dummy[2]*P.dummy[1] 
        + b822[0]               * B.dummy[2]*P.dummy[2]
        + b831[0]               * B.dummy[3]*P.dummy[1] 
        + b832[0]               * B.dummy[3]*P.dummy[2]
        + b91[0]                * B.dummy[1]*A 
        + b92[0]                * B.dummy[2]*A 
        + b93[0]                * B.dummy[3]*A
        + b101[0]               * P.dummy[1]*A 
        + b102[0]               * P.dummy[2]*A
        /
U(alt2) = b1                    * W
        + b2                    * B
        + b3                    * P
        + b4                    * A
        + b51                   * W*B.dummy[1] 
        + b52                   * W*B.dummy[2] 
        + b53                   * W*B.dummy[3]
        + b61                   * W*P.dummy[1] 
        + b62                   * W*P.dummy[2]
        + b7                    * W*A   
        + b811                  * B.dummy[1]*P.dummy[1] 
        + b812                  * B.dummy[1]*P.dummy[2]
        + b821                  * B.dummy[2]*P.dummy[1] 
        + b822                  * B.dummy[2]*P.dummy[2]
        + b831                  * B.dummy[3]*P.dummy[1] 
        + b832                  * B.dummy[3]*P.dummy[2]
        + b91                   * B.dummy[1]*A 
        + b92                   * B.dummy[2]*A 
        + b93                   * B.dummy[3]*A
        + b101                  * P.dummy[1]*A 
        + b102                  * P.dummy[2]*A
$
Michiel
ChrisG
Posts: 8
Joined: Wed Mar 08, 2023 2:16 am

Re: Undesired dominant alternatives in generated design

Post by ChrisG »

Thank you Michiel, your answer was most helpful!
Post Reply