Important: Read this before posting to this forum

  1. This forum is for questions related to the use of Apollo. We will answer some general choice modelling questions too, where appropriate, and time permitting. We cannot answer questions about how to estimate choice models with other software packages.
  2. There is a very detailed manual for Apollo available at http://www.ApolloChoiceModelling.com/manual.html. This contains detailed descriptions of the various Apollo functions, and numerous examples are available at http://www.ApolloChoiceModelling.com/examples.html. In addition, help files are available for all functions, using e.g. ?apollo_mnl
  3. Before asking a question on the forum, users are kindly requested to follow these steps:
    1. Check that the same issue has not already been addressed in the forum - there is a search tool.
    2. Ensure that the correct syntax has been used. For any function, detailed instructions are available directly in Apollo, e.g. by using ?apollo_mnl for apollo_mnl
    3. Check the frequently asked questions section on the Apollo website, which discusses some common issues/failures. Please see http://www.apollochoicemodelling.com/faq.html
    4. Make sure that R is using the latest official release of Apollo.
  4. If the above steps do not resolve the issue, then users should follow these steps when posting a question:
    1. provide full details on the issue, including the entire code and output, including any error messages
    2. posts will not immediately appear on the forum, but will be checked by a moderator first. This may take a day or two at busy times. There is no need to submit the post multiple times.

WTP for MNL model

Ask questions about post-estimation functions (e.g. prediction, conditionals, etc) or other processing of results.
JuliavB
Posts: 41
Joined: 18 Aug 2021, 13:36

WTP for MNL model

Post by JuliavB »

Hi,

I´ve estimated WTP in two different ways:
1. MNL in preference space and then used delta_method:

###MNL IN PREFERENCE SPACE
# ################################################################# #
#### LOAD LIBRARY AND DEFINE CORE SETTINGS ####
# ################################################################# #
### Initialise
rm(list = ls())
library(apollo)
apollo_initialise()
### Set core controls
apollo_control = list(
modelName = "mnl_pretest",
modelDescr = "MNL model for pretest data",
indivID = "sys_RespNum"
)
# ################################################################# #
#### LOAD DATA AND APPLY ANY TRANSFORMATIONS ####
# ################################################################# #
Daten_Choice_Pivot <- read.csv("DatenApollo.csv", header = TRUE)

Daten_Choice_Pivot$Beitr_1[which(Daten_Choice_Pivot$Beitr_1==1)] <- 1.6
Daten_Choice_Pivot$Beitr_1[which(Daten_Choice_Pivot$Beitr_1==2)] <- 1.8
Daten_Choice_Pivot$Beitr_1[which(Daten_Choice_Pivot$Beitr_1==3)] <- 3.3
Daten_Choice_Pivot$Beitr_1[which(Daten_Choice_Pivot$Beitr_1==4)] <- 4.8

Daten_Choice_Pivot$Beitr_2[which(Daten_Choice_Pivot$Beitr_2==1)] <- 1.6
Daten_Choice_Pivot$Beitr_2[which(Daten_Choice_Pivot$Beitr_2==2)] <- 1.8
Daten_Choice_Pivot$Beitr_2[which(Daten_Choice_Pivot$Beitr_2==3)] <- 3.3
Daten_Choice_Pivot$Beitr_2[which(Daten_Choice_Pivot$Beitr_2==4)] <- 4.8

Daten_Choice_Pivot$Beitr_3[which(Daten_Choice_Pivot$Beitr_3==1)] <- 1.6
Daten_Choice_Pivot$Beitr_3[which(Daten_Choice_Pivot$Beitr_3==2)] <- 1.8
Daten_Choice_Pivot$Beitr_3[which(Daten_Choice_Pivot$Beitr_3==3)] <- 3.3
Daten_Choice_Pivot$Beitr_3[which(Daten_Choice_Pivot$Beitr_3==4)] <- 4.8

