data(mtcars)
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Visualize the Data

# dependent variable - mpg = mpg
# independent variable - weight = wt

plot(mtcars$wt, mtcars$mpg, xlab = "Weight", ylab = "MPG")

The Linear Model Function

y-intercept is 37.285

slope is -5.344

The final regression model is:

mpg = 37.285 - 5.344*wt

car_lm <- lm(mpg ~ wt, data=mtcars)
car_lm
## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Coefficients:
## (Intercept)           wt  
##      37.285       -5.344

Evaluating the Quality of the Model

summary(car_lm)
## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.5432 -2.3647 -0.1252  1.4096  6.8727 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  37.2851     1.8776  19.858  < 2e-16 ***
## wt           -5.3445     0.5591  -9.559 1.29e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.046 on 30 degrees of freedom
## Multiple R-squared:  0.7528, Adjusted R-squared:  0.7446 
## F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

The reported R2 of 0.7528 for this model means that 75.28% of the variability in mpg is explained by the variation in weight.

Residual Analysis

The residuals are not uniformly distributed.

Overall, the Q-Q plot follow a straight line, but we can see the right end diverge from the line. This suggest the distribution’s right tail is “heavier” than what we would expect from a normal distribution. This pattern is indicative of a right-skewed distribution.

plot(fitted(car_lm),resid(car_lm))

qqnorm(resid(car_lm))
qqline(resid(car_lm))

par(mfrow=c(2,2))
plot(car_lm)