Objective

The purpose of this assignment is to help you gain practical experience with EDA (this homework) and linear regression (next module).

1. Load the Data and Report Summary Statistics

data(mtcars)
str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

Codebook:

mpg Miles/(US) gallon

cyl Number of cylinders

disp Displacement (cu.in.)

hp Gross horsepower

drat Rear axle ratio

wt Weight (1000 lbs)

qsec 1/4 mile time

vs Engine (0 = V-shaped, 1 = straight)

am Transmission (0 = automatic, 1 = manual)

gear Number of forward gears

carb Number of carburetors

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

There are a few abnormalities in the data. vs and am are binary variables, cyl, gear, and carb are discrete variables, and it seems like hp is right skewed since the mean (146.7) is quite a bit higher than the median (123).

2. One visualization for the data

hist(mtcars$hp)

This histogram shows that the hp variable is indeed right skewed, and we can see that by the few data points at 300-350 horsepower.

4. Variables Correlated with mpg

mpg_cor <- sort(cor(mtcars)[, "mpg"], decreasing = FALSE)
mpg_cor
##         wt        cyl       disp         hp       carb       qsec       gear 
## -0.8676594 -0.8521620 -0.8475514 -0.7761684 -0.5509251  0.4186840  0.4802848 
##         am         vs       drat        mpg 
##  0.5998324  0.6640389  0.6811719  1.0000000

wt, cyl, and disp are the most negatively correlated with mpg, while am, vs, and drat are the most positively correlated with mpg.

5. Check for missing data

colSums(is.na(mtcars))
##  mpg  cyl disp   hp drat   wt qsec   vs   am gear carb 
##    0    0    0    0    0    0    0    0    0    0    0

There are zero missing values in every column.

6. Check for outliers

par(mfrow = c(1, 2))
boxplot(mtcars$qsec, main = "qsec", col = "lightgreen")

qsec has an outlier above its upper whisker, according to the 1.5xIQR rule.

7. Range Standardization of hp

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

8. Winsorize wt

q <- quantile(mtcars$wt, probs = c(0.05, 0.95))
lower <- q[1]
upper <- q[2]

mtcars$wt_win <- mtcars$wt
mtcars$wt_win[mtcars$wt_win < lower] <- lower
mtcars$wt_win[mtcars$wt_win > upper] <- upper

max(mtcars$wt_win)
## [1] 5.29275
min(mtcars$wt_win)
## [1] 1.736