Incorporating ASC into Bayesian Efficient Design

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Incorporating ASC into Bayesian Efficient Design

Postby tomosrobinson » Wed May 11, 2022 11:10 pm

Hi there,

I am working on an unlabelled DCE study, which has previously been discussed on another thread in relation to its constraints (viewtopic.php?f=2&t=909)

We are investigating the general public's preferences for different types of public health intervention related to diet. We have six attributes. In each choice task two alternatives will be shown as well as a 'No Choice' option.

We now have pilot data from 157 individuals and are looking to use this information to generate a Bayesian efficient design for the main data collection.

In a previous study I was advised on this forum to use a maximum of 12 Priors and to use 2000 Sobol draws when generating a Bayesian design. I used this information and the MNL results from the pilot to generate the following syntax:

Code: Select all
design
;alts = Alt_A*, Alt_B*, NoChoice
;rows = 180
;block = 15
;eff = (mnl,d,mean)
;bdraws = sobol(2000) 

;cond:

if(Alt_A.Intervention = 7, Alt_A.Framing = 1),
if(Alt_A.Intervention = [1,2,3,4,5,6,7], Alt_A.Agency <> 3),
if(Alt_A.Intervention = [8,9,10,11,12], Alt_A.Agency <> 1),

if(Alt_B.Intervention = 7, Alt_B.Framing = 1),
if(Alt_B.Intervention = [1,2,3,4,5,6,7], Alt_B.Agency <> 3),
if(Alt_B.Intervention = [8,9,10,11,12], Alt_B.Agency <> 1)

;model:
U(Alt_A) = b1         + b2_Intervention.dummy[-0.050|-0.083|0.048|0.019|0.248|(n,0.437,0.248)|(n,-0.321,0.185)|0.042|0.090|0.153|(n,0.467,0.179)] * Intervention[2,3,4,5,6,7,8,9,10,11,12,1]                       
                      + b3_Framing.dummy[(n,-0.189,0.080)|(n,0.200,0.076)]                                                                        * Framing[2,3,1]                       
                      + b4_Equity.dummy[(n,-0.261,0.092)|(n,0.031,0.105)]                                                                         * Equity[2,3,1]
                      + b5_Agency.dummy[-0.101|-0.062]                                                                                            * Agency[2,3,1]                       
                      + b6_Value.dummy[(n,0.176,0.092)|(n,0.337,0.112)]                                                                           * Value[2,3,1]                         
                      + b7_Effectiveness.dummy[(n,0.515,0.093)|(n,1.171,0.142)]                                                                   * Effectiveness[2,3,1]                       
                      + b8_1_Equity_Agency_Interaction               * Equity.dummy[1] * Agency.dummy[1]
                      + b8_2_Equity_Agency_Interaction               * Equity.dummy[2] * Agency.dummy[1]
                      + b8_3_Equity_Agency_Interaction               * Equity.dummy[1] * Agency.dummy[2]
                      + b8_4_Equity_Agency_Interaction               * Equity.dummy[2] * Agency.dummy[2]
                      + b9_1_Equity_Value_Interaction                * Equity.dummy[1] * Value.dummy[1]
                      + b9_2_Equity_Value_Interaction                * Equity.dummy[2] * Value.dummy[1]
                      + b9_3_Equity_Value_Interaction                * Equity.dummy[1] * Value.dummy[2]
                      + b9_4_Equity_Value_Interaction                * Equity.dummy[2] * Value.dummy[2]
                      + b10_1_Equity_Effectiveness_Interaction       * Equity.dummy[1] * Effectiveness.dummy[1]
                      + b10_2_Equity_Effectiveness_Interaction       * Equity.dummy[2] * Effectiveness.dummy[1]
                      + b10_3_Equity_Effectiveness_Interaction       * Equity.dummy[1] * Effectiveness.dummy[2]
                      + b10_4_Equity_Effectiveness_Interaction       * Equity.dummy[2] * Effectiveness.dummy[2]
                      + b11_1_Agency_Value_Interaction               * Agency.dummy[1] * Value.dummy[1]
                      + b11_2_Agency_Value_Interaction               * Agency.dummy[2] * Value.dummy[1]
                      + b11_3_Agency_Value_Interaction               * Agency.dummy[1] * Value.dummy[2]
                      + b11_4_Agency_Value_Interaction               * Agency.dummy[2] * Value.dummy[2]
                      + b12_1_Agency_Effectiveness_Interaction       * Agency.dummy[1] * Effectiveness.dummy[1]
                      + b12_2_Agency_Effectiveness_Interaction       * Agency.dummy[2] * Effectiveness.dummy[1]
                      + b12_3_Agency_Effectiveness_Interaction       * Agency.dummy[1] * Effectiveness.dummy[2]
                      + b12_4_Agency_Effectiveness_Interaction       * Agency.dummy[2] * Effectiveness.dummy[2]
                      + b13_1_Value_Effectiveness_Interaction        * Value.dummy[1] * Effectiveness.dummy[1]
                      + b13_2_Value_Effectiveness_Interaction        * Value.dummy[2] * Effectiveness.dummy[1]
                      + b13_3_Value_Effectiveness_Interaction        * Value.dummy[1] * Effectiveness.dummy[2]
                      + b13_4_Value_Effectiveness_Interaction        * Value.dummy[2] * Effectiveness.dummy[2]

         /
