It is my understanding that in a mixed logit model there can be two types of variables, alternative specific and individual specific. For example, in a dataset for choices of fishing modes like this (long format):

id  altern  price   catch   income  choice
1   beach   157.93  0.0678  7083    0
1   boat    157.93  0.2601  7083    0
1   charter 182.93  0.5391  7083    1
1   pier    157.93  0.0503  7083    0
2   beach   15.114  0.1049  1250    0
2   boat    10.534  0.1574  1250    0
2   charter 34.532  0.4671  1250    1
2   pier    15.112  0.0451  1250    0


the variables price and catch are alternative specific (they vary across alternatives) and the variable income is individual specific (do not vary across alternatives). Most of the examples of mixed logit that I have seen use random parameters only for alternative specific variables (R example, Stata example).

Is it possible or does it make sense to use random parameters for individual specific variables? For example could I use a random parameter in a variable such as "income" in the example above?

Based on the very helpful comment of @RobertLong below, it is clear that since there is no variation in income at the subject level, the random effects will not be identified and there will be either convergence problems or singular fit.

However, for income we will have 3 coefficients: boat:income, charter:income and pier:income (assuming beach as base alternative). In the following R code, I show how it is possible to estimate a random parameter for boat:income for example. However, I am not sure if this random parameter can be interpreted as the heterogeneous effect of people's income on the choice of boat. Or in other words, is such random parameter meaningful at all?

data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
m <- mlogit(mode ~ price+catch | income , data = Fish, 
            rpar = c("boat:income" = "n",price = "n",catch = "n"))


mlogit(formula = mode ~ price + catch | income, data = Fish, 
    rpar = c(price = "n", catch = "n", `boat:income` = "n"))

Frequencies of alternatives:
  beach    boat charter    pier 
0.11337 0.35364 0.38240 0.15059 

bfgs method
7 iterations, 0h:0m:18s 
g'(-H)^-1g = 5.67E+04 
last step couldn't find higher value 

Coefficients :
                       Estimate  Std. Error  z-value  Pr(>|z|)    
boat:(intercept)     1.0546e+01  3.0995e-01  34.0263 < 2.2e-16 ***
charter:(intercept)  3.5411e+00  2.7998e-01  12.6478 < 2.2e-16 ***
pier:(intercept)     1.0369e+00  2.1322e-01   4.8631 1.155e-06 ***
price               -5.3412e-02  9.2995e-04 -57.4354 < 2.2e-16 ***
catch                4.3868e+00  2.4274e-01  18.0721 < 2.2e-16 ***
boat:income          3.1719e-04  2.5933e-05  12.2309 < 2.2e-16 ***
charter:income      -1.6993e-04  6.0929e-05  -2.7891  0.005286 ** 
pier:income         -1.1019e-04  4.7761e-05  -2.3070  0.021054 *  
sd.price             1.8463e-02  1.8222e-03  10.1325 < 2.2e-16 ***
sd.catch            -3.6970e+00  4.8660e-01  -7.5975 3.020e-14 ***
sd.boat:income       1.0028e-01  1.1416e-04 878.4387 < 2.2e-16 ***
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Log-Likelihood: -1506.7
McFadden R^2:  -0.0060168 
Likelihood ratio test : chisq = -18.023 (p.value = 1)

random coefficients
            Min.     1st Qu.        Median          Mean     3rd Qu. Max.
price       -Inf -0.06586500 -0.0534118074 -0.0534118074 -0.04095861  Inf
catch       -Inf  1.89328020  4.3868433213  4.3868433213  6.88040644  Inf
boat:income -Inf -0.06732334  0.0003171871  0.0003171871  0.06795772  Inf
  • $\begingroup$ It is not clear what you are asking. Presumably you will fit a mixed model with id as a grouping variable. It makes no sense to also have income as a grouping variable (to fit random intercepts) - or are you suggesting to fit random slopes for income. $\endgroup$ Feb 20, 2019 at 9:35
  • $\begingroup$ Yes, I am suggesting a random parameter (or slope) for income. $\endgroup$ Feb 20, 2019 at 10:06
  • $\begingroup$ In that case, if there is no variation in income at the subject level, as I think you are saying, and that appears to be the case from the small data extract, then the random effects will not be identified and you will either get convergence problems, or a singular fit. $\endgroup$ Feb 20, 2019 at 10:29
  • $\begingroup$ That is correct! However, for income I will have 3 coefficients: income.boat, income.charter and income.pier (assuming beach as base alternative). I could fit income.boat for example, as random parameter. It can be identified and in fact with mlogit library for R and it can be estimated. However, I am not sure if such random parameter for income.boat can be interpreted as the heterogeneous effect of people's income on the choice of boat. Or in other words, is that random parameter meaningful at all? Thank you in advance! $\endgroup$ Feb 20, 2019 at 10:53
  • 1
    $\begingroup$ Please update the question with all this info, and include the actual model specifications, as well as the output (from summary()), $\endgroup$ Feb 20, 2019 at 11:26

1 Answer 1


In a MNL model, the only way you can include individual-specific variables (e.g., individual's income) in the model is by specifying additional interaction effects between the personal characteristics (income) and the alternative-specific variables of interest (e.g. price). Such interaction effects can for example be used to test whether men have a higher price sensitivity than women. It is technically possible to specify this interaction effect as a random effect - For instance, you could assume that men differ in their price sensitivity and then you could assume that the interaction effect between price and gender follows a Normal distribution with mean and variance to be estimated. However such model can be difficult to estimate (depending on the amount of data). If you are interested in exploring the effect of a single personal characteristic (eg gender), might be best to easier to consider a subgroup analysis (split sample).

  • $\begingroup$ Dear @Umka, thank you so much for your response. Could you please elaborate a little more in the theoretical reason for your answer? I just ask because I think your answer contrasts a little with some responses I got in the following post: researchgate.net/post/… $\endgroup$ Apr 5, 2019 at 17:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.