SP experimental design with 9 attributes

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

SP experimental design with 9 attributes

Postby Unisa » Mon Feb 12, 2018 10:13 am

Dear Professor Bliemer and Ngene users,
I am working on an SP experimental design for route choice selection that offers three alternatives that I have labelled: Boat, Bridge, Long-distance.My study area is in Indonesia. I have considered following nine attributes:
1. Travel Time ( TT Boat, TTbridge, TTLongDistance )
2. Access to main mode (ACCT)
3. Travel cost ( TCBoat,TCBridge,TC,Longdistance)
4. Maximum delay ( MDT)
5. Weather
6. Level of personal security ( LSEC)
7. Level of capacity (space) (LCAP)
8. Level of comfort(LCOM)
9. Frequency
Here is my syntax for the pilot survey as syntax below:
(Boat)=A [0.0142]*TTBoat[ 60 ,50,45,30]+
A*ACCT[15,10,5,0]+
A*TCBoat[2,1.5,1,0.5]+
A*MDT[20,15,10,5]+
B[0.142]*Weather[0,2,4,6]+
B*LSEC[0,2,4,6]+
A*LCAP[0,2,4,6]+
A*LCOM[0,2,4,6]+
A*FREQ[30,20,10,0]/
U(Bridge)= A*TTBridge[75,60,50,40]+
A*ACCT+
A*TCBridge[2,1.5,1,0.5]+
A*MDT[20,15,10,5]+
B*Weather[weather]+
B*LSEC+
A*LCAP+
A*LCOM+
A*FREQ [30,20,10,0]/
U(Longdistance)= A*TTLongdistance[90,75,60,45]+
A*ACCT+
A*TCLongdistance[2,1.5,1,0.5]+
A*MDT[20,15,10,5]+
B*Weather[weather]+
B*LSEC+
A*LCAP+
A*LCOM+
A*FREQ [30, 20, 10, 0]
$

I have run Ngene and here is the result ;

MNL efficiency measures

D error 0.005964
A error 0.020778
B estimate 86.064972
S estimate 16.680745

Prior a b
Fixed prior value 0.0142 0.142
Sp estimates 16.680745 7.750307
Sp t-ratios 0.479897 0.704039

With these values, I have designed SP questionnaires and trailed on 20 participants and ran my Nlogit model . There are 27 parameters (k=27), and as per my Ngene comments, I have been advised to reduce the number of parameters due to degrees of freedom.
I request you to go through above syntax and please comment on these questions:
1. Do you notice any syntax errors?
2. Should I group the parameters? If yes, how do you group them?
3. Overall do you notice any major issues in the results?
I do appreciate your quick comments as I need to undertake surveys sometime next month. The bridge is nearing completion, and I need to conduct this survey before the bridge is constructed and will again undertake the survey after the bridge is completed.

Kind regards

Monita
Unisa
 
Posts: 11
Joined: Tue Jul 25, 2017 4:09 pm

Re: SP experimental design with 9 attributes

Postby Michiel Bliemer » Mon Feb 12, 2018 10:40 am

1. You cannot use the same variable for different parameters. You only use A and B but if you need to use 27 different parameters, i.e. b1, b2, b3, ... , b27. Further, you have weather as a scenario variable, which is fine, but now it is constant across three modes, which means you cannot estimate the parameter for weather. You can only estimate this is you use an opt-out alternative or use weather as an interaction variable, i.e. TT*weather.

2. I am not sure what you mean with grouping parameters, but you can consider using generic parameters for one or more attributes, i.e. use bcost as parameter for all three route alternatives. That would reduce the number of parameters from 27 to as low as 9, but you probably do not want to make all parameters generic, i.e. travel time by boat or bridge is likely experienced and valued differently.

3. The results are currently not meaningful since the parameters were incorrectly specified. Note that sample size estimates can only be used if you provide reliable priors (e.g. from a pilot study), otherwise you should ignore the S estimates.

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

Re: SP experimental design with 9 attributes

Postby Unisa » Mon Feb 12, 2018 2:26 pm

Thank you Professor Bliemer for your responses.
Unisa
 
