Page 1 of 1

Help with a design whithin design/ with scenarios in Ngene

PostPosted: Fri May 20, 2022 10:50 pm
by rafael_lionello
Dear Michiel,

I am facing some issues to generate a design whithin design. I have a choice behavior to model in which buyers choose among alternatives sequentially. It is a treatment choice context, where persons usually choose combos of products for a sequential application. For example, one person can choose brand A for the first application, brand B for the second one, brand A again for the third, and so on. Thus, the number of applications may vary across people, although rarely they choose to make just one application (most of time they make combos of three brands).

To deal with such situation, I could generate a desing with scenarios (section 8.5 of the Ngene Manual), where the scenarios would be the applications. And I would ask the respondents to consider each scenario independently of all others. Below is a example (with only 3 brands and with the number of applications equal 3).

Design
;alts = altA, altB, altC, altD, altE
;rows = 15
;eff = (mnl, d, fixed)
;model:
U(altA) = b[-0.2] + b_price_A[-0.03] * PRICE_A[50, 80, 100, 120, 150] + b_appl[-0.5] * APPL[1,2,3] /
U(altB) = b[0.2] + b_price_B[-0.01] * PRICE_B[100, 160, 200, 240, 300] + b_appl * APPL[APPL] /
U(altC) = b[-0.5] + b_price_B[-0.01] * PRICE_B[100, 160, 200, 240, 300] + b_appl * APPL[APPL] /
U(altD) = b[0.5] + b_price_C[-0.02] * PRICE_C[150, 240, 300, 360, 450] + b_appl * APPL[APPL] /
U(altE) = b_price_C[-0.02] * PRICE_C[150, 240, 300, 360, 450] + b_appl * APPL[APPL]
$


1) My firts questions is about how to deal with the variation in number of application. I thought about using a opt-out alternative. Because some people may make no more than one choice in "real life" (while others may make up to 4), adding the opt-out alternative could help to guarantee that I will not estimate parameters based on forced responses for non "real life" preferences. Does this solution sound good? May you imagine an alternate solution? For example, could I generate a separate design for each respondent on the fly based on a pre/ setup question about number of apllications?

2) The second question is about partial choice set designs. Because I have 10 alternatives, I would like to show only a subset of alternatives in each choice task (section 8.11 of the Ngene Manual). Is there any issue in combining these two approaches (design whithin design and partial choice set designs)?


Thank you very much for your time.


Best regards, Rafael.

Re: Help with a design whithin design/ with scenarios in Nge

PostPosted: Sat May 21, 2022 3:46 pm
by Michiel Bliemer
Hi Rafael,

If your study aims to estimate only willingness to pay for certain brands, then an optout is not needed, but if you intend to look at uptake of products then adding an optout would be a good idea.

Another thing to note is that you will need to normalise one of the alternatives where APPL does not appear as otherwise you are adding a constant to each alternative and it would not be possible to estimate b_appl. So you will need to select one alternative as the reference alternative, and this alternative would need to be present in each choice task. The most obvious choice is the optout alternative. Further, APPL seems like a categorical variable and hence the parameter needs to be dummy coded. Also, you can use alternative-specific parameters for APPL. In the script below I have added the optout alternative and I added dummy coding.

Code: Select all
Design
;alts = altA, altB, altC, altD, altE, optout
;rows = 15
;eff = (mnl, d, fixed)
;model:
U(altA) = b[-0.2] + b_price_A[-0.03] * PRICE_A[50, 80, 100, 120, 150] + b_appl_A.dummy[-0.5|-1] * APPL[2,3,1] /
U(altB) = b[0.2] + b_price_B[-0.01] * PRICE_B[100, 160, 200, 240, 300] + b_appl_B.dummy[-0.5|-1] * APPL[APPL] /
U(altC) = b[-0.5] + b_price_B[-0.01] * PRICE_B[100, 160, 200, 240, 300] + b_appl_C.dummy[-0.5|-1] * APPL[APPL] /
U(altD) = b[0.5] + b_price_C[-0.02] * PRICE_C[150, 240, 300, 360, 450] + b_appl_D.dummy[-0.5|-1] * APPL[APPL] /
U(altE) = b_price_C[-0.02] * PRICE_C[150, 240, 300, 360, 450] + b_appl_E.dummy[-0.5|-1] * APPL[APPL]
$


To answer your other question, yes you can combine scenarios with partial choice set designs as long as one alternative (e.g., the optout) is always appearing in each choice task, this alternative will serve as the reference alternative. If you use an external candidate set, you can simply ensure that in all choice tasks the level of APPL is the same across all alternatives (this is easy to do in Excel where you simply set the values of APPL for altB, altC etc equal to the value for altC).