database = Daten_Choice_Pivot
# ################################################################# #
#### DEFINE MODEL PARAMETERS ####
# ################################################################# #
### Vector of parameters, including any kept fixed during estimation
apollo_beta = c(b0 = 0, b_Beitr = 0,
b_HoeheEEE300 = 0,
b_HoeheEEE600 = 0,
b_HoeheEEE900 = 0,
b_HoeheEEEunb = 0,
b_ZeitEEE12 = 0,
b_ZeitEEE42 = 0,
b_ZeitEEE72 = 0,
b_ZeitEEEunb = 0)
### Vector with parameter names (in quotes) to be kept fixed at
# their starting values during estimation.
# Use apollo_beta_fixed = c() if none
apollo_fixed = c("b_HoeheEEEunb", "b_ZeitEEEunb")
# ################################################################# #
#### GROUP AND VALIDATE INPUTS ####
# ################################################################# #
apollo_inputs = apollo_validateInputs()
# ################################################################# #
#### DEFINE MODEL AND LIKELIHOOD FUNCTION ####
# ################################################################# #
apollo_probabilities=function(apollo_beta, apollo_inputs,
functionality="estimate"){

### Function initialisation: do not change the following three commands
### Attach and detach inputs, and create empty list of probabilities
apollo_attach(apollo_beta, apollo_inputs)
on.exit(apollo_detach(apollo_beta, apollo_inputs))
P = list()

### List of MNL utilities: must use the same names as in mnl_settings
V = list()

V[["SQ"]] = b0 + b_Beitr*Beitr_1 + b_HoeheEEE300*(HoeheEEE_1==1) + b_HoeheEEE600*(HoeheEEE_1==2) +
b_HoeheEEE900*(HoeheEEE_1==3)+ b_HoeheEEEunb*(HoeheEEE_1==4) + b_ZeitEEE12*(ZeitEEE_1==1) +
b_ZeitEEE42*(ZeitEEE_1==2) + b_ZeitEEE72*(ZeitEEE_1==3) + b_ZeitEEEunb*(ZeitEEE_1==4)
V[["RefA"]] = b_Beitr*Beitr_2 + b_HoeheEEE300*(HoeheEEE_2==1) + b_HoeheEEE600*(HoeheEEE_2==2) +
b_HoeheEEE900*(HoeheEEE_2==3)+ b_HoeheEEEunb*(HoeheEEE_2==4) + b_ZeitEEE12*(ZeitEEE_2==1) +
b_ZeitEEE42*(ZeitEEE_2==2) + b_ZeitEEE72*(ZeitEEE_2==3) + b_ZeitEEEunb*(ZeitEEE_2==4)
V[["RefB"]] = b_Beitr*Beitr_3 + b_HoeheEEE300*(HoeheEEE_3==1) + b_HoeheEEE600*(HoeheEEE_3==2) +
b_HoeheEEE900*(HoeheEEE_3==3)+ b_HoeheEEEunb*(HoeheEEE_3==4) + b_ZeitEEE12*(ZeitEEE_3==1) +
b_ZeitEEE42*(ZeitEEE_3==2) + b_ZeitEEE72*(ZeitEEE_3==3) + b_ZeitEEEunb*(ZeitEEE_3==4)

### Define settings for MNL model component
mnl_settings = list(
alternatives = c(SQ=1, RefA=2, RefB=3),
choiceVar = Choice,
utilities = V
)

### Compute probabilities using MNL model
P[["model"]] = apollo_mnl(mnl_settings, functionality)

### Comment out as necessary
P = apollo_panelProd(P, apollo_inputs, functionality)
P = apollo_prepareProb(P, apollo_inputs, functionality)
return(P)
}

# ################################################################# #
#### MODEL ESTIMATION AND OUTPUT ####
# ################################################################# #
model = apollo_estimate(apollo_beta, apollo_fixed,
apollo_probabilities, apollo_inputs)
Output_MNL <- apollo_modelOutput(model, modelOutput_settings = modelOutput_Liste)
apollo_saveOutput(model, saveOutput_settings = modelOutput_Liste)

### WTP with Delta-Method
deltaMethod_settings=list(expression=c(WTP_Hoehe300="-1*(b_HoeheEEE300/b_Beitr)", WTP_Hoehe600="-1*(b_HoeheEEE600/b_Beitr)",
WTP_Hoehe900="-1*(b_HoeheEEE900/b_Beitr)", WTP_Zeit12="-1*(b_ZeitEEE12/b_Beitr)",
WTP_Zeit42="-1*(b_ZeitEEE42/b_Beitr)", WTP_Zeit72="-1*(b_ZeitEEE72/b_Beitr)" ))
apollo_deltaMethod(model, deltaMethod_settings)

