Motor Trend MPG-Transmission Study

Executive Summary

Objective

Determine if an automatic or manual transmission is better for MPG using the ‘mtcars’ dataset.

Exploratory Data Analysis

The ‘mtcars’ dataset contains data on 32 cars with variables such as MPG, transmission type, horsepower, and more. The initial box plot indicated that manual transmissions tend to have higher MPG compared for automatic transmissions.

Model Fitting

A simple linear model shows a significant difference in MPG between automatic and manual transmissions, with manual providing higher MPG. A multiple linear regression model was fitted that included horsepower, weight, and quarter mile time. That model was a better fit with significant coefficients relative to each other.

Model Diagnostics

Residual plots indicate that the multiple linear model fits the data well.

Quantification of Uncertainty

The coefficients of the model indicate that manual transmissions provide, on average, approximately 2.94 MPG more than automatic transmissions, relative to other factors. Confidence intervals were calculated to quantify the uncertainty.

Conclusion

Manual transmissions provide higher MPG compared to automatic transmissions. This analysis provided the quantifiable measure of the difference and it’s uncertainty.

Overview

This is the project for the John Hopkins Regression Models Course to explore the relationship between a set of variables and miles per gallon (MPG) as the outcome.

In this we will:

  • Perform Exploratory Data Analysis
  • Identify factors for multiple models
  • Fit multiple models
  • Residual plots
  • Quantify uncertainty
  • Create Executive Summary

Exploratory Data Analysis

#Load dataset
data(mtcars)

#View first few rows
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
#Summary of stats
summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
#Plot mpg by trans type
boxplot(mpg ~ am, mtcars, main = "MPG by Transmission Type", xlab = "Transmission: 0 = Auto, 1= Manual", ylab = "MPG")

The dataset contains data on 32 cars with many variables. The boxplot indicates manual transmissions have higher MPG.

Identify factors for multiple models

We will explore correlations and create a scatter plot to see relationships between the variables. Looking for strong predictors.

#Correlation Matrix - Linear relationships
cor(mtcars)
##             mpg        cyl       disp         hp        drat         wt
## mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.68117191 -0.8676594
## cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.69993811  0.7824958
## disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.71021393  0.8879799
## hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.44875912  0.6587479
## drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.00000000 -0.7124406
## wt   -0.8676594  0.7824958  0.8879799  0.6587479 -0.71244065  1.0000000
## qsec  0.4186840 -0.5912421 -0.4336979 -0.7082234  0.09120476 -0.1747159
## vs    0.6640389 -0.8108118 -0.7104159 -0.7230967  0.44027846 -0.5549157
## am    0.5998324 -0.5226070 -0.5912270 -0.2432043  0.71271113 -0.6924953
## gear  0.4802848 -0.4926866 -0.5555692 -0.1257043  0.69961013 -0.5832870
## carb -0.5509251  0.5269883  0.3949769  0.7498125 -0.09078980  0.4276059
##             qsec         vs          am       gear        carb
## mpg   0.41868403  0.6640389  0.59983243  0.4802848 -0.55092507
## cyl  -0.59124207 -0.8108118 -0.52260705 -0.4926866  0.52698829
## disp -0.43369788 -0.7104159 -0.59122704 -0.5555692  0.39497686
## hp   -0.70822339 -0.7230967 -0.24320426 -0.1257043  0.74981247
## drat  0.09120476  0.4402785  0.71271113  0.6996101 -0.09078980
## wt   -0.17471588 -0.5549157 -0.69249526 -0.5832870  0.42760594
## qsec  1.00000000  0.7445354 -0.22986086 -0.2126822 -0.65624923
## vs    0.74453544  1.0000000  0.16834512  0.2060233 -0.56960714
## am   -0.22986086  0.1683451  1.00000000  0.7940588  0.05753435
## gear -0.21268223  0.2060233  0.79405876  1.0000000  0.27407284
## carb -0.65624923 -0.5696071  0.05753435  0.2740728  1.00000000

According to the correlation matrix:

  • Weight (‘wt’) and Horsepower (‘hp’) are negatively correlated with MPG suggesting that heavier and more powerful cars tend to have lower MPG.
