# Mixed logit random parameters for individual specific variables

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


https://cran.r-project.org/web/packages/mlogit/mlogit.pdf

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?

library(mlogit)
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"))
summary(m)


Output:

Call:
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
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

• 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. Feb 20, 2019 at 9:35
• Yes, I am suggesting a random parameter (or slope) for income. Feb 20, 2019 at 10:06
• 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. Feb 20, 2019 at 10:29
• 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! Feb 20, 2019 at 10:53
• Please update the question with all this info, and include the actual model specifications, as well as the output (from summary()), Feb 20, 2019 at 11:26