_____Results_____
Estimates:
b0 -0.9618
b_Beitr -0.4862
b_HoeheEEE300 1.4049
b_HoeheEEE600 1.0240
b_HoeheEEE900 0.4527
b_HoeheEEEunb 0.0000
b_ZeitEEE12 1.0609
b_ZeitEEE42 0.5951
b_ZeitEEE72 0.2733
b_ZeitEEEunb 0.0000

WTP from delta_method:
Expression Value Robust s.e. Rob t-ratio (0)
WTP_Hoehe300 2.8895 0.6395 4.52
WTP_Hoehe600 2.1062 0.6731 3.13
WTP_Hoehe900 0.9310 0.5385 1.73
WTP_Zeit12 2.1820 0.5779 3.78
WTP_Zeit42 1.2238 0.5815 2.10
WTP_Zeit72 0.5622 0.5601 1.00
_____________________

2. MNL in WTP space:

### MNL IN WTP SPACE
# ################################################################# #
#### LOAD LIBRARY AND DEFINE CORE SETTINGS ####
# ################################################################# #

rm(list = ls())
library(apollo)
apollo_initialise()

### Set core controls
apollo_control = list(
modelName = "mnl_wtp_pretest",
modelDescr = "MNL model for pretest data, in wtp space",
indivID = "sys_RespNum",
outputDirectory = "output"
)

# ################################################################# #
#### LOAD DATA AND APPLY ANY TRANSFORMATIONS ####
# ################################################################# #

Daten_Choice_Pivot <- read.csv("DatenApollo.csv", header = TRUE)

Daten_Choice_Pivot$Beitr_1[which(Daten_Choice_Pivot$Beitr_1==1)] <- 1.6
Daten_Choice_Pivot$Beitr_1[which(Daten_Choice_Pivot$Beitr_1==2)] <- 1.8
Daten_Choice_Pivot$Beitr_1[which(Daten_Choice_Pivot$Beitr_1==3)] <- 3.3
Daten_Choice_Pivot$Beitr_1[which(Daten_Choice_Pivot$Beitr_1==4)] <- 4.8

Daten_Choice_Pivot$Beitr_2[which(Daten_Choice_Pivot$Beitr_2==1)] <- 1.6
Daten_Choice_Pivot$Beitr_2[which(Daten_Choice_Pivot$Beitr_2==2)] <- 1.8
Daten_Choice_Pivot$Beitr_2[which(Daten_Choice_Pivot$Beitr_2==3)] <- 3.3
Daten_Choice_Pivot$Beitr_2[which(Daten_Choice_Pivot$Beitr_2==4)] <- 4.8

Daten_Choice_Pivot$Beitr_3[which(Daten_Choice_Pivot$Beitr_3==1)] <- 1.6
Daten_Choice_Pivot$Beitr_3[which(Daten_Choice_Pivot$Beitr_3==2)] <- 1.8
Daten_Choice_Pivot$Beitr_3[which(Daten_Choice_Pivot$Beitr_3==3)] <- 3.3
Daten_Choice_Pivot$Beitr_3[which(Daten_Choice_Pivot$Beitr_3==4)] <- 4.8

database = Daten_Choice_Pivot

# ################################################################# #
#### DEFINE MODEL PARAMETERS ####
# ################################################################# #

### Vector of parameters, including any that are kept fixed in estimation
apollo_beta = c(b0 = 0, b_Beitr = 0,
wtp_HoeheEEE300 = 0,
wtp_HoeheEEE600 = 0,
wtp_HoeheEEE900 = 0,
wtp_HoeheEEEunb = 0,
wtp_ZeitEEE12 = 0,
wtp_ZeitEEE42 = 0,
wtp_ZeitEEE72 = 0,
wtp_ZeitEEEunb = 0)

### Vector with names (in quotes) of parameters to be kept fixed at their starting value in apollo_beta, use apollo_beta_fixed = c() if none
apollo_fixed = c("wtp_HoeheEEEunb", "wtp_ZeitEEEunb")

# ################################################################# #
#### GROUP AND VALIDATE INPUTS ####
# ################################################################# #

apollo_inputs = apollo_validateInputs()

# ################################################################# #
#### DEFINE MODEL AND LIKELIHOOD FUNCTION ####
# ################################################################# #

