In class Exercise 5 - Corrgram

Author

Law Man Long

Published

February 10, 2023

Modified

February 11, 2023

Installing and Launching R Packages

pacman::p_load(corrplot, tidyverse, ggstatsplot, ggcorrplot)

Import data

wine <- read_csv("data/wine_quality.csv")

Basic correlation matrix - 11 by 11 matrix

pairs(wine[,1:11])

input pairs() can be matrix or data frame

Basic correlation matrix for col 2 to 12

pairs(wine[,2:12])

Customize: Drawing the lower corner

pairs(wine[,2:12], upper.panel = NULL)

pairs(wine[,2:12], lower.panel = NULL)

Including with correlation coefficient

panel.cor <- function(x, y, digits=2, prefix="", cex.cor, ...) {
usr <- par("usr")
on.exit(par(usr))
par(usr = c(0, 1, 0, 1))
r <- abs(cor(x, y, use="complete.obs"))
txt <- format(c(r, 0.123456789), digits=digits)[1]
txt <- paste(prefix, txt, sep="")
if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
text(0.5, 0.5, txt, cex = cex.cor * (1 + r) / 2)
}

pairs(wine[,2:12], 
      upper.panel = panel.cor)

Visual correlation matrix: ggcormat()

ggstatsplot::ggcorrmat(
  data = wine, 
  cor.vars = 1:11)

Adding title

Multiple plots

Corrplot

wine.cor <- cor(wine[, 1:11])
corrplot(wine.cor)

Ellipse

corrplot(wine.cor, 
         method = "ellipse") 

Customize layout

corrplot(wine.cor, 
         method = "ellipse", 
         type="lower")

corrplot(wine.cor, 
         method = "ellipse", 
         type="lower",
         diag = FALSE,
         tl.col = "black")

Mixed layout - corrplot.mix()

corrplot.mixed(wine.cor, 
               lower = "ellipse", 
               upper = "number",
               tl.pos = "lt",
               diag = "l",
               tl.col = "black")

Combine corrgram with significant test

wine.sig = cor.mtest(wine.cor, conf.level= .95)

corrplot(wine.cor,
         method = "number",
         type = "lower",
         diag = FALSE,
         tl.col = "black",
         tl.srt = 45,
         p.mat = wine.sig$p,
         sig.level = .05)

Reorder a corrgram

corrplot.mixed(wine.cor, 
               lower = "ellipse", 
               upper = "number",
               tl.pos = "lt",
               diag = "l",
               order="AOE",
               tl.col = "black")

Reorder correlation matrix using hclust

corrplot(wine.cor, 
         method = "ellipse", 
         tl.pos = "lt",
         tl.col = "black",
         order="hclust",
         hclust.method = "ward.D",
         addrect = 3)