Pivot design

This forum is for posts covering broader stated choice experimental design issues.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Pivot design

Postby a.gohari@uq.edu.au » Mon Aug 20, 2018 10:05 am

Dear all,

I am a new user of Ngene and have a question regards to my design and I would be very grateful if I have your recommendation.

In my study, I have three alternatives namely: Owned regular vehicle (ORV), owned luxury vehicle (OLV), owned sport vehicle (OSV). Also, I have 5 attributes including, purchase price, trip cost, maintenance and repair, incentives, and fuel type.

The levels for purchase price for each alternative are different and are as follows:

ORV: 80%, 100%, 115%, 130% of base
OLV: 180%, 200%, 215%, 230% of base
OSV: 150%, 170%, 185%, 200% of base

Base: The base purchase price will be calculated from the purchase price thresholds stated by the respondents for the regular vehicle. From the price range category selected by the respondent, I will use the lower limit as our point of reference. To add some variation this figure will be multiplied by a random number generated from a uniform distribution between 0.9 and 1.1, and rounded to the nearest hundred, resulting in the purchase price for the current technology.

I am wondering how I could reflect this in my syntax.

Best regards,
Ali
a.gohari@uq.edu.au
 
Posts: 4
Joined: Thu Aug 16, 2018 1:57 pm

Re: Pivot design

Postby Michiel Bliemer » Mon Aug 20, 2018 10:35 am

Hi Ali,

The .ref and .piv suffix for attributes in the Ngene syntax are only useful if one of your attributes is a reference alternative. In your case, all alternatives are pivots around an alternative that is not shown, so in that case you have to generate the designs a bit differently in a two-step process.

Step 1: Generate syntax for a design with regular attribute levels (no pivots) using the average purchasing price as 100% and let Ngene generate a design.
Step 2: Translate the design manually from absolute values to pivots.

In case the purchase price varies widely, you can create repeat the above two steps for different price classes, e.g. cheap car, moderate car, expensive car, and optimise a design around their average purchasing prices separately and therefore in this case generate three pivot designs. When the respondent sets their purchase price thresholds, you select the appropriate design (cheap, moderate, expensive) and apply the pivots in that design to the respondent specific purchase price.

Further, your random number multiplication can also be 'simulated' in the Ngene syntax by adding interaction effects. For example, you can add bprice*price[15,20,25]*mult[0.9:1.1:0.01] to your utility function, which multiplies the price attribute with a number selected from 0.9, 0.91, 0.92, ..., 1.1. This number will not be random but will be an optimised value so maybe this is not what you want, but it does create more variation as you desire.

Send us your created syntax if you need any further help.

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

Re: Pivot design

Postby a.gohari@uq.edu.au » Wed Aug 22, 2018 6:40 pm

Dear Michiel,
Thank you for your reply. Please let me explain my syntax as I have faced some problems again and I have not been able to solve it.
I have 3 alternatives namely: owned regular vehicle (ORV), owned luxury vehicle (OLV), owned sport vehicle (OSV).
One of my attribute is purchase price and the levels for this attributes for each alternative are different and are as follows:
ORV: 80%, 100%, 115%, 130% of base
OLV: 180%, 200%, 215%, 230% of base
OSV: 150%, 170%, 185%, 200% of base
The following purchase price threshold will be asked from respondents before the choice sets and based on what a respondent answers, the base would be calculated for that response.
Less than $12,500
$12,500 – $17,499
$17,500 – $22,499
$22,500 – $27,499
$27,500 – $32,499
$32,500 – $37,499
$37,500 – $42,499
$42,500 – $47,499
$47,500 – $52,499
$52,500 – $57,499
More than $57,500
My other attributes are incentives (IN), trip cost (TC), and fuel type (FT) which is petrol and electric.
You said that using the average purchase price as 100%. Do you mean that I should use for example 15000 (average of 12500-17500), 20000 and … and write the syntax (similar to the one in page 156 in the manual but without pivot) (Please correct me if I am wrong). If yes, I did it but only the four first threshold appeared in design, and Ngene ignored the rest. In addition, the syntax is too large which I couldn't mention here.

2. I designed based on the following syntax, but I actually did not know how my 8 choice sets (with purchase price as 80, 100, ...) would appear the way I want it.

