How Do I Create a Better Model? 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:

*

*Residual Standard Error: 7.529 on 24 Degrees of Freedom

*Multiple R-squared: 0.7324

*Adjusted R-squared: 0.6543

*F-statistic: 9.384 on 7 and 24 DF

*p-value: 1.397e-05

Assumption Issues
Using the sjmisc and sjPlot packages, I ran the following code to test my OLS assumptions:
require(sjmisc)
require(sjPlot)
plot_model(Model1, type = "diag")

I am sharing the results of the assumptions.




Questions/Clarifications
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!
 A: 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).
