I have a multiple linear regression with about 20 significant predictors - some categorical and come continuous. I ran the model in Statsmodel in Python.
I get a high adj R^2 of approximately 0.95 which suggests good fit. I ran a predicted vs. actual plot (shown below) and have good linearity.
However, I'm having problems when I check assumptions. My residuals to not appear to be normally distributed.
My residuals vs predicted values plot looks like this:
I look at this and depending on the scale, conclude that the residuals MIGHT be randomly distributed around a mean of zero if the scale were changed, that there is "minimal" hetroscedacity, and there are some outliers.
However, if I plot a residuals histogram I get this:
Which indicates the that the residuals may be distributed symmetrically around a mean but not normally distributed.
If I plot a qq of the residuals I get this:
Which I understand to be a fat-tailed distribution.
So my questions are:
The linearity suggests the model is strong but the residual plots suggest the model is unstable. How do I reconcile? Is this a good model or an unstable one?
If the model is unstable, how can I transform the variables (independent, dependent, both) to get my residuals normally distributed while maintaining strong linearity. I've tried various transformations (log, ln, box cox, etc) on the dependent variable, all independent variables, and some independent variables and all it does is destroy the linearity while not fixing the residual distribution.
Am I missing something obvious?
Thanks in advance for help and suggestions.