Elasticities
Contents
Elasticities#
In this document, I summarize the main theoretical (really just mathematical) results for a variety of models we have covered in class including the OLS Model (and IV regression), the probit, Heckman and Tobit. For each model, I show various functional forms, the corresponding marginal effects and elasticities, and the stata commands that generate them.
Elasticities versus Marginal Effects#
Defining \(y\) as the dependent variable in the model and \(x_k\) as an independent variable, we can define marginal effects in a general manner as follows:
It is difficult to interpret marginal effects as they are the slope of the predicted regression function with respect to an independent variable and are in expressed in units of x and therefore difficult to compare to other marginal effects.
Consequently many economic and policy analysis proceeds with a related measure called an elasticity. We can define the elasticity of \(y\) with respect to \(x_k\) (again in a very general manner) as
or equivalently
Either of these elasticity expressions are to be interpreted as follows: a 1 percent change in \(x_k\) leads to an \(E_i\) percent change in \(E[y]\), and are therefore unitless and very useful for interpreting the economic significance of your parameters.
Implementation Methods#
While the results are general, there are different methods of implementation that I list below:
Evaluate everything at the mean of columns \(x_k\) and then calculate the corresponding \(E[y]\). This reduces variation and may provide a very good sense of how \(E[y]\) changes for “an average” case.
For each row of data (or each observation) calculate \(E[y_i]\) and \(x_{ik}\) for calculating the elasticity measure for each observation. Then average for the sample elasticity. This may be useful if \(E[y]\) is highly nonlinear and there isn’t reason to believe that evaluating elasticities at the sample means is policy relevant. This is the recommended approach, since for linear models it is equivalent to method (1).
This approach is similar to the method (2) except that rather that use \(E[y_i]\) (the predicted value), we use the actual dependent variable \(y_i\). For cases where our model is a poor predictor, this may be good, but will cause our elasticity measure to explode (to \(\infty\)) when \(y_i\) is zero.
Example: OLS and other linear (in parameters) Models#
The following results hold for OLS, IV, panel data and other fully linear models. For convenience the exposition below assumes there is one independent variable (and a constant) but the results are equivalent if more independent variables. In all of the cases in this section, the elasticity estimate for \(\mathbf{x}_1\) would be
Linear Regression Function#
Consider the population regression function
Here, the marginal effect is \(\beta_1\). The elasticity measure for observation \(i\) (assuming method (2) above) is
The stata commands would be
margins, dydx(variable list)
margins, eyex(variable list)
Semi-Log Linear Regression Function#
Consider the population regression function
Here, the marginal effect is a bit more complicated than in the previous case. First, raise each side of the equation to an exponential value:
Taking the derivative with respect to \(\mathbf{x}\) yields the marginal effect
To reiterate, this is the slope of the dependent variable and is difficult to interpret.
Given our semi-log functional form, the elasticity measure for observation \(i\) (assuming method (2) above) can be derived by manipulating equations~\ref{eq:e1} and \ref{eq:e2} to yield:
The stata commands would be
Marginal effect: Must compute manually
Elasticity:
margins, dyex(variable list)
Double-Log Linear Regression Function#
Consider the population regression function
Here, the marginal effect is a bit more complicated than in the previous case. First, raise each side of the equation to an exponential value:
Taking the derivative with respect to \(\mathbf{x}\) yields the marginal effect
To reiterate, this is the slope of the dependent variable and is difficult to interpret.
Given our semi-log functional form, the elasticity measure for observation \(i\) (assuming method (2) above) can be derived by manipulating equations~\ref{eq:e1} and \ref{eq:e2} to yield:
The stata commands would be
Marginal effect: Must compute manually
Elasticity:
margins, dydx(variable list)
Reverse Semi-Log Linear Regression Function#
This one isn’t used all that much. Consider the population regression function
Here, the marginal effect is a bit more complicated than in the previous case. First, raise each side of the equation to an exponential value:
Taking the derivative with respect to \(\mathbf{x}\) yields the marginal effect
To reiterate, this is the slope of the dependent variable and is difficult to interpret.
Given our semi-log functional form, the elasticity measure for observation \(i\) (assuming method (2) above) can be derived by manipulating equations~\ref{eq:e1} and \ref{eq:e2} to yield:
The stata commands would be
Marginal effect: Must compute manually
Elasticity:
margins, dyex
Example: Elasticities Probit and Logit Models#
In a probit and logit framework, the dependent variable takes on the discrete values [0,1]. Generally we code 1 as being equivalent to “true” or “yes”. Without getting into the specifics of maximum likelihood estimation, we write E[y] as \(Prob(y=1|\mathbf{x_i},\beta)\). Depending on the choice of probit or logit, this probability will take on either the CDF of the normal or weibull distributions. For this document, I will use a shorthand and write this probability as \(p(\mathbf{x}_i\beta)\). Consequently, we can re-write the marginal effects and elasticity equations as follows:
with an elasticity of
As there is no closed form analytical solution to this for either the probit model (and the logit is messy), stata approximates \(\frac{\partial p(b_0+b_1 x_i\beta)}{\partial x_i}\) by changing \(x_i\) by a small amount (e.g. letting \(x^\prime_i= x_i \times 1.01\), a 1% increase) and measuring
Given a 1 % change in x in the preceding step, the elasticity can be expressed as
The stata commands are
Marginal effect:
margins, dydx(variable list) predict(p)
Elasticity:
mfx compute, eyex predict(p)