apollo_probabilities=function(apollo_beta, apollo_inputs, functionality="estimate"){

### Attach inputs and detach after function exit
apollo_attach(apollo_beta, apollo_inputs)
on.exit(apollo_detach(apollo_beta, apollo_inputs))

### Create list of probabilities P
P = list()

### List of utilities: these must use the same names as in mnl_settings, order is irrelevant
V = list()
V[["SQ"]] = b0 + b_Beitr * ( wtp_HoeheEEE300*(HoeheEEE_1==1) + wtp_HoeheEEE600*(HoeheEEE_1==2) +
wtp_HoeheEEE900*(HoeheEEE_1==3)+ wtp_HoeheEEEunb*(HoeheEEE_1==4) + wtp_ZeitEEE12*(ZeitEEE_1==1) +
wtp_ZeitEEE42*(ZeitEEE_1==2) + wtp_ZeitEEE72*(ZeitEEE_1==3) + wtp_ZeitEEEunb*(ZeitEEE_1==4) + Beitr_1 )
V[["RefA"]] = b_Beitr * ( wtp_HoeheEEE300*(HoeheEEE_2==1) + wtp_HoeheEEE600*(HoeheEEE_2==2) +
wtp_HoeheEEE900*(HoeheEEE_2==3)+ wtp_HoeheEEEunb*(HoeheEEE_2==4) + wtp_ZeitEEE12*(ZeitEEE_2==1) +
wtp_ZeitEEE42*(ZeitEEE_2==2) + wtp_ZeitEEE72*(ZeitEEE_2==3) + wtp_ZeitEEEunb*(ZeitEEE_2==4) + Beitr_2 )
V[["RefB"]] = b_Beitr * ( wtp_HoeheEEE300*(HoeheEEE_3==1) + wtp_HoeheEEE600*(HoeheEEE_3==2) +
wtp_HoeheEEE900*(HoeheEEE_3==3)+ wtp_HoeheEEEunb*(HoeheEEE_3==4) + wtp_ZeitEEE12*(ZeitEEE_3==1) +
wtp_ZeitEEE42*(ZeitEEE_3==2) + wtp_ZeitEEE72*(ZeitEEE_3==3) + wtp_ZeitEEEunb*(ZeitEEE_3==4) + Beitr_3 )

### Define settings for MNL model component
mnl_settings = list(
alternatives = c(SQ=1, RefA=2, RefB=3),
choiceVar = Choice,
utilities = V
)

### Compute probabilities using MNL model
P[["model"]] = apollo_mnl(mnl_settings, functionality)

### Take product across observation for same individual
P = apollo_panelProd(P, apollo_inputs, functionality)

### Prepare and return outputs of function
P = apollo_prepareProb(P, apollo_inputs, functionality)
return(P)
}

# ################################################################# #
#### MODEL ESTIMATION AND OUTPUT ####
# ################################################################# #

model = apollo_estimate(apollo_beta, apollo_fixed, apollo_probabilities, apollo_inputs)

Output_MNL_WTP <- apollo_modelOutput(model, modelOutput_settings = modelOutput_Liste)

apollo_saveOutput(model, saveOutput_settings = modelOutput_Liste)

_____Results_____
Estimates:
b0 -0.9609
b_Beitr -0.4863
wtp_HoeheEEE300 -2.8896
wtp_HoeheEEE600 -2.1069
wtp_HoeheEEE900 -0.9317
wtp_HoeheEEEunb 0.0000
wtp_ZeitEEE12 -2.1826
wtp_ZeitEEE42 -1.2246
wtp_ZeitEEE72 -0.5634
wtp_ZeitEEEunb 0.0000
_______________________

Questions:
- When using the Delta-method I´ve multiplied the estimate with "-1" (see code) as all parameters besides cost parameter (b_Beitr) were positive. Is that the right approach? Delta-method results then make perfect sense but the results from WTP space have the "wrong" sign as there e.g. should be higher WTP for HoeheEEE300 than for HoeheEEE600. Do you see why this issue with the sign could be the case? I did not find any similar case in the manual or the forum.
- My cost attribute Beitr is in the unit of percent (1,6%, 1,8%, 3,3%, 4,8%). How can it be derived from the coefficients how much percentage points more someone is willing to pay for a shift from HoeheEEEunb (reference category) to HoeheEEE300 (or from HoeheEEE300 to HoeheEEE600 etc.)?
And can it also be said that WTP for HoeheEEE300 is xy%? I am a bit confused, as I could not find examples for concrete wtp estimates interpretation for dummy coded attributes.