Design
; alts = OwnReg, OwnLux, OwnSpo
; rows = 24
; alg = mfederov
;block= 3
; eff = (mnl ,d)
; model:
U(OwnReg) = b1[-0.00001] * PPORV [80, 100, 115, 130]+ b3 [-0.00001]*TCORV[0.20,0.25,0.30,0.36]+ b6.dummy [0.00001| 0.00001] * INORV [1,2,3]+ b8.dummy [0.00001] * FTORV [1,2] /
U(OwnLux) = b9 [0] + b1 * PPOLV [180, 200, 215, 230]+ b3 *TCOLV[0.32,0.38,0.45,0.54]+ b6.dummy * INOLV [1,2,3] + b8.dummy * FTOLV [1,2] /
U(OwnSpo) = b10 [0] + b1 * PPOSV [150, 170, 185, 200]+ b3 *TCOSV[0.28,0.34,0.40,0.48]+ b6.dummy * INOSV [1,2,3]+ b8.dummy * FTOSV [1,2] /
$

3. In addition, when I added the asterisk for checking the dominant alternatives, I received the following warnings. Could you please tell me what it is?
Warning: Two alternatives were specified for alternative repetition checking, but do not have the same attribute names, and so will not be checked. 'ownreg', 'ownspo'
Warning: Two alternatives were specified for alternative repetition checking, but do not have the same attribute names, and so will not be checked. 'ownreg', 'ownlux'

4. In addition, I have tried to add the constraint inside each alternative in order to see the effect of considering a specific incentive on selecting an Electric vehicle. In other words, if the incentive 1 appears, electric vehicle shows.
if (b6.dummy [0.00001| 0.00001] * INORV [1,2,3]=0.00001, b8.dummy [0.00001] * FTORV [1,2]= 0.00002)
When I run the Ngene, Ngene asks me to close the program :cry:


I would be very grateful if I have your recommendation.

Best regards,
Ali
a.gohari@uq.edu.au
 
Posts: 4
Joined: Thu Aug 16, 2018 1:57 pm

Re: Pivot design

Postby Michiel Bliemer » Thu Aug 23, 2018 3:05 pm

1. With these thresholds I would create designs around the following average purchase prices:

$7,500 (for threshold 1)
$17,500 (for thresholds 2 and 3)
$27,500 (for thresholds 4 and 5)
$37,500 (for thresholds 6 and 7)
$47,500 (for thresholds 8 and 9)
$57,500 (for thresholds 10 and 11)

In other words, this would mean you need to generate 6 separate designs. You can further increase or reduce this number of designs.
I am not sure what you mean with "Ngene ignored the rest".

2. Is this the syntax that you are looking for?

Design
;alts = OwnReg*, OwnLux*, OwnSpo*
;rows = 24
;block = 3
;alg = mfederov
;eff = (mnl,d)
;reject:
OwnReg.PPORV = 150, OwnReg.PPORV = 170, OwnReg.PPORV = 180, OwnReg.PPORV = 185, OwnReg.PPORV = 200, OwnReg.PPORV = 215, OwnReg.PPORV = 230,
OwnLux.PPORV = 80, OwnLux.PPORV = 100, OwnLux.PPORV = 115, OwnLux.PPORV = 130, OwnLux.PPORV = 150, OwnLux.PPORV = 170, OwnLux.PPORV = 185,
OwnSpo.PPORV = 80, OwnSpo.PPORV = 100, OwnSpo.PPORV = 115, OwnSpo.PPORV = 130, OwnSpo.PPORV = 180, OwnSpo.PPORV = 215, OwnSpo.PPORV = 230,
OwnReg.TCORV = 0.28, OwnReg.TCORV = 0.32, OwnReg.TCORV = 0.34, OwnReg.TCORV = 0.38, OwnReg.TCORV = 0.40, OwnReg.TCORV = 0.45, OwnReg.TCORV = 0.48, OwnReg.TCORV = 0.54,
OwnLux.TCORV = 0.20, OwnLux.TCORV = 0.25, OwnLux.TCORV = 0.28, OwnLux.TCORV = 0.30, OwnLux.TCORV = 0.34, OwnLux.TCORV = 0.38, OwnLux.TCORV = 0.40, OwnLux.TCORV = 0.48,
OwnSpo.TCORV = 0.20, OwnSpo.TCORV = 0.25, OwnSpo.TCORV = 0.30, OwnSpo.TCORV = 0.32, OwnSpo.TCORV = 0.36, OwnSpo.TCORV = 0.38, OwnSpo.TCORV = 0.45, OwnSpo.TCORV = 0.54
;model:
U(OwnReg) = b1[-0.00001] * PPORV [80,100,115,130,150,170,180,185,200,215,230]+ b3 [-0.00001]*TCORV[0.20,0.25,0.28,0.30,0.32,0.34,0.36,0.38,0.40,0.45,0.48,0.54]+ b6.dummy [0.00001| 0.00001] * INORV [1,2,3]+ b8.dummy [0.00001] * FTORV [1,2] /
U(OwnLux) = b9[0] + b1 * PPORV + b3 * TCORV + b6 * INORV + b8 * FTORV /
U(OwnSpo) = b10[0] + b1 * PPORV + b3 * TCORV + b6 * INORV + b8 * FTORV
$

