by Steven Guu » Sat Nov 19, 2022 1:02 am
Dear Michiel
Some months ago I asked you for advice regarding the pilot design for my research. I really appreciate your time and help. My data collection (150 respondents) went very well and all significant, I am very thankful for having been able to count on your expertise!
Now I’m going to design my main survey choice cards.
Since I have an unlabeled experiment experiment, with 2 alternatives + opt out choice.
- Three alternatives (two plus one none)
- 4 attribute, with 4, 3, 3, 6 levels respectively, which are method of sorting, collection, point and cost.
- none with no utility function
I tried to use the priors to construct a Bayesian efficient design.
Therefore, I create my design based on the following:
- Estimate an MNL model with ln (1) and without ln (1) (dummy code and effects code respectively) and obtain the parameter estimates and standard errors by using stata. Call this model1
- Specify a syntax for model_mnl in Ngene for generating a Bayesian efficient design for this MNL model using normal distributions with a mean set to the parameter estimate and a standard deviation set to the standard error
- Estimate an MMNL model with ln (1) and without ln (1) (dummy code and effects respectively) and obtain the parameter estimates (means and standard deviations and I estimate all normally distributed parameters). Call this model2
- Specify a syntax for model_rppanel in Ngene for evaluating an efficient design (with fixed priors) for this RPPANEL model using the parameter estimates.
- Optimise on model_mnl, and evaluate in model_rppanel
Then, I read one of the forum post and I follow your suggestion to run a mnl Bayesian model but to evaluate an efficient rppanel and I run the following syntax:
And I found I can get using effects code priors, I can get result, but using dummy code priors I get undefined results
The syntax will look something like:
1.Model 1: MNLln(1) (effects code) and Model 2: MMNLln (1) (effects code)
Design
;alts (model1)= alt1*, alt2*, none
;alts (model2)= alt1*, alt2*, none
;rows=24
;block=4,minsum
;eff = model1(mnl,d,mean)
;rdraws= gauss(3)
;bdraws= gauss(3)
;rep= 1000
;model(model1):
U(alt1)=b0 [2.1776]+b1.effects[(n,0.4817, 0.0982) |(n, 0.6718, 0.0911)|(n,0.0766,0.0801)]*sorting[2,4,7,1]+b2.effects[(n,0.2491, 0.1283)|(n,0.0986,0.2066)]*collected[2,3,1]+b3.effects[(n,0.1382, 0.0551)|(n,0.1964,0.0659)]*point[2,3,1]+b4[(n,-0.0011, 0.0009)]*cost[20,40,60,80,100,200]/
U(alt2) =b0+ b1*sorting+b2*collected+b3*point+b4*cost
;model(model2):
U(alt1)=b0 [2.6594]+b1.effects[n,0.9518, 1.1526 |n, 1.1794, 1.1526|n,0.1787,0.3335]*sorting[2,4,7,1]+b2.effects[n,0.3696, 0.5529|n,0.0850,0.9935]*collected[2,3,1]+b3.effects[n,0.1528, 0.2692|n,0.4018,0.4141]*point[2,3,1]+b4[n,-0.0048, 0.0192]*cost[20,40,60,80,100,200]/
U(alt2) =b0+ b1*sorting+b2*collected+b3*point+b4*cost
;alg=swap(stop=total(10mins))
$
2.Model 1: MNL(effects) and Model 2: MMNL(effects )
Design
;alts (model1)= alt1*, alt2*, none
;alts (model2)= alt1*, alt2*, none
;rows=24
;block=4,minsum
;eff = model1(mnl,d,mean)
;rdraws= gauss(3)
;bdraws= gauss(3)
;rep= 1000
;model(model1):
U(alt1)=b0 [2.1776]+b1.effects[(n,0.4817, 0.0982) |(n, 0.6718, 0.0911)|(n,0.0766,0.0801)]*sorting[2,4,7,1]+b2.effects[(n,0.2491, 0.1283)|(n,0.0986,0.2066)]*collected[2,3,1]+b3.effects[(n,0.1382, 0.0551)|(n,0.1964,0.0659)]*point[2,3,1]+b4[(n,-0.0011, 0.0009)]*cost[20,40,60,80,100,200]/
U(alt2) =b0+ b1*sorting+b2*collected+b3*point+b4*cost
;model(model2):
U(alt1)=b0 [2.5666]+b1.effects[n,1.0219, 1.2793 |n, 1.2695, 1.1102|n,0.2339,0.5641]*sorting[2,4,7,1]+b2.effects[n,0.4472, 0.4141|n,0.2192,1.1468]*collected[2,3,1]+b3.effects[n,0.1577, 0.1206|n,0.3696,0.4963]*point[2,3,1]+b4[n,-0.0022, 0.0122]*cost[20,40,60,80,100,200]/
U(alt2) =b0+ b1*sorting+b2*collected+b3*point+b4*cost
;alg=swap(stop=total(10mins))
$
3.Model 1: MNL(dummy) and Model 2: MMNL(dummy)
Design
;alts (model1)= alt1*, alt2*, none
;alts (model2)= alt1*, alt2*, none
;rows=24
;block=4,minsum
;eff = model1(mnl,d,mean)
;rdraws= gauss(3)
;bdraws= gauss(3)
;rep= 1000
;model(model1):
U(alt1)=b0 [0.6128]+b1.dummy[(n,1.7119, 0.1953) |(n, 1.9020, 0.1963)|(n,1.3068,0.1579)]*sorting[2,4,7,1]+b2.dummy[(n,0.2491, 0.1283)|(n,0.1505,0.1123)]*collected[2,3,1]+b3.dummy[(n,0.4728, 0.1089)|(n,0.5309,0.1257)]*point[2,3,1]+b4[(n,-0.0011, 0.0009)]*cost[20,40,60,80,100,200]/
U(alt2) =b0+ b1*sorting+b2*collected+b3*point+b4*cost
;model(model2):
U(alt1)=b0 [0.5318]+b1.dummy[n,2.2813, 1.1474 |n, 2.5509, 0.1700|n,1.7945,0.4958]*sorting[2,4,7,1]+b2.dummy[n,0.2876, 0.5755|n,-0.2078,0.8792]*collected[2,3,1]+b3.dummy[n,0.5745, 0.1680|n,0.6267,0.0042]*point[2,3,1]+b4[n,-0.0022, 0.0090]*cost[20,40,60,80,100,200]/
U(alt2) =b0+ b1*sorting+b2*collected+b3*point+b4*cost
;alg=swap(stop=total(10mins))
$
4.Model 1: MNL ln(1)(dummy) and Model 2: MMNLln(1)(dummy)
Design
;alts (model1)= alt1*, alt2*, none
;alts (model2)= alt1*, alt2*, none
;rows=24
;block=4,minsum
;eff = model1(mnl,d,mean)
;rdraws= gauss(3)
;bdraws= gauss(3)
;rep= 1000
;model(model1):
U(alt1)=b0 [0.6128]+b1.dummy[(n,1.7119, 0.1953) |(n, 1.9020, 0.1963)|(n,1.3068,0.1579)]*sorting[2,4,7,1]+b2.dummy[(n,0.2491, 0.1283)|(n,0.1505,0.1123)]*collected[2,3,1]+b3.dummy[(n,0.4728, 0.1089)|(n,0.5309,0.1257)]*point[2,3,1]+b4[(n,-0.0011, 0.0009)]*cost[20,40,60,80,100,200]/
U(alt2) =b0+ b1*sorting+b2*collected+b3*point+b4*cost
;model(model2):
U(alt1)=b0 [0.7429]+b1.dummy[n,2.1945, 1.0682 |n, 2.4467, 0.1767|n,1.7065,0.4894]*sorting[2,4,7,1]+b2.dummy[n,0.2059, 0.5370|n,0.2604,0.8903]*collected[2,3,1]+b3.dummy[n,0.5844, 0.2577|n,0.6827,0.0183]*point[2,3,1]+b4[n,-0.0042, 0.0154]*cost[20,40,60,80,100,200]/
U(alt2) =b0+ b1*sorting+b2*collected+b3*point+b4*cost
;alg=swap(stop=total(10mins))
$
However, since my alternative3 is none (opt out choice), it seems illogical to have a ASC in one of the alternatives 1,2. It should not have a constant there, the constant should be in alt3 to make sense.
Therefore, I tried to change the constants in b0 in alt12 to alt3 by using same mean but changed to negative.
5.Model 1: MNLln(1)(effects) and Model 2: MMNLln(1) (effects)
Design
;alts (model1)= alt1*, alt2*, none
;alts (model2)= alt1*, alt2*, none
;rows=24
;block=4,minsum
;eff = model1(mnl,d,mean)
;rdraws= gauss(3)
;bdraws= gauss(3)
;rep= 1000
;model(model1):
U(alt1)=b1.effects[(n,0.4817, 0.0982) |(n, 0.6718, 0.0911)|(n,0.0766,0.0801)]*sorting[2,4,7,1]+b2.effects[(n,0.2491, 0.1283)|(n,0.0986,0.2066)]*collected[2,3,1]+b3.effects[(n,0.1382, 0.0551)|(n,0.1964,0.0659)]*point[2,3,1]+b4[(n,-0.0011, 0.0009)]*cost[20,40,60,80,100,200]/
U(alt2) =b1*sorting+b2*collected+b3*point+b4*cost/
U(none)=b0 [-2.1776]
;model(model2):
U(alt1)=b1.effects[n,0.9518, 1.1526 |n, 1.1794, 1.1526|n,0.1787,0.3335]*sorting[2,4,7,1]+b2.effects[n,0.3696, 0.5529|n,0.0850,0.9935]*collected[2,3,1]+b3.effects[n,0.1528, 0.2692|n,0.4018,0.4141]*point[2,3,1]+b4[n,-0.0048, 0.0192]*cost[20,40,60,80,100,200]/
U(alt2) =b1*sorting+b2*collected+b3*point+b4*cost/
U(none)=b0 [-2.6594]
;alg=swap(stop=total(10mins))
$
6.Model 1: MNL(effects) and Model 2: MMNL(effects )
Design
;alts (model1)= alt1*, alt2*, none
;alts (model2)= alt1*, alt2*, none
;rows=24
;block=4,minsum
;eff = model1(mnl,d,mean)
;rdraws= gauss(3)
;bdraws= gauss(3)
;rep= 1000
;model(model1):
U(alt1)=b1.effects[(n,0.4817, 0.0982) |(n, 0.6718, 0.0911)|(n,0.0766,0.0801)]*sorting[2,4,7,1]+b2.effects[(n,0.2491, 0.1283)|(n,0.0986,0.2066)]*collected[2,3,1]+b3.effects[(n,0.1382, 0.0551)|(n,0.1964,0.0659)]*point[2,3,1]+b4[(n,-0.0011, 0.0009)]*cost[20,40,60,80,100,200]/
U(alt2) =b1*sorting+b2*collected+b3*point+b4*cost/
U(alt2) =b0[-2.1776]
;model(model2):
U(alt1)=b1.effects[n,1.0219, 1.2793 |n, 1.2695, 1.1102|n,0.2339,0.5641]*sorting[2,4,7,1]+b2.effects[n,0.4472, 0.4141|n,0.2192,1.1468]*collected[2,3,1]+b3.effects[n,0.1577, 0.1206|n,0.3696,0.4963]*point[2,3,1]+b4[n,-0.0022, 0.0122]*cost[20,40,60,80,100,200]/
U(alt2) =b1*sorting+b2*collected+b3*point+b4*cost/
U(alt2) =b0[-2.5666]
;alg=swap(stop=total(10mins))
$
If possible, could I ask some questions about my designs? the design 1 and design 5 are which I want pick one to use for my main survey, because the priors are significant and most reasonable. Other just for comparison.
First, does the way I changed the constant above was correct? If not, How can I delete the ASC in alt12 and add constant in alt3?
Secondly, How do I compare the efficiency between those models, and How do I compare MNL AND rp-panel results in one design? I haven’t found any from the manual?
Thirdly, do I need to add ;alg = mfederov(candidates = 1000) and delete ;alg=swap(stop=total(10mins)) to keep design balance?
Lastly, I read one of the forum post, and add ;alg=swap(stop=total(10mins)), I figured this just for quickly check the model which work or not, and I don’t know whether or not this is good for the design and why?
Best regards
Steven