First of all, Ngene is a tool to generate experimental designs, it is not a tool for data collection or data analysis. For data collection, you can use SurveyEngine or another tool that supports choice experiments. For data analysis, you can use Apollo, Biogeme, or Nlogit.
1. I recommend using ;eff = (mnl,d) because this is most common and minimises standard errors of the parameter estimates, i.e. it minimises se(beta). Using ;wtp minimises the standard errors of WTP estimates, i.e. it minimises se(beta1/betac).
2 & 3. For the data collection I recommend using SurveyEngine. You can copy and paste the Ngene design into SurveyEngine using design coding. I refer to the support of SurveyEngine. I believe you can also use the Choice Based Conjoint module in Qualtrics or you can program your own javascript code. To estimate choice models, you can use free software (Apollo or Biogeme) or commercial software (Nlogit). The data format for Apollo & Biogeme is similar, but is different for Nlogit. I refer to the manuals of these softwares.
4. Ngene is not a data analysis tool, it is an experimental design generation tool.
5. In a design in Ngene you can find a Syntax tab. After you have applied scenario formatting, the syntax is appended with formatting syntax such as in the syntax below. You can use this syntax to edit directly without the need to reformat all scenarios again.
6. In the scenario formatting editor, you can right-click on the grid and add a column to the right for the opt-out alternative.
Note that the formatted scenarios are ONLY for you as an analyst to quickly inspect the design. These formatted scenarios are not meant to be used to collect data. Instead, you format all choice tasks in a survey tool like SurveyEngine, where you can also add images etc.
- Code: Select all
design
;alts = policyA*, policyB*, sq*
;rows = 8
;eff = (mnl,d)
;alg = mfederov
;require:
sq.flooding = 5, sq.recycling = 0, sq.quality = 0, sq.tax = 25
;model:
U(policyA) = b_flood[0.1] * flooding[5,10,15,20] ? years between floodings
+ b_recycle.dummy[0.3] * recycling[1,0] ? 0 = no (base), 1 = yes
+ b_quality.dummy[0.3|0.5] * quality[1,2,0] ? 0 = low (base), 1 = medium, 2 = high
+ b_tax[-0.005] * tax[25,50,75,100] ? annual stormwater land tax ($)
/
U(policyB) = b_flood * flooding
+ b_recycle * recycling
+ b_quality * quality
+ b_tax * tax
/
U(sq) = b_sq[0]
+ b_flood * flooding
+ b_recycle * recycling
+ b_quality * quality
+ b_tax * tax
;formatTitle = 'Scenario <scenarionumber>'
;formatTableHeader = 'All residents and land owners pay a stormwater charge in Sydney. Which of the following options would have your preference&?'
;formatTableDimensions = 4, 6
;formatChoices = choice
;formatTable:
1,1 = '' /
1,2 = 'Flood mitigation' /
1,3 = 'Recycle stormwater' /
1,4 = 'Water quality' /
1,5 = 'Annual land tax' /
1,6 = 'Preferred option&:' /
2,1 = 'Policy A' /
2,2 = '<policya.flooding>' /
2,3 = '<policya.recycling>' /
2,4 = '<policya.quality>' /
2,5 = '<policya.tax>' /
2,6 = '<choice>' /
3,1 = 'Policy B' /
3,2 = '<policyb.flooding>' /
3,3 = '<policyb.recycling>' /
3,4 = '<policyb.quality>' /
3,5 = '<policyb.tax>' /
3,6 = '<choice>' /
4,1 = 'Current' /
4,2 = '<sq.flooding>' /
4,3 = '<sq.recycling>' /
4,4 = '<sq.quality>' /
4,5 = '<sq.tax>' /
4,6 = '<choice>'
;formatTableStyle:
1,1 = 'default' /
1,2 = 'headingattribute' /
1,3 = 'headingattribute' /
1,4 = 'headingattribute' /
1,5 = 'headingattribute' /
1,6 = 'headingattribute' /
2,1 = 'heading1' /
2,2 = 'body1' /
2,3 = 'body1' /
2,4 = 'body1' /
2,5 = 'body1' /
2,6 = 'choice1' /
3,1 = 'heading2' /
3,2 = 'body2' /
3,3 = 'body2' /
3,4 = 'body2' /
3,5 = 'body2' /
3,6 = 'choice2' /
4,1 = 'heading3' /
4,2 = 'body3' /
4,3 = 'body3' /
4,4 = 'body3' /
4,5 = 'body3' /
4,6 = 'choice3'
;formatStyleSheet = Bone.css
;formatAttributes:
policya.flooding(5=Flooding occurs once every # years, 10=Flooding occurs once every # years, 15=Flooding occurs once every # years, 20=Flooding occurs once every # years) /
policya.recycling(1=Yes, 0=No) /
policya.quality(1=Medium, 2=High, 0=Low) /
policya.tax(25=A&$ #, 50=A&$ #, 75=A&$ #, 100=A&$ #) /
policyb.flooding(5=Flooding occurs once every # years, 10=Flooding occurs once every # years, 15=Flooding occurs once every # years, 20=Flooding occurs once every # years) /
policyb.recycling(1=Yes, 0=No) /
policyb.quality(1=Medium, 2=High, 0=Low) /
policyb.tax(25=A&$ #, 50=A&$ #, 75=A&$ #, 100=A&$ #) /
sq.flooding(5=Flooding occurs once every # years, 10=Flooding occurs once every # years, 15=Flooding occurs once every # years, 20=Flooding occurs once every # years) /
sq.recycling(1=Yes, 0=No) /
sq.quality(1=Medium, 2=High, 0=Low) /
sq.tax(25=A&$ #, 50=A&$ #, 75=A&$ #, 100=A&$ #)
$
Michiel