3. You can only check for dominance in unlabelled experiments where each utility function is identical (with the same attributes). In the syntax above I have given each attribute exactly the same name across each alternative, and using ;reject constraints I have ensured that appropriate levels are used for each alternative.

4. I do not understand the constraint you are setting. All constraints in Ngene must be set using attributes only, not including any parameters b. Do you mean to say: "if INORV = 1, then FTORV = 2"? If so, you can add the following ;reject constraints:
OwnReg.INORV = 1 and OwnReg.FTORV = 1,
OwnLux.INORV = 1 and OwnLux.FTORV = 1,
OwnSpo.INORV = 1 and OwnSpo.INORV = 1
Note that if(...) constraints can only be used using the default swapping algorithm, not the mfederov algorithm (due to the different natures of each algorithm), while ;require and ;reject can only be used with mfederov.

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

Re: Pivot design

Postby a.gohari@uq.edu.au » Wed Aug 29, 2018 10:58 am

Dear Michiel

Thanks for your reply. I have applied what you said and I have still some questions. Let’s first show my syntax for the threshold 1 ($7500):

Design
; alts = OwnReg, OwnLux, OwnSpo
; rows = 30
;block= 3
; eff = (mnl ,d)
;alg=mfederov
;reject:
OwnReg.mult= 150, OwnReg.mult= 170, OwnReg.mult= 180, OwnReg.mult= 185, OwnReg.mult= 200, OwnReg.mult= 215, OwnReg.mult= 230,
OwnLux.mult= 80, OwnLux.mult= 100, OwnLux.mult= 115, OwnLux.mult= 130, OwnLux.mult= 150, OwnLux.mult= 170, OwnLux.mult= 185,
OwnSpo.mult= 80, OwnSpo.mult= 100, OwnSpo.mult= 115, OwnSpo.mult= 130, OwnSpo.mult= 180, OwnSpo.mult= 215, OwnSpo.mult= 230,
OwnReg.TC = 28, OwnReg.TC = 32, OwnReg.TC = 34, OwnReg.TC = 38, OwnReg.TC = 40, OwnReg.TC = 45, OwnReg.TC = 48, OwnReg.TC=50,OwnReg.TC=54,OwnReg.TC=75,OwnReg.TC=85,OwnReg.TC=105,OwnReg.TC=125,OwnReg.TC=150,OwnReg.TC=180,OwnReg.TC=250,
OwnLux.TC = 20, OwnLux.TC = 25, OwnLux.TC = 28, OwnLux.TC = 30, OwnLux.TC = 34, OwnLux.TC = 38, OwnLux.TC = 40, OwnLux.TC = 48,OwnLux.TC=50,OwnLux.TC=75,OwnLux.TC=85,OwnLux.TC=105,OwnLux.TC=125,OwnLux.TC=150,OwnLux.TC=180,OwnLux.TC=250,
OwnSpo.TC = 20, OwnSpo.TC = 25, OwnSpo.TC = 30, OwnSpo.TC = 32, OwnSpo.TC = 36, OwnSpo.TC = 38, OwnSpo.TC = 45,OwnSpo.TC=50,OwnSpo.TC = 54,OwnSpo.TC=75,OwnSpo.TC=85,OwnSpo.TC=105,OwnSpo.TC=125,OwnSpo.TC=150,OwnSpo.TC=180,OwnSpo.TC=250