U(Alt_B) = b1         + b2_Intervention                              * Intervention
                      + b3_Framing                                   * Framing
                      + b4_Equity                                    * Equity
                      + b5_Agency                                    * Agency
                      + b6_Value                                     * Value
                      + b7_Effectiveness                             * Effectiveness
                      + b8_Equity_Agency_Interaction                 * Equity * Agency
                      + b9_Equity_Value_Interaction                  * Equity * Value
                      + b10_Equity_Effectiveness_Interaction         * Equity * Effectiveness
                      + b11_Agency_Value_Interaction                 * Agency * Value
                      + b12_Agency_Effectiveness_Interaction         * Agency * Effectiveness
                      + b13_Value_Effectiveness_Interaction          * Value * Effectiveness
                      + b8_1_Equity_Agency_Interaction               * Equity.dummy[1] * Agency.dummy[1]
                      + b8_2_Equity_Agency_Interaction               * Equity.dummy[2] * Agency.dummy[1]
                      + b8_3_Equity_Agency_Interaction               * Equity.dummy[1] * Agency.dummy[2]
                      + b8_4_Equity_Agency_Interaction               * Equity.dummy[2] * Agency.dummy[2]
                      + b9_1_Equity_Value_Interaction                * Equity.dummy[1] * Value.dummy[1]
                      + b9_2_Equity_Value_Interaction                * Equity.dummy[2] * Value.dummy[1]
                      + b9_3_Equity_Value_Interaction                * Equity.dummy[1] * Value.dummy[2]
                      + b9_4_Equity_Value_Interaction                * Equity.dummy[2] * Value.dummy[2]
                      + b10_1_Equity_Effectiveness_Interaction       * Equity.dummy[1] * Effectiveness.dummy[1]
                      + b10_2_Equity_Effectiveness_Interaction       * Equity.dummy[2] * Effectiveness.dummy[1]
                      + b10_3_Equity_Effectiveness_Interaction       * Equity.dummy[1] * Effectiveness.dummy[2]
                      + b10_4_Equity_Effectiveness_Interaction       * Equity.dummy[2] * Effectiveness.dummy[2]
                      + b11_1_Agency_Value_Interaction               * Agency.dummy[1] * Value.dummy[1]
                      + b11_2_Agency_Value_Interaction               * Agency.dummy[2] * Value.dummy[1]
                      + b11_3_Agency_Value_Interaction               * Agency.dummy[1] * Value.dummy[2]
                      + b11_4_Agency_Value_Interaction               * Agency.dummy[2] * Value.dummy[2]
                      + b12_1_Agency_Effectiveness_Interaction       * Agency.dummy[1] * Effectiveness.dummy[1]
                      + b12_2_Agency_Effectiveness_Interaction       * Agency.dummy[2] * Effectiveness.dummy[1]
                      + b12_3_Agency_Effectiveness_Interaction       * Agency.dummy[1] * Effectiveness.dummy[2]
                      + b12_4_Agency_Effectiveness_Interaction       * Agency.dummy[2] * Effectiveness.dummy[2]
                      + b13_1_Value_Effectiveness_Interaction        * Value.dummy[1] * Effectiveness.dummy[1]
                      + b13_2_Value_Effectiveness_Interaction        * Value.dummy[2] * Effectiveness.dummy[1]
                      + b13_3_Value_Effectiveness_Interaction        * Value.dummy[1] * Effectiveness.dummy[2]
                      + b13_4_Value_Effectiveness_Interaction        * Value.dummy[2] * Effectiveness.dummy[2]


As you can see, I am thus far including 11 Bayesian Priors.

My main question is related to the inclusion of the attribute specific constant (ASC) for the 'No Choice' option. I have consulted the Ngene manual and looked at a couple of other posts on this forum but am still a little confused. I know I need to include this, but unsure exactly what is the best way to do it is?

Would I simply include something like this: U(NoChoice) = asc[(n,-1.168,0.230)] ? Or is there something else I need to include?

If so, do I also need to include the ;con command to specify that the constant needs to be considered when determining the efficiency of the design?

Also, do you think that 2000 Sobol Draws is the best way to go for this design? From reading other posts I'm aware I could also use the 'gauss(3)' option.

Finally, I should point out that I am aware that because of the number of constraints and Bayesian priors this design is going to take a long time to run. I plan on leaving it to run for a number of days.

Best wishes,

Tom
tomosrobinson
 
Posts: 17
Joined: Tue Nov 17, 2020 2:36 am

Re: Incorporating ASC into Bayesian Efficient Design

Postby Michiel Bliemer » Thu May 12, 2022 8:59 am

1. You can include the asc in two different ways:

U(A) = b1 + b2 * X1
U(B) = b1 + b2 * X1
<you can omit the optout alternative, which defaults to zero in this case>

or:

U(A) = b2 * X1
U(B) = b2 * X1
U(optout) = b1

Both models are identical, only the sign of b1 will reverse. You indeed can use something like b1[(n,-1.168,0.230)].

2. Regarding adding ;con, if you are only interested in WTP then you do not need to optimise for the constant. If you are interested in demand or market shares, you would probably want to add ;con and optimise for estimating the constant as well.

3. gauss is great if the number of Bayesian priors is not too large. With 12 Bayesian priors you would do 3^12 = 531,441 draws, which is computationally not feasible. So a pragmatic solution here is choosing Sobol with 2000 draws, that should be OK.

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

Re: Incorporating ASC into Bayesian Efficient Design

Postby tomosrobinson » Thu May 12, 2022 7:12 pm

Hi Michiel,

Thank you as ever for your swift and thorough reply.

I think the fact there are two different ways of including the ASC was confusing me - thanks for clearing that up!

I will include ;con and stick to 2000 Sobol draws.

Best wishes,

Tom
tomosrobinson
 
Posts: 17
Joined: Tue Nov 17, 2020 2:36 am


Return to Choice experiments - Ngene

Who is online

Users browsing this forum: No registered users and 9 guests

cron