# How to determine by what percent the target variable will change if we change a variable by some percent in Linear Regression?

I trained a linear regression model on some data. Now I have the intercept and the other coefficients. How to relate that with percent change in target given some percent change in a feature, keeping all others constant?

• Hi: unless the variables were both in logs when you did the regression, you can't do what you want to do. You can only get how many units the target will increase for every unit increase in the feature. Jun 25, 2021 at 14:15

Let's say we have fitted a model such as:

$$y = x_1 + x_2 + \epsilon$$

and we obtained esimates giving the following equation:

$$\hat{y} = 2x_1 + 3x_2$$

Thus for a 1 unit change in $$x_1$$ we expect a change of 2 units of $$y$$.

It is not possible to get the expected % change in $$y$$ from a % change in $$x$$ unless the variables are on a log scale prior to running the model.

• An alternative interpretation is that the percent change conditional on the explanatory variables can be estimated. Regardless, what do the hats over the $x_i$ mean?
– whuber
Jun 25, 2021 at 14:56
• @whuber the hats over the xs were a typo ! I think they are talking about estimating a % change in $y$ from a $p$% change in $x$ - I'm not sure how you would estimate that from the regression equation ? Jun 25, 2021 at 15:01
• An example of the alternative interpretation is a fitted model $\hat y=\hat\beta_0+\hat\beta_1x_1+\hat\beta_2x_2.$ Fixing $(x_1,x_2)$ and supposing $x_1\ne0,$ consider a $100p\%$ change in $x_1.$ The new estimate differs from the original by $\hat\beta_1(px_1),$ thereby inducing a $100\hat\beta_1(px_1)/\hat y$ percent change in $\hat y$ (assuming it, too, is nonzero).
– whuber
Jun 25, 2021 at 15:10
• @RobertLong I understand this solution, and this will work to some extent. Two things I want to ask 1) Can I normalize the coefficients to 0-1 scale in such a way that their sum is 1. Thus each feature will contribute their normalised factor to the final value? 2)How does log help us here? Jun 26, 2021 at 9:48

We can back out the answer with a little auxiliary information about the covariates.

Your linear model is probably something like $$E[y \vert x, z] = \hat y= \hat \alpha + \hat \beta \cdot x +\hat \delta \cdot z.$$

What is the change in the expected value of $$y$$ associated with 1 unit change with $$x$$? We can easily get that from the derivative:$$\frac{\Delta \hat y}{\Delta x} =\hat \beta.$$

We can then turn that into an elasticity:

$$\epsilon =\frac{100\cdot\frac{\Delta \hat y}{\hat y}}{100 \cdot \frac{\Delta x}{x} }= \frac{\% \Delta \hat y}{\% \Delta x}= \hat \beta \cdot \frac{x}{\hat y}=\frac{\partial \hat y} {\partial x} \cdot \frac{x}{\hat y}.$$

In other words, to get an elasticity, we just need to multiply the regression coefficient on $$x$$ by the value of $$x$$ itself over the prediction of $$y$$. Note that this is a function of the covariates and can vary across observations. We need some way to summarize the individual elasticities.

There are several ways to put this into practice, but the most common is to take the average in the sample:

$$\bar \epsilon =\frac{1}{N} \sum_{i=1}^N \hat \beta \cdot \frac{x_i}{\hat y_i}.$$

Some software can do this for us, which makes the calculation of the standard errors much easier. Here's an example in Stata:

. sysuse auto, clear
(1978 automobile data)

. regress price mpg foreign

Source |       SS           df       MS      Number of obs   =        74
-------------+----------------------------------   F(2, 71)        =     14.07
Model |   180261702         2  90130850.8   Prob > F        =    0.0000
Residual |   454803695        71  6405685.84   R-squared       =    0.2838
Total |   635065396        73  8699525.97   Root MSE        =    2530.9

------------------------------------------------------------------------------
price | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
mpg |  -294.1955   55.69172    -5.28   0.000    -405.2417   -183.1494
foreign |   1767.292    700.158     2.52   0.014     371.2169    3163.368
_cons |   11905.42   1158.634    10.28   0.000     9595.164    14215.67
------------------------------------------------------------------------------

. /* canned */
. margins, eyex(mpg)

Average marginal effects                                    Number of obs = 74
Model VCE: OLS

Expression: Linear prediction, predict()
ey/ex wrt:  mpg

------------------------------------------------------------------------------
|            Delta-method
|      ey/ex   std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
mpg |  -1.238224   .3721885    -3.33   0.001    -1.980347   -.4961013
------------------------------------------------------------------------------

. /* by hand */
. predict yhat, xb

. generate elasticity =  -294.1955 *(mpg/yhat)

. summarize elasticity

Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
elasticity |         74   -1.238224    1.060581  -7.488722  -.4215304


This means that a 1% increase in mpg is associated with 1.2% decrease in price.

If we don't have the raw data, but have some summary statistics on the covariates and the coefficients, we can plug those into the first formula instead of averaging. The answers won't match exactly but are usually reasonably close.

• I just realized that @whuber suggested this very approach in the comment above. Jun 26, 2021 at 1:32
• ϵ¯ is the overall elasticity. Just confirming that I won't need that for individual features, that's right? Jun 29, 2021 at 17:14
• I am not sure I understand your question. Could you elaborate on what you mean by individual features? Jun 29, 2021 at 17:54
• Had a little confusion. I got it now. Thanks. Jun 29, 2021 at 18:24