; model:
U(OwnReg) =b1[-0.00001] * PP [7500]* mult[80,100,115,130,150,170,180,185,200,215,230] + b3 [-0.00001]*TC[20,25,28,30,32,34,36,38,40,45,48,50,54,75,85,105,125,150,180,250]+ b6.dummy [0.00001| 0.00001|0.00001] * IN [0,1,2,3] + b8.dummy [0.00001] * FT [1,2] /
U(OwnLux) = b9[0] + b1 * PP * mult[80,100,115,130,150,170,180,185,200,215,230] + b3 * TC + b6 * IN + b8 * FT /
U(OwnSpo) = b10[0] + b1 * PP * mult[80,100,115,130,150,170,180,185,200,215,230] + b3 * TC + b6 * IN + b8 * FT
$

My questions are as follows:

1. After running the Ngene, in “formatted scenarios” section, I have another row which is “mult”. But I expected that Ngene multiplies “Purchase price” with my purchase levels (80, 100, …)and presented it in one row with, for example 80*7500=6000000. Is there any way to do this in Ngene?

2. My second question relates to my purchase price levels. My actual level is 80% of $7500. But when I add “%” to my syntax, I received an error. Also, I tried to consider my levels as 0.80,1,1.15, … , but Ngene considered them as 0, 1, and 2. which means that Ngene rounded them up to 0, 1, 2. My question is that how can I consider proportion or percentage in my syntax when I do not have a ref and piv..

3. My third question related to “constraints”. I need to have “if” but I have already have “;reject”. As you mentioned (as well as in manual), these two have a different algorithm. How could I have both in my syntax?
Actually, I want to have:
if (Ownreg.FT = 0, Ownreg.IN = 0)

Which means that if we have own regular vehicle with petrol fuel type, then we will have No incentives. How could I apply the mentioned if( ) in my syntax?


4. I have a partial choice set design. I want to present my alternatives in pairs. I have followed the following process:

As mentioned in manual, I choose +99999 for attributes with negative priors and -99999 for attributes with positive priors. After running the Ngene, I took numbers from the factorial in the design section in properties, and pasted in excel. When I created the excel file in a CSV format based on what is mentioned in the manual, I used this file in my algorithm. After running the Ngene, in my result, I still have choice sets with three columns that one of which has 99999 in all its rows.
My question is that, in “formatted scenarios” section, should I have two columns or three columns in which one of them would have 99999 in all its rows?

I would be very grateful if I have your recommendation.
a.gohari@uq.edu.au
 
Posts: 4
Joined: Thu Aug 16, 2018 1:57 pm

Re: Pivot design

Postby Michiel Bliemer » Wed Aug 29, 2018 11:22 am

1. See my very first response. In your case you should not put pivots in your utility function but rather put absolute values in your utility function. So replace 100 with 750000 or something etc. After Ngene has generated the design you should translate your levels back into percentages (750000 = 100%) and use these percentages in your survey instrument to use in multiplication. You are now mixing the design generating with the survey implementation.

2. See previous response, you should put absolute values in the syntax and convert them afterwards to pivots when you implement in the survey instrument.

3. You can add the following ;reject constraints:
OwnRef.FT = 0 and OwnReg.IN = 1,
OwnRef.FT = 0 and OwnReg.IN = 2,
OwnRef.FT = 0 and OwnReg.IN = 3
Note that OwnRef.FT = 0 does not exist in your syntax, you have specified that it can only have levels 1 and 2.

4. In formatted scenarios you will need to keep all three alternatives and show level 999999 as an empty space (using attribute level editor). Note that formatted scenarios is just for you to test the design. Once you implement the survey into a real survey instrument you will only show two alternatives, so you will need to put this logic will be in your survey instrument (e.g. Qualtrics or whatever software you are using).

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

Re: Pivot design

Postby a.gohari@uq.edu.au » Thu Sep 06, 2018 11:58 am

Dear Michiel,

Thank you for your prompt reply. I appreciated your time for answering my questions in details.

Best regard,
Ali
a.gohari@uq.edu.au
 
Posts: 4
Joined: Thu Aug 16, 2018 1:57 pm


Return to Choice experiments - general

Who is online

Users browsing this forum: No registered users and 6 guests

cron