Any clarification is highly appreciated.
Thanks and best,
J.
stephanehess
Site Admin
Posts: 974
Joined: 24 Apr 2020, 16:29

Re: WTP for MNL model

Post by stephanehess »

Julia

unfortunately, this is an issue that seems to cause much confusion in the literature, and is really much ado about nothing.

What you just need to do is to interpret your results according to the model specification. So, in your case, b_Beitr is negative as cost is undesirable, and e.g. b_HoeheEEE300 is positive as this is desirable. The ratio of the marginal utilities is then negative as one attribute is desirable and one is undesirable. And WTP space estimation gives you a direct estimate of that ratio of the marginal utilities, hence the sign. So your results are completely fine, and you just need to take this into account in interpretation. If you want to see these as WTP for an increase in the desirable attribute, then just change the sign in the description of the results. The ratio of partial derivatives simply tells you what the relative value of the changes in the two attribute is, and if one attribute is desirable and the other is not, then this ratio is of course negative.

Regarding your second question, so for a change from the reference value to 300, the WTP would be 2.8896%, while to go from 900 to 300, it would 1.9579%

But in general, working with % of price in the model doesn't seem a great idea, as the base value would be different for different people maybe

Stephane
--------------------------------
Stephane Hess
www.stephanehess.me.uk
JuliavB
Posts: 41
Joined: 18 Aug 2021, 13:36

Re: WTP for MNL model

Post by JuliavB »

Hi Stephane,

thank you for your response.
I now have collected further data set with which the wtp estimates are as follows:
Expression Value Robust s.e. Rob t-ratio (0)
WTP_Hoehe300 3.7706 0.8892 4.24
WTP_Hoehe600 2.5797 0.7642 3.38
WTP_Hoehe900 0.6664 0.5987 1.11
WTP_Zeit12 2.6973 0.7349 3.67
WTP_Zeit42 1.9284 0.6663 2.89
WTP_Zeit72 1.1637 0.6612 1.76

When looking at the first estimate it means that for a shift from HoeheEEEunb (reference category) to HoeheEEE300 there is 3,7% increase in WTP, so 1,6% (status quo HoeheEEEunb) + 3,7%=5,3%.
I am confused because the highest level I have in my experiment for price is 4,8%. Can it be that there is estimated a higher WTP in total than the highest price level that was shown to the respondents?

Any advice would be highly appreciated.
Thank you very much!
stephanehess
Site Admin
Posts: 974
Joined: 24 Apr 2020, 16:29

Re: WTP for MNL model

Post by stephanehess »

Sorry, where is 1.6% coming from?
--------------------------------
Stephane Hess
www.stephanehess.me.uk
JuliavB
Posts: 41
Joined: 18 Aug 2021, 13:36

Re: WTP for MNL model

Post by JuliavB »

Sorry, maybe I was not clear enough in my explanations.

1,6% is the status quo level of price attribute "Beitr" which is only shown in fixed status quo option of each choice set (the other price levels are 1,8%, 3,3% and 4,8% which are shown in the alternatives).
I thought, that the WTP estimates listed in my former post mean, that the status quo price level is increased by 3,77% (1,6%+3,7%=5,3%) - so that the total WTP for a shift from dummy coded attribute level HoeheEEEunb (which is reference category) to HoeheEEE300 is 5,3%.
Is that the right interpretation? And can it be than, that even if highest price level shown was 4,8%, the total WTP is 5,3%?

Or is it not possible to use the standard WTP approach due to the fact that HoeheEEE and ZeitEEE are dummy coded?
I used Delta-method as follows for estimation:

### WTP mit Delta-Method
deltaMethod_settings=list(expression=c(WTP_Hoehe300="-1*(b_HoeheEEE300/b_Beitr)", WTP_Hoehe600="-1*(b_HoeheEEE600/b_Beitr)",
WTP_Hoehe900="-1*(b_HoeheEEE900/b_Beitr)", WTP_Zeit12="-1*(b_ZeitEEE12/b_Beitr)",
WTP_Zeit42="-1*(b_ZeitEEE42/b_Beitr)", WTP_Zeit72="-1*(b_ZeitEEE72/b_Beitr)" ))
apollo_deltaMethod(model, deltaMethod_settings)

Please see also my parameter estimates if that helps:

