Page 1 of 1

Pivot design and citation

PostPosted: Mon Mar 25, 2019 2:32 am
by j.hwang
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.

Re: Pivot design and citation

PostPosted: Mon Mar 25, 2019 3:20 pm
by Michiel Bliemer
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

Re: Pivot design and citation

PostPosted: Thu Mar 28, 2019 8:00 am
by j.hwang
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?

Re: Pivot design and citation

PostPosted: Thu Mar 28, 2019 8:30 am
by Michiel Bliemer
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