Anti-logging coefficients of a regression with log-transformed outcome variable yields confusing estimates

I am testing whether self-reported days' use of illicit cannabis in the previous 28-day period predicts levels of a cannabis metabolite measured in participants' urine. There are four 4-week periods, with urine and reported days' use recorded at the end of each period. As I am not really interested in trend over time I used lmList() in the nlme package to perform a regression at each measurement period in isolation.

This is the lmList output for the slopes of each regression - with estimates representing how much the raw level of the cannabinoid metabolite is predicted to change with an increase of one days' increase in self-reported use. The left-most column represents how many weeks into the trial measurements were made, 0 for baseline then 4 weeks, 8 weeks, and 12 weeks.

   Estimate Std. Error  t value     Pr(>|t|)
0  165.2543   78.90671 2.094300 3.773392e-02
4  125.8289   31.13957 4.040802 8.092335e-05
8  104.4929   33.17259 3.149977 1.933232e-03
12 139.5357   38.49324 3.624940 3.828149e-04


The outcome data was extremely non-normal and had a massive range, so I log-transformed it, and found, to my pleasant surprise, that the outcome was now distributed normally and much easier to graph against the predictor. Here are the results after the log-transformation. Once again these are slopes only for regressions of the metabolite of self-reported days' use at each of four time points.

     Estimate Std. Error  t value     Pr(>|t|)
0  0.07753396 0.03461041 2.240192 2.638964e-02
4  0.07375009 0.01365858 5.399545 2.249782e-07
8  0.07836017 0.01455030 5.385466 2.405177e-07
12 0.10416654 0.01688407 6.169515 4.951663e-09


So far so good, right? Well...unfortunately the estimates from a regression involving a log-transformed outcome are not very intuitively comprehensible for readers. So I anti-logged the slope estimates in order to be able to express the regression coefficients in the original scale of the metabolite

exp(c(0.07753396, 0.07375009, 0.07836017, 0.10416654))


And got

[1] 1.080582 1.076538 1.081512 1.109785


Huh?!! This is a very long way from the estimates obtained from the regressions on the raw scale. Are the anti-logged estimates kosher? What am I missing?

Your original model for each time point is $y = mx + b$. This implies a couple of things:

• on average, a person who reports 0 days of use will give a response of $b$.
• every day of reported use adds a certain amount ($m$) to $b$.

Your revised model is $\log(y) = m'x + b'$. Taking the anti-logarithm of the revised model gives $y' = \exp(m'x)\exp(b') = \exp(b')\exp(m')^x$. This implies:

• a person who reports 0 days of use will give a response of $\exp(b')$.
• every day of use multiplies the baseline response by $\exp(m')$.

So one way to interpret your anti-logged estimates is that every day of self-reported use results in a 8-11% increase in the measured metabolite.

• Thanks @Joel Galang. So anti-logging does not re-express the regression coefficients in the original scale and instead gives coefficients whoss interpretation is more like what we get from a logistic regression when we anti-log those coefficients. Really wish I had done more (i.e. any) maths at uni. – llewmills Aug 27 '18 at 20:20

1) It's not necessary or even very helpful for the outcome/dependent variable to be normally distributed. It's the residuals of the model fit that should be approximately normally distributed.

2) Since you've transformed the data, there's no reason that your back-transformed parameter values should be identical.

3) The pattern you see can be explained, but the easiest way for you to understand it is to plot your data and model fit - the original version, the transformed, and the back-transformed.