Pivot design and citation

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Pivot design and citation

Postby j.hwang » Mon Mar 25, 2019 2:32 am

Hello,

I have read a post about pivot design (http://choice-metrics.com/forum/viewtopic.php?f=4&t=460), and I have questions:

1. To make a citation for Dr. Bliemer's two-step process, which article should I refer to?
I found one (Rose, J. M., Bliemer, M. C., Hensher, D. A., & Collins, A. T. (2008). Designing efficient stated choice experiments in the presence of reference alternatives. Transportation Research Part B: Methodological, 42(4), 395-406.), but if you can suggest more appropriate article(s), it would be great.

2. I have developed my own syntax, but I encountered an error message like this:
"Error: The modified Federov candidate set size of 2000 could not be achieved. The percentages of candidates that failed are: 47.53% due dominance, 52.47% due constraints, and 0% due repeated alternatives. The candidate set size has been adjusted from 2000 to 90."

Here are the details of my design:
* Alternatives: Taxi 1, Taxi 2, Paratransit, Bus, Personal Car
* Attribute: each mode has three attributes (travel time, travel cost, and crowd)
* Attribute levels:
- travel time: 70%, 100%, 130%
- travel cost: 70%, 100%, 130%
- crowd: Yes, No
* The base would be calculated for respondents' answers.
* Some conditions would be applied:
- If TAXI1 is CROWD, TAXI1.COST should not be 130%.
- If TAXI1 is not CROWD, TAXI1.COST should not be 70%.
- If TAXI2 is CROWD, TAXI2.COST should not be 130%.
- If TAXI2 is not CROWD, TAXI2.COST should not be 70%.
- PC.COST should be higher than TAXI1.COST.
- TAXI1.COST should be higher TAXI2.COST.
- Paratransit cost (PR.COST) should be 1.83.
- Bus cost (BS.COST) should be 1.25.
- PC should not be crowd.
- PR and BS should be crowd.

* I will develop three different designs.
* My syntax of one of the three designs is like:

Design
;alts = TAXI1*, TAXI2*, PR*, BS*, PC*
;rows = 12
;alg = mfederov(stop=noimprov(80 secs))
;eff = (mnl,d)
;reject:
TAXI1.HUMAN = 1 and TAXI1.COST = 1.95,
TAXI1.HUMAN = 2 and TAXI1.COST = 1.05,
TAXI2.HUMAN = 1 and TAXI2.COST = 1.56,
TAXI2.HUMAN = 2 and TAXI2.COST = 0.84,
PC.COST < TAXI1.COST,
TAXI1.COST < TAXI2.COST,
PC.HUMAN = 2,
PR.HUMAN = 1,
BS.HUMAN = 1,
TAXI1.TIME=8, TAXI1.TIME=11, TAXI1.TIME=14, TAXI1.TIME=17, TAXI1.TIME=19, TAXI1.TIME=21, TAXI1.TIME=22, TAXI1.TIME=27, TAXI1.TIME=30, TAXI1.TIME=35, TAXI1.TIME=39,
TAXI2.TIME=8, TAXI2.TIME=9, TAXI2.TIME=11, TAXI2.TIME=14, TAXI2.TIME=16, TAXI2.TIME=19, TAXI2.TIME=21, TAXI2.TIME=27, TAXI2.TIME=30, TAXI2.TIME=35, TAXI2.TIME=39,
PR.TIME=8, PR.TIME=9, PR.TIME=11, PR.TIME=12, PR.TIME=14, PR.TIME=16, PR.TIME=17, PR.TIME=21, PR.TIME=22, PR.TIME=30, PR.TIME=39,
BS.TIME=8, BS.TIME=9, BS.TIME=11, BS.TIME=12, BS.TIME=14, BS.TIME=16, BS.TIME=17, BS.TIME=19, BS.TIME=22, BS.TIME=27, BS.TIME=35,
PC.TIME=9, PC.TIME=12, PC.TIME=16, PC.TIME=17, PC.TIME=19, PC.TIME=21, PC.TIME=22, PC.TIME=27, PC.TIME=30, PC.TIME=35, PC.TIME=39,
TAXI1.COST=0.84, TAXI1.COST=1.20, TAXI1.COST=1.25, TAXI1.COST=1.47, TAXI1.COST=1.56, TAXI1.COST=1.83, TAXI1.COST=2.10, TAXI1.COST=2.73,
TAXI2.COST=1.05, TAXI2.COST=1.25, TAXI2.COST=1.47, TAXI2.COST=1.50, TAXI2.COST=1.83, TAXI2.COST=1.95, TAXI2.COST=2.10, TAXI2.COST=2.73,
PR.COST=0.84, PR.COST=1.05, PR.COST=1.20, PR.COST=1.25, PR.COST=1.47, PR.COST=1.50, PR.COST=1.56, PR.COST=1.95, PR.COST=2.10, PR.COST=2.73,
BS.COST=0.84, BS.COST=1.05, BS.COST=1.20, BS.COST=1.47, BS.COST=1.50, BS.COST=1.56, BS.COST=1.83, BS.COST=1.95, BS.COST=2.10, BS.COST=2.73,
PC.COST=0.84, PC.COST=1.05, PC.COST=1.20, PC.COST=1.25, PC.COST=1.50, PC.COST=1.56, PC.COST=1.83, PC.COST=1.95

? b1 = travel time
? b2 = travel cost
? b3.dummy = human assistance (1 = No, 2 = Yes)

;model:
U(PC) = b1[-0.00001] * TIME[8,9,11,12,14,16,17,19,21,22,27,30,35,39] + b2[-0.00001] * COST [0.84,1.05,1.20,1.25,1.47,1.50,1.56,1.83,1.95,2.10,2.73] + b3.dummy[0.00001] * HUMAN[1, 2] /
U(TAXI1) = alt.TAXI1[0] + b1 * TIME + b2[-0.00001] * COST + b3.dummy * HUMAN /
U(TAXI2) = alt.TAXI2[0] + b1 * TIME + b2 * COST + b3.dummy * HUMAN /
U(PR) = alt.PR[0] + b1 * TIME + b2 * COST + b3.dummy * HUMAN /
U(BS) = alt.BS[0] + b1 * TIME + b2 * COST + b3.dummy * HUMAN
$

Could you please help me fix the error message?

Thank you very much in advance.
j.hwang
 
Posts: 2
Joined: Wed Mar 20, 2019 2:45 pm

Re: Pivot design and citation

Postby Michiel Bliemer » Mon Mar 25, 2019 3:20 pm

1. Yes that is the appropriate article.

2. You are using many constraints and this makes it difficult for Ngene to find a feasible design. A lot of your constraints are not necessary if you properly specify the attribute levels. I have fixed this up in the syntax below where I use different attribute names whenever they have different levels. Note that it still assumes a generic coefficient across all alternatives for time and cost.

Code: Select all
Design
;alts = TAXI1*, TAXI2*, PR*, BS*, PC*
;rows = 12
;alg = mfederov(stop=noimprov(80 secs))
;eff = (mnl,d)
;reject:
TAXI1.HUMAN = 1 and TAXI1.COSTTAXI1 = 1.95,
TAXI1.HUMAN = 2 and TAXI1.COSTTAXI1 = 1.05,
TAXI2.HUMAN = 1 and TAXI2.COSTTAXI2 = 1.56,
TAXI2.HUMAN = 2 and TAXI2.COSTTAXI2 = 0.84,
PC.HUMAN = 2,
PR.HUMAN = 1,
BS.HUMAN = 1,
PC.COSTPC < TAXI1.COSTTAXI1,
TAXI1.COSTTAXI1 < TAXI2.COSTTAXI2

? b1 = travel time
? b2 = travel cost
? b3.dummy = human assistance (1 = No, 2 = Yes)

;model:
U(PC)    =                b1[-0.00001] * TIMEPC[8,11,14]     + b2[-0.00001] * COSTPC[1.47,2.10,2.73]    + b3.dummy[0.00001] * HUMAN[1,2] /
U(TAXI1) = alt.TAXI1[0] + b1           * TIMETAXI1[9,12,16]  + b2           * COSTTAXI1[1.05,1.50,1.95] + b3.dummy          * HUMAN /
U(TAXI2) = alt.TAXI2[0] + b1           * TIMETAXI2[12,17,22] + b2           * COSTTAXI2[0.84,1.20,1.56] + b3.dummy          * HUMAN /
U(PR)    = alt.PR[0]    + b1           * TIMEPR[19,27,35]    + b2           * COSTPR[1.83]              + b3.dummy          * HUMAN /
U(BS)    = alt.BS[0]    + b1           * TIMEBS[21,30,39]    + b2           * COSTBS[1.25]              + b3.dummy          * HUMAN
$


Finally, note that in Ngene the last level is the reference level when you use dummy coding. Therefore, human assistance (yes, 2) has value zero and no human assistance (no, value 1) has a positive value. In order words, using your current priors this means that no human assistance is preferred. This may not be correct, it may need to be -0.00001, please check.

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

Re: Pivot design and citation

Postby j.hwang » Thu Mar 28, 2019 8:00 am

Thank you very much for the revised code. But when I tried running your code, I still had an error message like: "Error: The modified Federov candidate set size of 2000 could not be achieved. The percentages of candidates that failed are: 42.95% due dominance, 57.05% due constraints, and 0% due repeated alternatives. The candidate set size has been adjusted from 2000 to 1002."

Is it okay with the candidate set size of 1002?
j.hwang
 
Posts: 2
Joined: Wed Mar 20, 2019 2:45 pm

Re: Pivot design and citation

Postby Michiel Bliemer » Thu Mar 28, 2019 8:30 am

That error is actually a warning. The default size is 2000 but since your design is heavily constrained it could only find less feasible choice tasks. 1002 choice tasks is still fine, that should give you more than sufficient choice. If you would like to have a larger candidate set you will need to increase the number of levels in your attributes, from 3 to 4 for example.

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


Return to Choice experiments - Ngene

Who is online

Users browsing this forum: Google [Bot] and 15 guests