Value
b0 -0.1790988
b_Beitr -0.2988352
b_HoeheEEE300 1.1268266
b_HoeheEEE600 0.7709118
b_HoeheEEE900 0.1991541
b_ZeitEEE12 0.8060671
b_ZeitEEE42 0.5762845
b_ZeitEEE72 0.3477571

Would be very grateful if you could help clarifying.
Thank you very much in advance!
stephanehess
Site Admin
Posts: 974
Joined: 24 Apr 2020, 16:29

Re: WTP for MNL model

Post by stephanehess »

I'm not sure I fully understand your experiment. Could you please show me a screenshot and explain all the levels?

Thanks
--------------------------------
Stephane Hess
www.stephanehess.me.uk
JuliavB
Posts: 41
Joined: 18 Aug 2021, 13:36

Re: WTP for MNL model

Post by JuliavB »

Hi Stephane,

of course, sorry for the confusion. Please find attached a screenshot with an overview on attributes and levels and one example choice task.

The questions are:
1. Can Delta-Method be used like this, even if two of three attributes are dummy coded?

### WTP with Delta-Method
deltaMethod_settings=list(expression=c(WTP_HoeheEEE300="-1*(b_HoeheEEE300/b_Beitr)", WTP_HoeheEEE600="-1*(b_HoeheEEE600/b_Beitr)",
WTP_HoeheEEE900="-1*(b_HoeheEEE900/b_Beitr)", WTP_ZeitEEE12="-1*(b_ZeitEEE12/b_Beitr)",
WTP_ZeitEEE42="-1*(b_ZeitEEE42/b_Beitr)", WTP_ZeitEEE72="-1*(b_ZeitEEE72/b_Beitr)" ))
apollo_deltaMethod(model, deltaMethod_settings)

2.
Is the following interpretation right: When looking at the first WTP estimate below it means that for a shift from HoeheEEEunb (reference category in estimation) to HoeheEEE300 there is 3,7% increase in WTP, so 1,6% (status quo price level) + 3,7% (extra WTP for the shift) = 5,3% total WTP?
I am confused because the highest level I have in my experiment for price is 4,8% - but 5,3% exceeds 4,8%.
Or is it that the interpretation is completely different and just says: for a shift from HoeheEEEunb (reference category in estimation) to HoeheEEE300 there is a marginal WTP of 3,7% (but no addition to 1,6% status quo price level can be made)?

Expression Value Robust s.e. Rob t-ratio (0)
WTP_HoeheEEE300 3.7706 0.8892 4.24
WTP_HoeheEEE600 2.5797 0.7642 3.38
WTP_HoeheEEE900 0.6664 0.5987 1.11
WTP_ZeitEEE12 2.6973 0.7349 3.67
WTP_ZeitEEE42 1.9284 0.6663 2.89
WTP_ZeitEEE72 1.1637 0.6612 1.76

Thank you very much for your support!
Screenshot 2022-09-04 112810.png
Screenshot 2022-09-04 112810.png (20.39 KiB) Viewed 4094 times
stephanehess
Site Admin
Posts: 974
Joined: 24 Apr 2020, 16:29

Re: WTP for MNL model

Post by stephanehess »

Julia

the cost coefficient is continuous in your model, so you should just calculate those wtp measures without adding the SQ one. But so in your survey, people have to pay extra for the SQ too?

Stephane
--------------------------------
Stephane Hess
www.stephanehess.me.uk
JuliavB
Posts: 41
Joined: 18 Aug 2021, 13:36

Re: WTP for MNL model

Post by JuliavB »

Hi Stephane,

thanks for your reply.
The 1,6% is the price that people are already paying in the status quo (because it is the actual policy) - so for the status quo they never have to pay extra money apart from the 1,6%, only for the alternatives extra price is charged.
For the two dummy coded attributes the reference categories are also the actual status quo levels, therefore I am wondering if the calculated wtps should be added to the existing status quo price of 1,6% OR if the interpretation is just like:
"For a change from HoeheEEE_unb (reference level of the first dummy coded attribute) to HOEHEEEE_300 people are willing to pay 3,77% more."

Would be great if you could re-confirm or correct.

Thank you very much.
stephanehess
Site Admin
Posts: 974
Joined: 24 Apr 2020, 16:29

Re: WTP for MNL model

Post by stephanehess »

I would just see them as marginal WTP, so what extra they are willing to pay
--------------------------------
Stephane Hess
www.stephanehess.me.uk
Post Reply