--- title: "Residual Diagnostics" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Residual Diagnostics} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, echo=FALSE, message=FALSE} library(olsrr) library(ggplot2) library(gridExtra) library(nortest) library(goftest) ``` # Introduction olsrr offers tools for detecting violation of standard regression assumptions. Here we take a look at residual diagnostics. The standard regression assumptions include the following about residuals/errors: - The error has a normal distribution (normality assumption). - The errors have mean zero. - The errors have same but unknown variance (homoscedasticity assumption). - The error are independent of each other (independent errors assumption). ## Residual QQ Plot Graph for detecting violation of normality assumption. ```{r qqresid, fig.width=5, fig.height=5, fig.align='center'} model <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars) ols_plot_resid_qq(model) ``` ## Residual Normality Test Test for detecting violation of normality assumption. ```{r normtest} model <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars) ols_test_normality(model) ``` Correlation between observed residuals and expected residuals under normality. ```{r corrtest} model <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars) ols_test_correlation(model) ``` ## Residual vs Fitted Values Plot It is a scatter plot of residuals on the y axis and fitted values on the x axis to detect non-linearity, unequal error variances, and outliers. **Characteristics of a well behaved residual vs fitted plot:** - The residuals spread randomly around the 0 line indicating that the relationship is linear. - The residuals form an approximate horizontal band around the 0 line indicating homogeneity of error variance. - No one residual is visibly away from the random pattern of the residuals indicating that there are no outliers. ```{r rvsfplot, fig.width=5, fig.height=5, fig.align='center'} model <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars) ols_plot_resid_fit(model) ``` ## Residual Histogram Histogram of residuals for detecting violation of normality assumption. ```{r residhist, fig.width=5, fig.height=5, fig.align='center'} model <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars) ols_plot_resid_hist(model) ```