Posts: 11
Joined: Tue Jul 25, 2017 4:09 pm

Re: SP experimental design with 9 attributes

Postby Unisa » Fri Apr 20, 2018 3:26 pm

Dear: Prof Bliemer and Ngene User

Hi, Prof Bliemer and Ngene user

I have two questions about my new design,

My First query is related to constants in the utility functions. In my syntax, I have not used constants as they didn’t influence the performance of my design. I would like your opinion on utility functions without constants? If I don’t use them will there be any issue in future if someone wants to use them or modify?

My second query is related to effect coding. I used continues coding (1, 2, 3, 4) and then gave the actual value in Ngene. However for each of my route choice even though travel times vary I have used the same effct coding. Is this OK?

this is my syntax:
Design
;Alts = Boat,Bridge,Nafri
;rows = 12
;Eff =(mnl,d)
;model:
U(Boat)=b1[0.5]*TIMEBoat[1,2,3,4]+b2[0.4]*ACCTOMOBoat[1,2,3,4]+b3[0.25]*DELAYTI[1,2,3,4]+b4[0.6]*TOTALCO[1,2,3,4]+b5[0.20]TimeBoat*WEATHER[1,2,3,4]+b6[0.09]*LOSEC[1,2,3]+b7[0.42]*FREQU[1,2,3,4,5,6]/
U(Bridge)=b8[0.7]*TIMEBridge[1,2,3,4]+b9[0.3]*ACCTOMO[1,2,3,4]+b3*DELAYTI+b10[0.55]*TOTALCOB[1,2,3,4]+b5*TIMEBridge*WEATHER[weather]+b6*LOSEC+b7*FREQU/
U(Nafri)=b11[0.35]*TIMENafri[1,2,3,4]+b9*ACCTOMO+b3*DELAYTI+b12[0.45]*TOTALCO+b5*TimeNafri*WEATHER[weather]+b6*LOSEC+b7*FREQU
;formatTitle = 'Scenario <scenarionumber>'
;formatTableDimensions = 4, 9
;formatTable:
1,1 = '' /
1,2 = 'timeboat' /
1,3 = 'acctomoboat' /
1,4 = 'delayti' /
1,5 = 'totalco' /
1,6 = 'weather' /
1,7 = 'losec' /
1,8 = 'frequ' /
1,9 = 'Choice question&:' /
2,1 = 'boat' /
2,2 = '<boat.timeboat>' /
2,3 = '<boat.acctomoboat>' /
2,4 = '<boat.delayti>' /
2,5 = '<boat.totalco>' /
2,6 = '<boat.weather>' /
2,7 = '<boat.losec>' /
2,8 = '<boat.frequ>' /
2,9 = '' /
3,1 = 'bridge' /
3,2 = '<bridge.timebridge>' /
3,3 = '<bridge.acctomo>' /
3,4 = '<bridge.delayti>' /
3,5 = '<bridge.totalcob>' /
3,6 = '<boat.weather>' /
3,7 = '<bridge.losec>' /
3,8 = '<bridge.frequ>' /
3,9 = '' /
4,1 = 'nafri' /
4,2 = '<nafri.timenafri>' /
4,3 = '<nafri.acctomo>' /
4,4 = '<nafri.delayti>' /
4,5 = '<nafri.totalco>' /
4,6 = '<boat.weather>' /
4,7 = '<nafri.losec>' /
4,8 = '<nafri.frequ>' /
4,9 = ''
;formatTableStyle:
1,1 = 'default' /
1,2 = 'headingattribute' /
1,3 = 'headingattribute' /
1,4 = 'headingattribute' /
1,5 = 'headingattribute' /
1,6 = 'headingattribute' /
1,7 = 'headingattribute' /
1,8 = 'headingattribute' /
1,9 = 'headingattribute' /
2,1 = 'heading1' /
2,2 = 'body1' /
2,3 = 'body1' /
2,4 = 'body1' /
2,5 = 'body1' /
2,6 = 'body1' /
2,7 = 'body1' /
2,8 = 'body1' /
2,9 = 'choice1' /
3,1 = 'heading2' /
3,2 = 'body2' /
3,3 = 'body2' /
3,4 = 'body2' /
3,5 = 'body2' /
3,6 = 'body2' /
3,7 = 'body2' /
3,8 = 'body2' /
3,9 = 'choice2' /
4,1 = 'heading3' /
4,2 = 'body3' /
4,3 = 'body3' /
4,4 = 'body3' /
4,5 = 'body3' /
4,6 = 'body3' /
4,7 = 'body3' /
4,8 = 'body3' /
4,9 = 'choice3'
;formatStyleSheet = Blue buttons.css
;formatAttributes:
boat.timeboat(1=60 Minutes, 2=50 Minutes, 3=45 Minutes, 4=30 Minutes) /
boat.acctomoboat(1=2.5 Km, 2=2 Km, 3=1.5 Km, 4=1 Km) /
boat.delayti(1=20 Minutes, 2=15 Minutes, 3=10 Minutes, 4=5 Minutes) /
boat.totalco(1=3, 2=2, 3=1.5, 4=1) /
boat.weather(1=Wet and Windy, 2=Windy, 3=Hot, 4=Fine) /
boat.losec(1=Poor, 2=Enough, 3=Good) /
boat.frequ(1=60 Minutes, 2=30 Minutes, 3=20 Minutes, 4=15 Minutes, 5=10 Minutes, 6=0 Minutes) /
bridge.timebridge(1=60 Minutes, 2=45 Minutes, 3=30 Minutes, 4=20 Minutes) /
bridge.acctomo(1=2 Km, 2=1.5 , 3=1 , 4=0.5 ) /
bridge.delayti(1=20 Minutes, 2=15 Minutes, 3=10 Minutes, 4=5 Minutes) /
bridge.totalcob(1=2.5 , 2=2 , 3=1.5 , 4=1) /
bridge.losec(1=Poor, 2=Enough, 3=Good) /
bridge.frequ(1=60 Minutes, 2=30 Minutes, 3=20 Minutes, 4=15 Minutes, 5=10 Minutes, 6=0 Minutes) /
bridge.weather() /
nafri.timenafri(1=90 Minutes, 2=75 Minutes, 3=60 Minutes, 4=45 Minutes) /
nafri.acctomo(1=2 Km, 2=1.5 Km, 3=1 Km, 4=0.5 Km) /
nafri.delayti(1=20 Minutes, 2=15 Minutes, 3=10 Minutes, 4=5 Minutes) /
nafri.totalco(1=3.7, 2=2.5 , 3=1.5 , 4=1.2) /
nafri.losec(1=Poor, 2=Enough, 3=Good) /
nafri.frequ(1=60 Minutes, 2=30 Minutes, 3=20 Minutes, 4=15 Minutes, 5=10 Minutes, 6=0) /
nafri.weather()
$

