I am trying to use linear regression to predict the earnings of the employed people (i.e. no zeros in my data set), however, no matter what I try, I can't get my residuals to be normally distributed.

I have tried things like

  • log(Earnings)
  • sqrt(earnings)
  • log(earnings)
  • log((earnings-median(earnings)/(max(earnings)-min(earnings)) +1)
  • log((earnings-mean(earnings)/(max(earnings)-min(earnings)) +1)

    • variety of different combinations of min, max, sd for the denominator

But nothing seems to work. qq-plot looked the best after square root transformation, however, the shapiro-wilk test rejected the normality.

Plus a bonus question. In a multiple regression, do I need to get normality of errors for all the dependent~ independent relationship pairs or only for the overall model (i.e dependent~ independendent1+ independent2...)?

  • $\begingroup$ Residuals can be non-normal for a wide variety of reasons viz . 1) presence of pulses (1 time effects); 2) multiple means ; 3) auto-correlation ; 4) presence of seasonal indicators ;5 ) correlation between the expected value and the variance of the residuals; 6) deterministic error variance changes at specific points. et al . $\endgroup$
    – IrishStat
    Aug 20, 2017 at 15:38
  • $\begingroup$ For clarification, I am trying to predict the starting salary, hence no previous earnings are used. I use mainly categorical variables, such as gender, education and residence. So there should be no time effect. $\endgroup$
    – HelMel
    Aug 20, 2017 at 15:50
  • $\begingroup$ when I said 1 time effects I should have said unusual values that occur randomly $\endgroup$
    – IrishStat
    Aug 20, 2017 at 17:55
  • $\begingroup$ In my eyes, it seems to cross out, autocorrelation and seasonality as well. In general, I agree with your statements, I am just clueless what to do $\endgroup$
    – HelMel
    Aug 20, 2017 at 18:44
  • $\begingroup$ You my friend are quite correct. Why don't you post your data and I will try and use my 723 years of statistical experience to help you resolve this. Just kidding not quite 723 years but a ton ... $\endgroup$
    – IrishStat
    Aug 20, 2017 at 19:43

2 Answers 2


I'd expect the response or outcome variable earnings to be (highly) positively skewed and to vary exponentially rather than linearly in keeping with its values, and so its mean, remaining positive. Hence a generalised linear model with logarithmic link could be appropriate, and competitive with transforming the response and proceeding with plain regression.

Pretty much equivalently, something like Poisson regression should work well here, regardless of the fact that earnings are usually considered measured, and not counted. The small print is just to be careful about standard errors. For more discussion, see for example this posting.

  • $\begingroup$ This was more or less where I was going about appropriately transforming the DV or using a good link. I guess maybe a Negative binomial would also serve as a reasonable option, particularly for overdispersion, no? (If one were to go that direction.) $\endgroup$
    – LSC
    Feb 27, 2019 at 19:49
  • $\begingroup$ I am not a fan of negative binomial when the response is not counted. Poisson regression is at heart $Y = \exp(Xb)$ with the small print mentioned in the answer. That's often a fine model for measured non-negative responses. $\endgroup$
    – Nick Cox
    Feb 28, 2019 at 9:09
  • $\begingroup$ True, it is a log link. Thanks for the clarification! $\endgroup$
    – LSC
    Feb 28, 2019 at 10:46

How many observations exist in the data set? Are there multiple observations per person? What kind of log base did you use (10, 2, e)?

Are you able to post some residual plots (residual vs predicted y, histogram and q-q of residuals)? I know you said it is sensitive but residuals might not be a problem since they won't give us much of any identifying information.

See my reply here regarding formal tests of normality. Long story short, you're better off not using a test of hypothesis for normality.

If your goal is prediction (i.e. you want a specific number to attach to someone for predicted salary based on their set of features), have you looked at a bootstrapped calibration plot (actual Y vs predicted Y)?

For your bonus question: the assumption applies to the whole model (i.e. errors conditional on X where X is the entire vector of independent variables), rather than for each individual X.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.