Michiel

Re: Help with a design whithin design/ with scenarios in Nge

PostPosted: Fri May 27, 2022 10:10 pm
by rafael_lionello
Dear Michiel,

Thank you very much for your reply.

I think your points are clear for me. I will go further with them.

One last question: is there any special recommendation for the number of alternatives per choice task in partial choice profile designs? More specifically,

. Supposing that I have 10 labeled alternatives, 12 choice tasks per individual and just the price as attribute (it is a Brand/Price Trade-off), could I generate a design with 5 alternatives per choice set? I run Ngene and found that each brand/ labeled alternative will appear 6 times across the 12 choice tasks in such a design. Is it ok? Is there any rule of thumb to guide such a decision?


Thanks again.

Rafael.

Re: Help with a design whithin design/ with scenarios in Nge

PostPosted: Sat May 28, 2022 10:59 am
by Michiel Bliemer
No there is no real rule of thumb. The more alternatives you should, the more information you capture but also the more complex the choice task is. So it is a trade-off between choice task complexity and efficiency and this is a trade-off that needs to be made for each study separately. 5 brands and prices does not sound too complex to me.

Michiel

Re: Help with a design whithin design/ with scenarios in Nge

PostPosted: Thu Jul 07, 2022 10:53 pm
by rafael_lionello
Hello Michiel,

I am still working in the design of this research.

I have been considering different model specifications and I would like to try a design whithin design with some interactions.

In sum, I have a scenario variable (APPL), coded as dummy, and need to interact it with the ASC as well as the price parameters. I tried the code below, however it did not work. NGENE says "Error: The level '2' specified in dummy or effects coded variable is not one of the levels of that attribute 'Alt2.appl'." (I think it is because of the absence of attribute levels other than the Alt1).


Code: Select all
Design
;alts = Alt1, Alt2, Alt3, Alt4, Alt5, Alt6, Alt7, Alt8, Alt9, Other, Optout
;rows = 60
;eff = (mnl,d)
;model:
U(Alt1)   = b1[0.3]   + b2[-0.001]  * price5[134, 151, 169, 190, 213, 239, 269] + b3.dummy[-0.5|-1]  * APPL[1,2,3] + i4.[0.01]  * APPL.dummy[2] * price5 + i5.[0.01]  * APPL.dummy[3] * price5 /
U(Alt2)  = b6[0.3]   + b7[-0.001]  * price5[134, 151, 169, 190, 213, 239, 269] + b8.dummy[-0.5|-1]  * APPL[APPL]  + i9.[0.01]  * APPL.dummy[2] * price5 + i10.[0.01] * APPL.dummy[3] * price5 /
U(Alt3)  = b11[0.3]  + b12[-0.001] * price5[134, 151, 169, 190, 213, 239, 269] + b13.dummy[-0.5|-1] * APPL[APPL]  + i14.[0.01] * APPL.dummy[2] * price5 + i15.[0.01] * APPL.dummy[3] * price5  /
U(Alt4)  = b16[0.2]  + b17[-0.001] * price4[118, 133, 149, 168, 188, 211, 237] + b18.dummy[-0.5|-1] * APPL[APPL]  + i19.[0.01] * APPL.dummy[2] * price4 + i20.[0.01] * APPL.dummy[3] * price4  /
U(Alt5)  = b21[0.2]  + b22[-0.001] * price3[109, 123, 138, 154, 173, 195, 218] + b23.dummy[-0.5|-1] * APPL[APPL]  + i24.[0.01] * APPL.dummy[2] * price3 + i25.[0.01] * APPL.dummy[3] * price3  /
U(Alt6)   = b26[0.2]  + b27[-0.001] * price3[109, 123, 138, 154, 173, 195, 218] + b28.dummy[-0.5|-1] * APPL[APPL]  + i29.[0.01] * APPL.dummy[2] * price3 + i30.[0.01] * APPL.dummy[3] * price3 /
U(Alt7)   = b31[0.1]  + b32[-0.001] * price2[102, 115, 129, 144, 162, 182, 204] + b33.dummy[-0.5|-1] * APPL[APPL]  + i34.[0.01] * APPL.dummy[2] * price2 + i35.[0.01] * APPL.dummy[3] * price2  /
U(Alt8) = b36[0.1]  + b37[-0.001] * price2[102, 115, 129, 144, 162, 182, 204] + b38.dummy[-0.5|-1] * APPL[APPL]  + i39.[0.01] * APPL.dummy[2] * price2 + i40.[0.01] * APPL.dummy[3] * price2  /
U(Alt9) = b41[0.1]  + b42[-0.001] * price1[87, 97, 109, 123, 138, 155, 174]   + b43.dummy[-0.5|-1] * APPL[APPL]  + i44.[0.01] * APPL.dummy[2] * price1 + i45.[0.01] * APPL.dummy[3] * price1  /
U(Other)    = b46[0.05]


