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:

(29)#\[\begin{equation} ME_k=\frac{\partial E[y]}{\partial x_k} \end{equation}\]

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

(30)#\[\begin{equation}\label{eq:e1} E_k = \frac{\partial E[y]}{\partial x_i} \times \frac{x_k}{E[y]} = ME_k \times \frac{x_k}{E[y]} \end{equation}\]

or equivalently

(31)#\[\begin{equation}\label{eq:e2} E_k = \frac{\partial E[ln(y)]}{\partial ln(x_k)} \end{equation}\]

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

(32)#\[\begin{equation} E_x=\sum^N_{i=1} \frac{E_{xi}}{N} \end{equation}\]

Linear Regression Function#

Consider the population regression function

(33)#\[\begin{equation} \mathbf{y} = \beta_0 + \beta_1 \mathbf{x} +\mathbf{\epsilon} \end{equation}\]

Here, the marginal effect is \(\beta_1\). The elasticity measure for observation \(i\) (assuming method (2) above) is

(34)#\[\begin{equation} E_{xi} = \frac{\partial E[y_i]}{\partial x_{k}} \times \frac{x_{i}}{E[y]} = \beta_1 \times \frac{x_{i}}{\beta_0 + \beta_1 x_{i}} \end{equation}\]

The stata commands would be

  • margins, dydx(variable list)

  • margins, eyex(variable list)

Semi-Log Linear Regression Function#

Consider the population regression function

(35)#\[\begin{equation} ln(\mathbf{y}) = \beta_0 + \beta_1 \mathbf{x} +\mathbf{\epsilon} \end{equation}\]

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:

(36)#\[\begin{equation} \mathbf{y} = e^{\beta_0 + \beta_1 \mathbf{x} +\mathbf{\epsilon}} \end{equation}\]

Taking the derivative with respect to \(\mathbf{x}\) yields the marginal effect

(37)#\[\begin{equation} ME_x = \beta_1 e^{\beta_0 + \beta_1 \mathbf{x} +\mathbf{\epsilon}} \end{equation}\]

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:

(38)#\[\begin{equation} E_{ik} = \frac{\partial E[ln(y)]}{\partial x_i)} x_i = \beta_1 x_i \end{equation}\]

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

(39)#\[\begin{equation} ln(\mathbf{y}) = \beta_0 + \beta_1 ln(\mathbf{x}) +\mathbf{\epsilon} \end{equation}\]

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:

(40)#\[\begin{equation} \mathbf{y} = e^{\beta_0 + \beta_1 ln(\mathbf{x}) +\mathbf{\epsilon}} \end{equation}\]

Taking the derivative with respect to \(\mathbf{x}\) yields the marginal effect

(41)#\[\begin{equation} ME_ix = \frac{\beta_1}{x_i} e^{\beta_0 + \beta_1 \mathbf{x} +\mathbf{\epsilon}} \end{equation}\]

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:

(42)#\[\begin{equation} E_{ix} = ME_{ix} \frac{x_i}{E[y_i]} = \beta_1 \end{equation}\]

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

(43)#\[\begin{equation} \mathbf{y} = \beta_0 + \beta_1 ln(\mathbf{x}) +\mathbf{\epsilon} \end{equation}\]

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

(44)#\[\begin{equation} ME_ix = \frac{\beta_1}{x_i} \end{equation}\]

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:

(45)#\[\begin{equation} E_{ix} = ME_{ix} \frac{x_i}{E[y_i]} = \frac{\beta_1}{E[y_i]} \end{equation}\]

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:

(46)#\[\begin{equation} ME_i=\frac{\partial p(b_0+b_1 x_i\beta)}{\partial x_i} \end{equation}\]

with an elasticity of

(47)#\[\begin{equation} E_i=\frac{\partial p(b_0+b_1 x_i\beta)}{\partial x_i}\times \frac{x_i}{p(b_0+b_1 x_i\beta)} \end{equation}\]

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

(48)#\[\begin{equation} \Delta p_i = p(b_0+b_1 x^\prime_i\beta) - p(b_0+b_1 x_i\beta). \end{equation}\]

Given a 1 % change in x in the preceding step, the elasticity can be expressed as

(49)#\[\begin{equation} E_i = \frac{\Delta p_i}{p(b_0+b_1 x_i\beta)} \times 100 \end{equation}\]

The stata commands are

  • Marginal effect: margins, dydx(variable list) predict(p)

  • Elasticity: mfx compute, eyex predict(p)