Thank you in advance for your help

Kind regards

Monita
Unisa
 
Posts: 11
Joined: Tue Jul 25, 2017 4:09 pm

Re: SP experimental design with 9 attributes

Postby Michiel Bliemer » Fri Apr 20, 2018 4:58 pm

You can add constants with a zero prior (e.g. b0[0]). Even if you leave them out in the design, you will still be able to estimate them when you analyse your data.

Regarding effects coding, you have to make a choice how you define your attribute levels. The following two are OK:

1. U(boat) = b1[x] * TIMEBoat[30,45,50,60] + ...
2. U(boat) = b1.effects[x|x|x] * TIMEBoat[1,2,3,0] + ... where 0 is the reference level

In the first option you assume TIMEBoat as a continuous variable and you only estimate linear effects through one parameter b1, while in the second option you assume TIMEBoat is a discrete variable and you estimate non-linear effects through 3 effect-coded parameters.

In each case, you have to set the priors (denoted by x) properly. You have to be careful here, they preferably come from a pilot study. If you do not know them, it is safest to set them to a zero or to a small (positive or negative) value close to zero.

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

Re: SP experimental design with 9 attributes

Postby Unisa » Sat Apr 21, 2018 9:34 pm

Prof. Bliemer

Thank you for information and help.
Can you give your thought, how about my syntax above ? May I using continues number [1,2,3,4] to replace the actual travel time [60,50,45,30] as I did in my current design. Is the syntax above not on the right track?
Please let me know what your comment , i am really not confidence due to lack of experiences and knowledge.Thank you so much

