1. Exploratory Data Analysis

1.1 Load the mtcars dataset, review its codebook, and report summary statistics for each column. Is there anything you find abnormal?(10pts)

# Load required libraries
library(ggplot2)
library(corrplot)
## corrplot 0.95 loaded
# Load the mtcars dataset
data(mtcars)

# Review the codebook by ?
?mtcars

# Display the first few rows and summary statistics
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(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

Answer: I don’t find any variable abnormal at this stage. Maybe I will discover some later.

1.2 Provide any ONE visualization you used to understand the data (10pts)

hist(mtcars$mpg,
     main = "Distribution of Miles per Gallon",
     xlab = "MPG",
     col = "lightblue")

Answer: I am presenting a histogram of miles per gallon.

Continue with the remaining questions

Questions 1.4 and beyond are intentionally not templated here. Please continue in this same R Markdown file and write your own code chunks and narrative answers for the rest of the homework questions.

What variables are most strongly correlated with mpg?

cor_mpg <- cor(mtcars)[,"mpg"]

barplot(sort(cor_mpg[-1]), 
        main = "Correlation of Variables with MPG",
        las = 2, 
        col = "steelblue")

The variable with the largest MPG is the wt. Wt has a negative correlation that is strongly related. The correlation is -0.8. This implies that the larger the weight on the vehicle, the lower the miles per gallon.

Are there any missing values in the dataset? Cheking for missing values in the whole dataset.

sum(is.na(mtcars))

There are no missing values in the dataset.

Use Box plot to decide if any variable has significant outliers.

boxplot(mpg ~ cyl, data = mtcars, main = "MPG by number of Cylinders", xlab = "Cylinders", ylab = "Miles Per Gallon", col = "lightblue")

Use the boxplot to determine if there are any outliers in the dataset.

Cars with 8 cylinders have an outlier on the lower end.

Apply range standardization on variable hp, and save it with the new name hp_rs

in data.frame mtcars. Report the max and min of the standardized hp_rs to validate

mtcars$hp_rs <- (mtcars$hp - min(mtcars$hp)) / (max(mtcars$hp) - min(mtcars$hp))

max(mtcars$hp_rs)
## [1] 1
min(mtcars$hp_rs)
## [1] 0

Winsorize the variable wt with 5%/95%, save it with the new name wt_win, and

report the new max and min.

Quantile calculations
lower_bound <- quantile(mtcars$wt, 0.05)
upper_bound <- quantile(mtcars$wt, 0.95)
Winsorize
mtcars$wt_win <- mtcars$wt
mtcars$wt_win[mtcars$wt_win < lower_bound] <- lower_bound
mtcars$wt_win[mtcars$wt_win > upper_bound] <- upper_bound
Max and Min
max(mtcars$wt_win)
## [1] 5.29275
min(mtcars$wt_win)
## [1] 1.736