Page 1 of 1

Introducing socio-demog and LVs in MMNL

Posted: 12 Jul 2023, 17:13
by manes
Hi all,

Working so far with different shelf software, socio-demog, and LVs could only be included as interaction vars (with one of the attributes) since there is no variation in these vars within respondents. However looking at the examples in Apollo manual (e.g. the spinal Surgery study or the NHS acute hospitals one), it seems that both can be introduced as 'stand-alone' variables, or as interacting with the ASCs.
In the latter case, is it correct to include LV as: Lambda_LV* LV rather than define the ASC as, for example: asc_bus= asc_ALT_base+Lambda_LV*LV

Also, do the same socio-demos that appear in the LV structural model need to be included also in the choice model (but not the other way around)?

Best,
Anat

Re: Introducing socio-demog and LVs in MMNL

Posted: 14 Jul 2023, 19:22
by dpalma
Hi Anat,

Unlike other software, Apollo provides the user with full freedom to define the utility functions. This increased freedom, however, also means that it is the user's responsibility to make sure the model is identifiable.

Let's imagine you have a model with three alternatives: A, B, and C, each with the following deterministic utility functions:

Code: Select all

V[["A"]] = asc_A + b1*x1_A
V[["B"]] = asc_B + b1*x1_B
V[["C"]] = asc_C + b1*x1_C
Where x1_j is the value of explanatory variable x1 for alternative j, asc_j are alternative specific constants, and b1 is a preference parameter to be estimated.

Now let's imagine you want to include a characteristic of the respondent as an additional explanatory variable, lets' call this new variable z. Note that z does not change across alternatives (because it is associated to the respondent). You have two ways of including this variable.

The first approach is by interacting it with a variable that does change across alternatives. In this case, we could interact it with x1 as follows:

Code: Select all

V[["A"]] = asc_A + b1*x1_A + b2*x1_A*z
V[["B"]] = asc_B + b1*x1_B + b2*x1_B*z
V[["C"]] = asc_C + b1*x1_C + b2*x1_B*z
In this case, b2 will measure how the influence of x1 changes due to the value of z.

A second approach is including z directly as a new explanatory variable in J-1 alternatives (where J is the number of alternatives), using different coefficients in each alternative. In our case, we could include two alternatives. It doesn't matter which alternative we exclude z from, as that will become our reference. The utilities would look as follows.

Code: Select all

V[["A"]] = asc_A + b1*x1_A
V[["B"]] = asc_B + b1*x1_B + b3*z
V[["C"]] = asc_C + b1*x1_C + b4*z
In this case, b3 measures the impact of z on the utility of B with respect to the utility of A; and b4 measures the impact of z on the utility of C, with respect to the utility of A. For example, if b3>0 it means that respondents for whom z>0 have a higher probability of choosing alternative B than alternative A ceteris paribus.

Notice that z can be a latent variable associated to the respondent (e.g. risk aversion, attitude towards recycling, etc.).

Also notice that doing

Code: Select all

V[["B"]] = asc_B + b1*x1_B + b3*z
Is equivalent to doing:

Code: Select all

asc_B = asc_B_base + b3*z
V[["B"]] = asc_B + b1*x1_B
Best wishes
David

Re: Introducing socio-demog and LVs in MMNL

Posted: 16 Jul 2023, 19:35
by manes
Dear David, Thanks a million for this step-by-step explanation, this flexibility is very useful!