Visualice la array de correlación usando el correlograma en la programación R

Un gráfico de la array de correlación se conoce como Correlograma . Esto generalmente se usa para resaltar las variables en un conjunto de datos o una tabla de datos que están más correlacionadas. Los coeficientes de correlación en el gráfico están coloreados según el valor. Según el grado de asociación entre las variables, podemos reordenar la array de correlación en consecuencia.

Correlograma en R

En R , usaremos el paquete «corrplot» para implementar un correlograma. Por lo tanto, para instalar el paquete desde R Console debemos ejecutar el siguiente comando:

install.packages("corrplot")

Una vez que hayamos instalado el paquete correctamente, cargaremos el paquete en nuestro script R usando la función library() de la siguiente manera:  

library("corrplot")

Ahora veremos cómo implementar el correlograma en la programación R. Veremos la explicación detallada de la implementación con un ejemplo paso a paso.

Ejemplo:

Paso 1: [Datos para análisis de correlación]: el primer trabajo es seleccionar un conjunto de datos adecuado para implementar el concepto. Para nuestro ejemplo, usaremos el conjunto de datos «mtcars» , que es un conjunto de datos incorporado de R. Veremos algunos de los datos en este conjunto de datos.

R

# Correlogram in R
# including the required packages
library(corrplot)
  
head(mtcars)

Producción:

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

Paso 2: [Cálculo de la array de correlación]: ahora calcularemos una array de correlación para la que queremos trazar el correlograma. Usaremos la función cor() para calcular una array de correlación.

R

# Correlogram in R
# required packages
library(corrplot)
  
head(mtcars)
#correlation matrix
M<-cor(mtcars)
head(round(M,2))

Producción:

head(round(M,2))
       mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
mpg   1.00 -0.85 -0.85 -0.78  0.68 -0.87  0.42  0.66  0.60  0.48 -0.55
cyl  -0.85  1.00  0.90  0.83 -0.70  0.78 -0.59 -0.81 -0.52 -0.49  0.53
disp -0.85  0.90  1.00  0.79 -0.71  0.89 -0.43 -0.71 -0.59 -0.56  0.39
hp   -0.78  0.83  0.79  1.00 -0.45  0.66 -0.71 -0.72 -0.24 -0.13  0.75
drat  0.68 -0.70 -0.71 -0.45  1.00 -0.71  0.09  0.44  0.71  0.70 -0.09
wt   -0.87  0.78  0.89  0.66 -0.71  1.00 -0.17 -0.55 -0.69 -0.58  0.43

Paso 3: [Visualización usando el argumento Método]: Primero, veremos cómo visualizar el correlograma en diferentes formas como círculos, pastel, elipse, etc. Usaremos la función corrplot() y mencionaremos la forma en sus argumentos de método .

R

# Correlogram in R
# required packages
library(corrplot)
  
head(mtcars)
#correlation matrix
M<-cor(mtcars)
head(round(M,2))
  
#visualizing correlogram
#as circle
corrplot(M, method="circle")
# as pie
corrplot(M, method="pie")
# as colour
corrplot(M, method="color")
# as number
corrplot(M, method="number")

Producción:

Paso 4: [Visualización usando argumento de tipo]: Veremos cómo visualizar el correlograma en diferentes tipos como arrays triangulares superior e inferior. Usaremos la función corrplot() y mencionaremos el argumento de tipo .

R

# Correlogram in R
# required package
library(corrplot)
  
head(mtcars)
  
# correlation matrix
M<-cor(mtcars)
head(round(M,2))
  
# types
# upper triangular matrix
corrplot(M, type="upper")
  
# lower triangular matrix
corrplot(M, type="lower")

Producción:

Paso 5: [Reordenar el correlograma]: Veremos cómo reordenar el correlograma. Usaremos la función corrplot() y mencionaremos el argumento order . Vamos a utilizar el orden «hclust» para la agrupación jerárquica.

R

# Correlogram in R
# required packages
library(corrplot)
  
head(mtcars)
  
# correlation matrix
M<-cor(mtcars)
head(round(M, 2))
  
# reordering
# correlogram with hclust reordering
corrplot(M, type = "upper", order = "hclust")
  
# Using different color spectrum
col<- colorRampPalette(c("red", "white", "blue"))(20)
corrplot(M, type="upper", order = "hclust", col = col)
  
# Change background color to lightblue
corrplot(M, type="upper", order="hclust", 
         col = c("black", "white"), 
         bg = "lightblue")

Producción:

Paso 6: [Cambiar el color en el correlograma]: Ahora veremos cómo cambiar el color en el correlograma. Para este propósito, instalamos el paquete “RColorBrewer” y lo agregamos a nuestro script R para usar los colores de su paleta.

R

# Correlogram in R
# required package
library(corrplot)
library(RColorBrewer)
  
head(mtcars)
  
# correlation matrix
M<-cor(mtcars)
head(round(M, 2))
  
# changing colour of the correlogram
corrplot(M, type="upper", order = "hclust", 
         col=brewer.pal(n = 8, name = "RdBu"))
