# Load required libraries
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.6.1
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.6.1
## corrplot 0.95 loaded
# Load the mtcars dataset
data(mtcars)
# Review the codebook by ?
?mtcars
## starting httpd help server ...
## done
# 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.
# Create scatter plot for mpg vs. wt
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
labs(title = "MPG vs. Weight", x = "Weight", y = "MPG (Miles per Gallon)")
Answer: I am presenting a scatterplot of MPG (miles per gallon) vs. weight, which shows the relationship between a car’s weight and how many miles it can travel per gallon. The graph shows that as the weight of a car increases, the MPG decreases.
# Create trend line
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "MPG vs. Weight", x = "Weight", y = "MPG (Miles per Gallon)")
## `geom_smooth()` using formula = 'y ~ x'
Answer: I just added a trend line to my original scatter plot from 1.2. This shows more clearly how MPG decreases as weight increases. I also created a correlation table for the data in 1.4 but I wanted to specifically look at MPG and wt. The number -0.87 shows that the two have a strong negative correlation. This also shows that as weight increases, MPG decreases.
# 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
Answer: My output shows me that all variables contain a “0” meaning that there are no missing values within the columns.
# Create Box plot
boxplot(mtcars, las=2, cex.axis=0.6)
Answer: The boxplot shows that there could be outliers for hp, qsec, and carb because the data goes above the boxplot “whiskers”.
# Apply range standardization
mtcars$hp_rs <- (mtcars$hp - min(mtcars$hp)) /
(max(mtcars$hp) - min(mtcars$hp))
# Report max and min to validate
min(mtcars$hp_rs)
## [1] 0
max(mtcars$hp_rs)
## [1] 1
Answer: The min is 0 and the max is 1, showing my standardization was successful.
# Calculate the 5th and 95th percentiles of "wt"
lower_bound_wt <- quantile(mtcars$wt, 0.05)
upper_bound_wt <- quantile(mtcars$wt, 0.95)
# Winsorize wt and save as wt_win
mtcars$wt_win <- pmin(pmax(mtcars$wt, lower_bound_wt), upper_bound_wt)
# Report the new minimum and maximum
min(mtcars$wt_win)
## [1] 1.736
max(mtcars$wt_win)
## [1] 5.29275
Answer: The new min is 1.736 and the new max is 5.29275.