Page 1 of 1

Undesired dominant alternatives in generated design

PostPosted: Tue Apr 25, 2023 12:48 am
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
$

Re: Undesired dominant alternatives in generated design

PostPosted: Tue Apr 25, 2023 9:53 am
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

Re: Undesired dominant alternatives in generated design

PostPosted: Tue Apr 25, 2023 9:07 pm
by ChrisG
Thank you Michiel, your answer was most helpful!