# Income and price elasticity for multinomial logit/probit and alternative-specific conditional logit/multinomial probit in Stata?

I have a question about estimating income/price elasticity of demand for multinomial logit/probit models in Stata. Lets say I fit a discrete choice model where the outcome is product chosen (4 alternatives) and I have variables at the individual and alternative level, e.g. income, education, and how much the person paid for the product at the individual level. In addition to case-specific variables, I also have the formal price of each alternative at the local market level (e.g. average price of Product A in County X, average price of Product A in County X, &c.).

I am interested in the own- and cross-price elasticities of demand for the products as well as the income elasticity of demand. Many of the examples online that show how to estimate elasticities from the model in Stata used OLS.

I have several options here as far as fitting models is concerned, including:

-mlogit-
-mprobit-
-asclogit-
-asmprobit-


My question is how to estimate the elasticity post-estimation.

Supposing I fit the following multinomial logit model:

mlogit prodchosen pricea priceb pricec income


and the prices and income are entered without log transformation, should I use margins,dyex(*) or margins,eyex(*) after the estimation to get the elasticities I want? e.g.

margins, dyex(*) predict(outcome(1))
margins, dyex(*) predict(outcome(2))
margins, dyex(*) predict(outcome(3))


I am confused about this because the outcome isn't continuous, so we're not really interested in "dy" per se but "dp" (change in probability), right?

Now, supposing I log-transformed the prices and income and entered the transformed variables into the model, e.g.

mlogit prodchosen lnpricea lnpriceb lnpricec lnincome

In this case, would margins,dydx(*) get me the elasticities I want because the prices/income are now entered as logs?

My other question, pertaining to asmprobit and asclogit, refers to this response from May: https://stats.stackexchange.com/a/99992

The user suggested using estat mfx, varlist(p) after asclogit to get the elasticities. I think my confusion comes from the "mfx" part of the command, because when I hear "mfx," I think of marginal effects, which is slightly different from elasticity. In the case of nonlinear models, is the marginal effect equivalent to the elasticity? If that is the case, would using margins,dydx(*) be the way to go for the mlogit and mprobit models above? Finally, if I entered the log-transformed prices and incomes in the asclogit model, would the interpretation of the dp/dx produced by estat mfx,varlist(p) (the elasticity matrix) change?