So, how could I have a scenario variable (fixed across alternatives) and yet alternative-specific interactions?

Thank you very much.

Rafael.

Re: Help with a design whithin design/ with scenarios in Nge

PostPosted: Fri Jul 08, 2022 10:26 am
by Michiel Bliemer
You can try this script where I have switched to the modified Federov algorithm, which allows me to impose scenario constraints directly. Since this algorithm does not guarantee a high degree of attribute level balance for numerical attributes, I also included some level constraints for the price attribute. This algorithm may take some time to run. If it cannot find a feasible design, you may need to relax the level constraints or remove them entirely and use something like ;eff = 10*(mnl,d) + 1*(imbalance).

Code: Select all
Design
;alts = Alt1, Alt2, Alt3, Alt4, Alt5, Alt6, Alt7, Alt8, Alt9, Other, Optout
;rows = 60
;eff = (mnl,d)
;alg = mfederov(candidates = 2000)
;require:
alt1.appl = alt2.appl,
alt2.appl = alt3.appl,
alt3.appl = alt4.appl,
alt4.appl = alt5.appl,
alt5.appl = alt6.appl,
alt6.appl = alt7.appl,
alt7.appl = alt8.appl,
alt8.appl = alt9.appl
;model:
U(Alt1)   = b1[0.3]   + b2[-0.001]  * price5[134, 151, 169, 190, 213, 239, 269](4-15,4-15,4-15,4-15,4-15,4-15,4-15) + b3.dummy[-0.5|-1]  * APPL[1,2,3] + i4.[0.01]  * APPL.dummy[2] * price5 + i5.[0.01]  * APPL.dummy[3] * price5 /
U(Alt2)   = b6[0.3]   + b7[-0.001]  * price5                                                                        + b8.dummy[-0.5|-1]  * APPL        + i9.[0.01]  * APPL.dummy[2] * price5 + i10.[0.01] * APPL.dummy[3] * price5 /
U(Alt3)   = b11[0.3]  + b12[-0.001] * price5                                                                        + b13.dummy[-0.5|-1] * APPL        + i14.[0.01] * APPL.dummy[2] * price5 + i15.[0.01] * APPL.dummy[3] * price5 /
U(Alt4)   = b16[0.2]  + b17[-0.001] * price4[118, 133, 149, 168, 188, 211, 237](4-15,4-15,4-15,4-15,4-15,4-15,4-15) + b18.dummy[-0.5|-1] * APPL        + i19.[0.01] * APPL.dummy[2] * price4 + i20.[0.01] * APPL.dummy[3] * price4 /
U(Alt5)   = b21[0.2]  + b22[-0.001] * price3[109, 123, 138, 154, 173, 195, 218](4-15,4-15,4-15,4-15,4-15,4-15,4-15) + b23.dummy[-0.5|-1] * APPL        + i24.[0.01] * APPL.dummy[2] * price3 + i25.[0.01] * APPL.dummy[3] * price3 /
U(Alt6)   = b26[0.2]  + b27[-0.001] * price3                                                                        + b28.dummy[-0.5|-1] * APPL        + i29.[0.01] * APPL.dummy[2] * price3 + i30.[0.01] * APPL.dummy[3] * price3 /
U(Alt7)   = b31[0.1]  + b32[-0.001] * price2[102, 115, 129, 144, 162, 182, 204](4-15,4-15,4-15,4-15,4-15,4-15,4-15) + b33.dummy[-0.5|-1] * APPL        + i34.[0.01] * APPL.dummy[2] * price2 + i35.[0.01] * APPL.dummy[3] * price2 /
U(Alt8)   = b36[0.1]  + b37[-0.001] * price2                                                                        + b38.dummy[-0.5|-1] * APPL        + i39.[0.01] * APPL.dummy[2] * price2 + i40.[0.01] * APPL.dummy[3] * price2 /
U(Alt9)   = b41[0.1]  + b42[-0.001] * price1[87, 97, 109, 123, 138, 155, 174](4-15,4-15,4-15,4-15,4-15,4-15,4-15)   + b43.dummy[-0.5|-1] * APPL        + i44.[0.01] * APPL.dummy[2] * price1 + i45.[0.01] * APPL.dummy[3] * price1 /
U(Other)  = b46[0.05]
$


Michiel