#Scatterplot Matrix - Non-Linear Relationships
pairs(mtcars)

Here we begin to look for trends and patterns. We can confirm visually that as ‘wt’ increases, MPG decreases. Less linear, but ‘hp’ also has a negative relationship with MPG. On a positive note, quarter-mile times (‘qsec’) have a positive relationship indicating cars with higher quarter-mile times have better MPG.

Fit multiple models

# Fit a simple linear model
model_simple <- lm(mpg ~ am, mtcars)

# Fit a multiple linear regression model
model_multiple <- lm(mpg ~ am + hp + wt + qsec, mtcars)

# Summary of the first model
summary(model_simple)
## 
## Call:
## lm(formula = mpg ~ am, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.3923 -3.0923 -0.2974  3.2439  9.5077 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   17.147      1.125  15.247 1.13e-15 ***
## am             7.245      1.764   4.106 0.000285 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.902 on 30 degrees of freedom
## Multiple R-squared:  0.3598, Adjusted R-squared:  0.3385 
## F-statistic: 16.86 on 1 and 30 DF,  p-value: 0.000285

The first model shows a positive effect of manual transmission on MPG indicating that manual transmission cars have, on average, 7.245 more MPG than automatic cars.

The p-value (0.000285) is much smaller than the common alpha level of 0.05 indicating this is statistically significant.

This model explains about 36% of the variability between transmission type and MPG.

#Summary of the second model
summary(model_multiple)
## 
## Call:
## lm(formula = mpg ~ am + hp + wt + qsec, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4975 -1.5902 -0.1122  1.1795  4.5404 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 17.44019    9.31887   1.871  0.07215 . 
## am           2.92550    1.39715   2.094  0.04579 * 
## hp          -0.01765    0.01415  -1.247  0.22309   
## wt          -3.23810    0.88990  -3.639  0.00114 **
## qsec         0.81060    0.43887   1.847  0.07573 . 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.435 on 27 degrees of freedom
## Multiple R-squared:  0.8579, Adjusted R-squared:  0.8368 
## F-statistic: 40.74 on 4 and 27 DF,  p-value: 4.589e-11

The second model includes predictors previously identified. (‘hp’,‘wt’,‘qsec’) Right away this model explains the data better with a new model fit of about 86%. This is a better fit also confirmed by smaller residuals and small Residual standard error.

Accounting for the other variables:

  • -Manual transmission cars showed an increase of 2.93 MPG more than automatic cars. Significant p-value (0.046)

  • ‘hp’ showed a decrease of 0.02 MPG, though NOT significant with a high p-value (0.223)

  • ‘wt’ showed a decrease of 3.80 MPG per 1000lbs. Significant p-value (0.002)

  • ‘qsec’ showed an increase of .81 MPG for each additional second. NOT significant p-value (0.076)

Residual Plots

# Residuals plot for the multiple linear regression model

# Residual plot
plot(model_multiple$residuals, main = "Residual Plot", xlab = "Index", ylab = "Residuals")
abline(h = 0, col = "red")

We want randomness, otherwise it suggests non-linearity. So this is good

# Q-Q plot
qqnorm(model_multiple$residuals, main = "Q-Q Plot of Residuals")
qqline(model_multiple$residuals, col = "red")

The Q-Q Plot checks if the data follows a normal distribution. Since most align with the line, this looks normal.

Quantify Uncertainty of model coefficients and calculate confidence intervals

# Confidence intervals for the model coefficients
confint(model_multiple)
##                   2.5 %     97.5 %
## (Intercept) -1.68054821 36.5609304
## am           0.05879488  5.7922130
## hp          -0.04668118  0.0113881
## wt          -5.06401789 -1.4121758
## qsec        -0.08988486  1.7110899
# Predicted values and residuals
pred <- predict(model_multiple)
resid <- residuals(model_multiple)

# Plot predicted vs. actual MPG
plot(mtcars$mpg, pred, xlab = "Actual MPG", ylab = "Predicted MPG", main = "Predicted vs. Actual MPG")
abline(0,1, col="red")

This plot shows how well the predicted values match the actual values. Points close to the line indicate good predictions.