Page 1 of 1

Fixed and Bayesian priors

PostPosted: Tue May 07, 2024 12:21 am
by TamsinD
Hello Michiel and the Choice Metrics team,

I have a couple of questions about an unlabeled discrete choice experiment with four different transport alternatives and seven attributes. The pilot survey had an orthogonal design and a sample size of 1,600.

Question 1 I am aware that the recommended maximum number of Bayesian priors is twelve. When determining which priors should be fixed, should I select those with the smallest standard error in relation to the coefficient ? For example, could b13 (car costs) be fixed as the coefficient is -0.087 and the std.err is 0.011?

Question 2 Both bus walk time and wait time are not significant. I also think the attribute levels may have been too close together in the pilot, so I am planning on changing the walk time from (5,10) to (10,20) and the wait time from (2,5) to (5,10). Do you have any advice on the best way to determine the priors for these?

Here is the Ngene syntax

Code: Select all
design
;alts = bus1,bus2,bike,car
;rows = 21
? efficient design
;eff = (mnl,d,median)
;bdraws = sobol(1000)
;model:
   
U(bus1)   = ascbus[(n,-0.876, 0.348)]                                                           ? ASC for bus (relative to car)       
         + b1.dummy[(n,0.808,0.158)|(n,0.283,0.149)|(n,-0.059,0.13)] * x1[0,1,2,3]             ? Type of service offered
         + b2[(n,-0.013,0.007)]                                      * x2[10,20,30]            ? bus in-vehicle time (min)
         + b3[(n,-0.001,0.0)]                                        * x3[10,20]               ? Walk to/from bus stop was 5,10 updated to 10,20. Estimate=-0.014 Sterr=0.018, T-ratio 0.776
         + b4[(n,-0.001,0.000)]                                      * x4[5,10]                ? Wait time at stop (min) changed from 2,5 to 5,10  Estimate=-0.042 Sterr=0.038, T-ratio -1.126
         + b5[(n,-0.13,0.068)]                                       * x5[1,2,3,4,5]           ? bus fare £
         + b6[0.318]                                                 * x7[0,1]                 ? FIXED type of vehicle Estimate=-0.318 Sterr=0.072, T-ratio 4.442

         /
U(bus2) = asctaxi[(n,-0.739, 0.461)]                                                           ? ASC for bus2(relative to car)
        + b7.dummy[(n,0.281,0.115)]                                  * x1_2[0,1]               ? Type of service offered
        + b8[(n,-0.034,0.019)]                                       * x2_2[10,15,20]          ? bus2 in-vehicle time (min)
        + b9[-0.071]                                                 * x4_2[5,10]              ? FIXED. bus2 wait time Estimate=-0.071 Sterr=0.028, T-ratio -2.558
        + b10[-0.128]                                                * x5_2[2,3,4,5,6]         ? FIXED bus2 fare £ Estimate=-0.128 Sterr=0.051, T-ratio -2.481
        + b6                                                         * x7                      ? type of vehicle                   


         /
U(bike)  = ascbike[(n,-0.411, 0.294)]                                                           ? ASC for bike (relative to car) 
         + b14[-0.0318]                                             * x2_4[10,20,30]              ? FIXED bike journey time (min) Estimate=-0.0318 Sterr=0.007, T-ratio -4.704
         
         /
U(car)  = b11[-0.03]                                                 * x2_3[10,15,20]           ? FIXED car in-vehicle time (min) Estimate=-0.03 Sterr=0.01, T-ratio -3.106
        + b12[(u,-0.001,0)]                                          * x5_3[0.5,1.25,2,2.75,3.5] ? car operating cost Change from (0.25 to 1.25) to (0.5 to 3.5) Estimate=0.03 Sterr=0.134, T-ratio 0.228
        + b13[-0.087]                                                * x6_3[0,5,10,15]          ? FIXED additional cost £ Estimate=-0.087 Sterr=0.011, T-ratio -7.785
        + b6                                                         * x7                       ? type of vehicle
 $


I would really appreciate any insights or suggestions on how to improve the design.

Thank you in advance for your help!

Re: Fixed and Bayesian priors

PostPosted: Tue May 07, 2024 3:43 pm
by Michiel Bliemer
1. No, you should select the least important attributes by looking at impact on utility, which also depends on the levels for numerical attributes. But note that (n,-0.001,0.000) is simply a fixed coefficient, it does not make sense to waste draws from a distribution with zero standard deviation.

2. The literature will tell you that walk and wait time are typically less preferred than in-vehicle time, so you could set them to the same as in-vehicle time.

Michiel

Re: Fixed and Bayesian priors

PostPosted: Tue May 07, 2024 8:38 pm
by TamsinD
1. I greatly appreciate your clarification, it now makes much more sense. I have selected the parameters with the smallest contribution to overall utility to be fixed (b2, b3, b4, b6, b7, b12).