corrplot(M, type="upper", order = "hclust",
         col=brewer.pal(n = 8, name = "RdYlBu"))
corrplot(M, type="upper", order = "hclust",
         col=brewer.pal(n = 8, name = "PuOr"))

Producción:

Paso 7: [Cambiar el color y la rotación de las etiquetas de texto]: Para ello, incluiremos los argumentos tl.col y tl.str en la función corrplot() .

R

# Correlogram in R
# required packages
library(corrplot)
library(RColorBrewer)
  
head(mtcars)
  
# correlation matrix
M<-cor(mtcars)
head(round(M, 2))
  
# changing the colour and 
# rotation of the text labels
corrplot(M, type = "upper", order = "hclust",
         tl.col = "black", tl.srt = 45)

Producción:

Paso 8: [Cálculo del valor p de las correlaciones]: antes de que podamos agregar una prueba de significancia al correlograma, calcularemos el valor p de las correlaciones usando una función R personalizada de la siguiente manera:

R

# Correlogram in R
# required package
library(corrplot)
  
head(mtcars)
M<-cor(mtcars)
head(round(M,2))
  
# mat : is a matrix of data
# ... : further arguments to pass 
# to the native R cor.test function
cor.mtest <- function(mat, ...) 
{
  mat <- as.matrix(mat)
  n <- ncol(mat)
  p.mat<- matrix(NA, n, n)
  diag(p.mat) <- 0
  for (i in 1:(n - 1)) 
  {
    for (j in (i + 1):n)
    {
      tmp <- cor.test(mat[, i], mat[, j], ...)
      p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
    }
  }
  colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
  p.mat
}
  
# matrix of the p-value of the correlation
p.mat <- cor.mtest(mtcars)
head(p.mat[, 1:5])

Producción:

head(p.mat[, 1:5])
              mpg          cyl         disp           hp         drat
mpg  0.000000e+00 6.112687e-10 9.380327e-10 1.787835e-07 1.776240e-05
cyl  6.112687e-10 0.000000e+00 1.802838e-12 3.477861e-09 8.244636e-06
disp 9.380327e-10 1.802838e-12 0.000000e+00 7.142679e-08 5.282022e-06
hp   1.787835e-07 3.477861e-09 7.142679e-08 0.000000e+00 9.988772e-03
drat 1.776240e-05 8.244636e-06 5.282022e-06 9.988772e-03 0.000000e+00
wt   1.293959e-10 1.217567e-07 1.222320e-11 4.145827e-05 4.784260e-06

Paso 9: [Agregar prueba de significado]: Necesitamos agregar el argumento sig.level e insig en la función corrplot() . Si el valor p es mayor que 0,01, entonces es un valor insignificante para el cual las celdas están en blanco o cruzadas.

R

# Correlogram in R
# required package
library(corrplot)
  
head(mtcars)
M<-cor(mtcars)
head(round(M, 2))
  
library(corrplot)
  
# mat : is a matrix of data
# ... : further arguments to pass 
# to the native R cor.test function
cor.mtest <- function(mat, ...)
{
  mat <- as.matrix(mat)
  n <- ncol(mat)
  p.mat<- matrix(NA, n, n)
  diag(p.mat) <- 0
  for (i in 1:(n - 1)) 
  {
    for (j in (i + 1):n)
    {
      tmp <- cor.test(mat[, i], mat[, j], ...)
      p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
    }
  }
  colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
  p.mat
}
  
# matrix of the p-value of the correlation
p.mat <- cor.mtest(mtcars)
head(p.mat[, 1:5])
  
# Specialized the insignificant value
# according to the significant level
corrplot(M, type = "upper", order = "hclust", 
         p.mat = p.mat, sig.level = 0.01)
  
# Leave blank on no significant coefficient
corrplot(M, type = "upper", order = "hclust", 
         p.mat = p.mat, sig.level = 0.01, 
         insig = "blank")

Producción:

Paso 10: [Personalizar el Correlograma]: Podemos personalizar nuestro correlograma usando los argumentos requeridos en la función corrplot() y ajustando sus valores.

R

# Correlogram in R
# required package
library(corrplot)
library(RColorBrewer)
  
head(mtcars)
M<-cor(mtcars)
head(round(M,2))
  
# customize the correlogram
library(corrplot)
col <- colorRampPalette(c("#BB4444", "#EE9988", 
                          "#FFFFFF", "#77AADD",
                          "#4477AA"))
  
corrplot(M, method = "color", col = col(200),  
         type = "upper", order = "hclust", 
         addCoef.col = "black", # Add coefficient of correlation
         tl.col="black", tl.srt = 45, # Text label color and rotation
           
         # Combine with significance
         p.mat = p.mat, sig.level = 0.01, insig = "blank", 
           
         # hide correlation coefficient
         # on the principal diagonal
         diag = FALSE 
)

Producción:

Publicación traducida automáticamente

Artículo escrito por shaonim8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *