Disclaimer: I am a senior undergraduate student of Political Science with little proficiency in Data Science; please help me understand better and forgive any ensuing statistical illiteracy!

TL;DR: I created an OLS regression model using appropriate variable selection methods—wherein I reduced seventeen predictor variables to seven. Now, I am illustrating my OLS assumptions w.r.t to this model and asking for help in creating a better model.

Background Information

I employed OLS Regression in order to study the correlation between my dependent variable of Infant Mortality Rate (per 1000 live births) with respect to the following predictor variables: (1) Mothers received Antenatal care (%); (2) Mothers received Financial Assistance under JSY Scheme (%); (3) Average expenditure at a public health facility(Rs.); (4) Adult Female Literate (%); (5) Per capita NSDP (Rs.); (6) Households with Sanitation (%); (7) Households with Electricity (%).

I am studying this in the context of the Indian nation-state; therefore, my samples—or—N = 32 (the Indian States and UTs excluding those for whom no information was made available).

When I ran a linear multiple OLS Regression on this model (unweighted and not generalized), I obtained the following vital information:

  1. Residual Standard Error: 7.529 on 24 Degrees of Freedom
  2. Multiple R-squared: 0.7324
  3. Adjusted R-squared: 0.6543
  4. F-statistic: 9.384 on 7 and 24 DF
  5. p-value: 1.397e-05

Assumption Issues

Using the sjmisc and sjPlot packages, I ran the following code to test my OLS assumptions:

plot_model(Model1, type = "diag")

I am sharing the results of the assumptions.


enter image description here

enter image description here

enter image description here


Based on the assumption and regression results, do you all think that I am on the right track at all? From what I could gather, I can obviously see some issues of (1) non-normal distribution of residuals and (2) heteroscedasticity. However, do you all think that my assumptions of multicollinearity and non-normality of residuals and outliers (Q-Q) are alright?

More importantly, how do I fix these issues and attempt to create a better second model? Please consider that I am a relative beginner to the whole process, so forgive me for not knowing the proper direction. Is my preliminary regression model and result even decent? If so, how should I further improve (1) the normality of my residuals; (2) homoscedasticity; (3) regression results?

Lastly, are there any problems in the way I tested my OLS assumptions?

Thank you so much for your time. Have a great day!


1 Answer 1


For starters, good for you for checking the assumptions of your model. This should be a given, but unfortunately, this step is rarely reported. On the whole, your assumption checks do raise questions about whether OLS regression is appropriate for this data. You seem to have an issue with heteroscedasticity and positively-skewed residuals. This is not too surprising given the dependent variable you are looking at.

It is always possible that you could add other predictors that result in more well-behaved modelling. What is perhaps more reasonable is that you need a generalized linear model. Typically, predicting a rate variable is better done with a Poisson or Negative Binomial (in the case of over-dispersion) regression. There are some theoretical reasons why this is the case, but at the end of the day on the applied stats side, there is minimal difference between OLS regression (linear regression assuming a normal distribution) and generalized regression (linear regression assuming a different kind of distribution). In the case of generalized linear regression, you just need to choose a link function to help convert your linear predictors to whatever new distribution you're describing. You may just want to look at recommendations for predicting mortality rates and see what recommendations there are for modelling. I'm not familiar with the literature, but I'd assume the standard is something like a Poisson regression.

As far as testing the assumptions in alternative ways, this seems like a reasonable approach. Since you're using R, you could also consider using the "gvlma" package. This package lets you specify your normal linear regression using lm() and it tests all the assumptions for linear regression, including the assumption of the linear link function (a significant result there may support the need to move to a generalized linear model).

  • $\begingroup$ Thank you so much, I shall definitely look into Poisson Regression. I did have a look into the prediction of IMR—even specifically within India—and all literature seemed to employ the OLS method. Could you kindly recommend to me any source for understanding the "link function" in question? I understand the concept of using it to convert my linear predictors to another form of generalized distribution, but how can I search for the process behind doing so in R? Finally, do you think I could correct for heteroscedasticity by using weighted linear-square regression instead of shifting reg methods? $\endgroup$ Nov 4, 2020 at 22:03
  • $\begingroup$ Also, I think it is important to add: using the log of infant mortality rate has, in my opinion, helped greatly correct the normality of residuals and outliers but it did make my homoscedasticity weirder. Do you think if I were to combine the log of infant mortality rate with weighted least-squared regression, that would help correct both assumptions? $\endgroup$ Nov 4, 2020 at 22:07
  • $\begingroup$ Here's a pretty broad introduction to specifying general linear models in R: statmethods.net/advstats/glm.html. I'm sure doing anything to make some of the variables closer to normal will help with the OLS predictions, but it won't have much effect on heteroscedasticity. If you want to stick with OLS and can get decently normal residuals, you could always adopt a standard error method that is robust to heteroscedasticity: data.princeton.edu/wws509/r/robust $\endgroup$
    – Billy
    Nov 8, 2020 at 23:55

Your Answer

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

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