2. Thanks for this. I will set them the same as in-vehicle time

3. You have mentioned that if using an orthogonal design it is worth shrinking the priors towards zero. Does this mean I should divide all the parameter coefficients by 1.5? This may seem like a stupid question, as I do not fully understand this, but should the standard error also be divided by 1.5? And this is for every single parameters (all 19 of them) and not just those where the t-ratios are not significant?

Re: Fixed and Bayesian priors

PostPosted: Wed May 08, 2024 9:55 am
by Michiel Bliemer
3. The scale parameter may vary across different data sets; orthogonal design usually have higher scale than efficient designs. For that reason, you could divide all parameters by a certain value (e.g. 1.5), and of course also the standard errors.

Michiel

Re: Fixed and Bayesian priors

PostPosted: Wed May 08, 2024 11:18 pm
by TamsinD
Hello Michiel,

Thank you once again for your patience and for providing clarification.

Apologies in advance, but I have a couple of final questions:

4. Fuel costs for car are positive, not significant and have a very small contribution to utility (estimate = 0.03, se=0.134 and t-ratio=0.228). Is it possible to use the priors from car ivt for car_fuel costs (similar to using bus ivt for bus wait time)?
5. The output from Ngene indicates that four of the parameters have very high S-estimates (greater than 500). Our plan is to distribute the survey to 1,500 respondent, asking each person to complete 7 choice tasks (with 3 blocks). Would this sample size be adequate?

Here's the full syntax in case that helps.

Code: Select all
design
;alts = opt1, opt2, opt3, opt4
? efficient design
;eff = (mnl, d, median)
;alg = swap
;rows = 21
;bdraws = sobol(1000)

;model:
U(opt1) = b1.dummy[(n,0.539,0.105)|(n,0.188,0.099)|(n,-0.039,0.087)] * x1[0,1,2,3]    ? Type of service offered
        + b2[-0.008]                                                 * x2[10,20,30]   ? FIXED bus1 in-vehicle time (min)
        + b3[-0.008]                                                 * x3[10,20]      ? FIXED Walk to/from bus stop was 5,10 updated to 10,20.
        + b4[-0.008]                                                 * x4[5,10]       ?FIXED Wait time at stop (min) changed from 2,5 to 5,10
        + b5[-0.086]                                                 * x5[1,2,3,4,5]  ? FIXED bus1 fare £
        + b6.dummy[0.212]                                            * x7[0,1]        ? FIXED type of vehicle
        + asc1[(n,-0.584,0.232)]                                                      ? ASC for bus1 (relative to car)       
/
U(opt2) = b7.dummy[0.281]        * x1_2[0,1]                                           ? FIXED Type of service offered
        + b8[(n,-0.023,0.013)]   * x2_2[10,20]                                             ? bus2 in-vehicle time (min)
        + b9[(n,-0.048,0.019)]   * x4_2[5,10]                                          ? bus2 wait time
        + b10[(n,-0.085,0.034)]  * x5_2[2,3,4,5,6]                                     ? bus2 fare £
        + b6                     * x7
        + asc2[(n,-0.492,0.307)]                                                       ? ASC for bus2(relative to car)
/
U(opt3) = b11[(n,-0.021,0.005)] * x2_3[20,30,40]                                       ? bike journey time (min)
        + asc3[(n,-0.0274,0.196)]                                                      ? ASC for bus2(relative to car)
/
U(opt4) = b12[(n,-0.02, 0.01)]  * x2_4[10,20]                                   ? car in-vehicle time (min)
        + b13[-0.02]             * x5_4[1,1.75,2.5,3.25,4]                              ? FIXED car operating cost               
        + b14[(n,-0.058,0.007)] * x6_4[0,5,10,15]                                       ? FIXED additional cost £
        + b6                    * x7
$

Re: Fixed and Bayesian priors

PostPosted: Thu May 09, 2024 10:03 am
by Michiel Bliemer
4. Priors are best guesses, so as long as you make an informed decision you can set the priors to anything. In your case, you could estimate the same generic coefficient for cost across all options, as you may not have enough data to estimate all parameters to be altenative-specific. That would give you a more reliable prior for the cost coefficient. You can still use alternative-specific priors when generating the design, but you would simply use the same prior.

5. There is no way of telling. 1500 respondents is quite a lot so I suspect that you will be able to estimate most coefficients. If they are not statistically significant with even such a large sample size, then it is telling you that the attribute is likely not very relevant for choice. Which is an outcome of a study too.

Michiel

Re: Fixed and Bayesian priors

PostPosted: Mon May 13, 2024 10:06 pm
by TamsinD
Thank you so much for the prompt responses, valuable insights and suggestions. I have used a generic coefficient for the cost and have created the choice sets ready for survey distribution.

Thanks again.