Load packages

library(e1071);library(car)
## Warning: package 'car' was built under R version 4.4.2
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.2

Left-Skewness

set.seed(123)  # For reproducibility
left_skewed_data <- rbeta(1000, shape1 = 5, shape2 = 2)

# Plot a histogram to visualize the left-skewed data
hist(left_skewed_data, breaks = 20, col = "lightblue", main = "", xlab = "Values", freq = FALSE)

lines(density(left_skewed_data, na.rm = TRUE), 
      col = "red", 
      lwd = 2)

abline(v = median(left_skewed_data), col = 'darkblue', lwd = 4, lty = 2)
abline(v = mean(left_skewed_data), col = 'darkgreen', lwd = 4, lty = 2)

skewness(left_skewed_data)
## [1] -0.5964554

Right-skewness

data("airquality")
hist(na.omit(airquality$Ozone), 
     main = "", 
     xlab = "Ozone (ppb)", 
     col = "lightblue", 
     border = "black",
     breaks = 20,
     freq = FALSE)

lines(density(airquality$Ozone, na.rm = TRUE), 
      col = "red", 
      lwd = 2)

abline(v = median(na.omit(airquality$Ozone)), col = 'darkblue', lwd = 4, lty = 2)
abline(v = mean(na.omit(airquality$Ozone)), col = 'darkgreen', lwd = 4, lty = 2)

skewness(na.omit(airquality$Ozone))
## [1] 1.209866
qqnorm(na.omit(airquality$Ozone), ylab = 'Ozone')
qqline(na.omit(airquality$Ozone), col = 'blue')

## ScatterplotMatrix

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'tidyr' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.2
## Warning: package 'purrr' was built under R version 4.4.2
## Warning: package 'stringr' was built under R version 4.4.2
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ✖ dplyr::recode() masks car::recode()
## ✖ purrr::some()   masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data("midwest")

scatterplotMatrix(~ poptotal + popdensity+percollege+popblack+percadultpoverty,  data = midwest, smooth = list(span = 0.45, lty.smooth = 1, col.smooth = 'red', col.var = 'red'), regLine = list(col = 'green'))