Kind regards

Monita
Unisa
 
Posts: 11
Joined: Tue Jul 25, 2017 4:09 pm

Re: SP experimental design with 9 attributes

Postby Michiel Bliemer » Sun Apr 22, 2018 8:26 am

If you use numbers 1,2,3,4 you need to specify dummy or effects coded variables. Therefore your syntax above is not appropriate.

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

Re: SP experimental design with 9 attributes

Postby Unisa » Mon Apr 23, 2018 3:58 am

Thank you so much for your guidance , it is so helpful.

Kind regards

Monita
Unisa
 
Posts: 11
Joined: Tue Jul 25, 2017 4:09 pm

Re: SP experimental design with 9 attributes

Postby Unisa » Mon Apr 23, 2018 1:20 pm

Good day , Prof .Bliemer
After did trials and then I renew it again then I obtained this syntax below , would you mind to have a look please ?, please let me know if this one not appropriate. Thanks you so much for your time .

MNL efficiency measures

D error 0.036529
A error 0.483499
B estimate 45.281608
S estimate 39.215843


Design
;Alts = Boat,Bridge,Nafri
;rows = 12
;Eff =(mnl,d)
;model:
U(Boat)=b0[0.00005]+b1[-0.5]*Timeboat[30,45,50,60]+b2[-0.4]*Acctoboat[1,1.5,2,2.5]+b3[-0.15]*Delayti[5,10,15,20]+b4[-0.3]*Totalcoboat[1,1.5,2,3]+b5[0.2]Timeboat*weather[0,2,4,6]+b6[0.1]*Losec[2,4,6]+b7[-0.250]*Waitingtime[0,10,15,20,30,60]/
U(Bridge)=b01[0.07]+b8[-0.7]*Timebridge[20,30,45,60]+b9[-0.45]*Acctomo[0.5,1,1.5,2]+b3*Delayti+b10[-0.6]*Totalbridge[1,1.5,2,2.5]+b5*Timebridge*weather[weather]+b6*LOSEC+b7*Waitingtime/
U(Nafri)=b11[-0.35]*Timenafri[45,60,75,90]+b9*Acctomo+b3*Delayti+b12[-0.23]*Totalconafri[1.2,1.5,2.5,3.7]+b5*Timenafri*weather[weather]+b6*LOSEC+b7*Waitingtime
;formatTitle = 'Scenario <scenarionumber>'
;formatTableDimensions = 4, 9
;formatTable:
1,1 = '' /
1,2 = 'time' /
1,3 = 'acctot' /
1,4 = 'delayti' /
1,5 = 'totalco' /
1,6 = 'weather' /
1,7 = 'losec' /
1,8 = 'waitingtime' /
1,9 = 'Choice question&:' /
2,1 = 'boat' /
2,2 = '<boat.timeboat>' /
2,3 = '<boat.acctoboat>' /
2,4 = '<boat.delayti>' /
2,5 = '<boat.totalcoboat>' /
2,6 = '<boat.weather>' /
2,7 = '<boat.losec>' /
2,8 = '<boat.waitingtime>' /
2,9 = '' /
3,1 = 'bridge' /
3,2 = '<bridge.timebridge>' /
3,3 = '<bridge.acctomo>' /
3,4 = '<bridge.delayti>' /
3,5 = '<bridge.totalbridge>' /
3,6 = '<boat.weather>' /
3,7 = '<bridge.losec>' /
3,8 = '<bridge.waitingtime>' /
3,9 = '' /
4,1 = 'nafri' /
4,2 = '<nafri.timenafri>' /
4,3 = '<nafri.acctomo>' /
4,4 = '<nafri.delayti>' /
4,5 = '<nafri.totalconafri>' /
4,6 = '<boat.weather>' /
4,7 = '<nafri.losec>' /
4,8 = '<nafri.waitingtime>' /
4,9 = ''
;formatTableStyle:
1,1 = 'default' /
1,2 = 'headingattribute' /
1,3 = 'headingattribute' /
1,4 = 'headingattribute' /
1,5 = 'headingattribute' /
1,6 = 'headingattribute' /
1,7 = 'headingattribute' /
1,8 = 'headingattribute' /
1,9 = 'headingattribute' /
2,1 = 'heading1' /
2,2 = 'body1' /
2,3 = 'body1' /
2,4 = 'body1' /
2,5 = 'body1' /
2,6 = 'body1' /
2,7 = 'body1' /
2,8 = 'body1' /
2,9 = 'choice1' /
3,1 = 'heading2' /
3,2 = 'body2' /
3,3 = 'body2' /
3,4 = 'body2' /
3,5 = 'body2' /
3,6 = 'body2' /
3,7 = 'body2' /
3,8 = 'body2' /
3,9 = 'choice2' /
4,1 = 'heading3' /
4,2 = 'body3' /
4,3 = 'body3' /
4,4 = 'body3' /
4,5 = 'body3' /
4,6 = 'body3' /
4,7 = 'body3' /
4,8 = 'body3' /
4,9 = 'choice3'
;formatStyleSheet = Blue buttons.css
;formatAttributes:
boat.timeboat(30=30 Minutes, 45=45 Minutes, 50=50 Minutes, 60=60 Minutes) /
boat.acctoboat(1=1 Km, 1.5=1.5 Km, 2=2 Km, 2.5=3 Km) /
boat.delayti(5=5 Minutes, 10=10 Minutes, 15=15 Minutes, 20=20 Minutes) /
boat.totalcoboat(1=1 Dollar, 1.5=1.5 Dollars, 2=2 Dollars, 3=3 Dollars) /
boat.weather(0=Wet and Windy, 2=Windy, 4=Hot, 6=Fine) /
boat.losec(2=Poor, 4=Enough, 6=Good) /
boat.waitingtime(0=0, 10=10 Minutes, 15=15 Minutes, 20=20 Minutes, 30=30 Minutes, 60=60 Minutes) /
bridge.timebridge(20=20 Minutes, 30=30 Minutes, 45=45 Minutes, 60=60 Minutes) /
bridge.acctomo(0.5=0.5 Km, 1=1 Km, 1.5=1.5 Km, 2=2 Km) /
bridge.delayti(5=5 Km, 10=10 Km, 15=15 Km, 20=20 Km) /
bridge.totalbridge(1=1 Dollar, 1.5=1.5 Dollars, 2=2 Dollars, 2.5=2.5 Dollars) /
bridge.losec(2=Poor, 4=Enough, 6=Good) /
bridge.waitingtime(0=0, 10=10 Minutes, 15=15 Minutes, 20=20 Minutes, 30=30 Minutes, 60=60 Minutes) /
bridge.weather() /
nafri.timenafri(45=45 Minutes, 60=60 Minutes, 75=75 Minutes, 90=90 Minutes) /
nafri.acctomo(0.5=0.5 Km, 1=1 Km, 1.5=1.5 Km, 2=2 Km) /
nafri.delayti(5=5 Minutes, 10=10 Minutes, 15=15 Minutes, 20=20 Minutes) /
nafri.totalconafri(1.2=1.2 Dollars, 1.5= 1.5 Dollars, 2.5= Dollars, 3.7= 3.7 Dollars) /
nafri.losec(2=Poor, 4=Enough, 6=Good) /
nafri.waitingtime(0=0 Minutes, 10=10 Minutes, 15=15 Minutes, 20=20 Minutes, 30=30 Minutes, 60=60 Minutes) /
nafri.weather()
$
Unisa
 
Posts: 11
Joined: Tue Jul 25, 2017 4:09 pm

Re: SP experimental design with 9 attributes

Postby Michiel Bliemer » Mon Apr 23, 2018 4:27 pm

That looks fine.
Your priors seem quite large to me. Where do these values come from? Priors should always be set carefully. Values of zero are always safe (although may lead to some loss of efficiency). You may want to consider more conservative values (e.g. divide all of them by 2 to make them shrink towards zero).

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

Next

Return to Choice experiments - Ngene

Who is online

Users browsing this forum: No registered users and 51 guests

cron