Cómo crear un mapa de calor de correlación en R

En este artículo, veamos cómo trazar un mapa de calor de correlación en el lenguaje de programación R.

El análisis de datos generalmente implica un análisis detallado de cada función y cómo se correlaciona entre sí. Es esencial encontrar la fuerza de la relación entre cada característica o, en otras palabras, cómo se mueven dos variables asociadas entre sí. Si las variables crecen juntas en la misma dirección, es una correlación positiva, de lo contrario, una correlación negativa. Esta correlación se puede visualizar a través de varios gráficos, como diagramas de dispersión, etc.

Cargando datos

Carguemos el conjunto de datos ambientales y veamos las primeras 6 filas de los datos usando la función head().

R

# Loading package,data and
# viwing 1st 6 rows of data
 
install.packages("lattice")
library(lattice)
 
# Load the New York City
# environmental dataset.
data(environmental)
 
data <-environmental
head(data)

Salida :

Crear array de correlación

Vamos a crear una array de correlación para nuestros datos usando la función cor() y redondeemos cada valor a 2 decimales. Esta array se puede utilizar para crear fácilmente el mapa de calor.

R

# create a correlation matrix of the data
 
# rounding to 2 decimal places
corr_mat <- round(cor(data),2) 
head(corr_mat)

Salida :

Mapa de calor de correlación usando ggplot2

Usando ggplot2, visualicemos la array de correlación en un mapa de calor.

Función: ggplot(data = NULL, mapeo = aes(), … , entorno = parent.frame())

Argumentos:

  • data: conjunto de datos predeterminado para usar en la gráfica.
  • mapeo: lista predeterminada de mapeos estéticos para usar en la trama
  • entorno – DESAPROBADO. Usado antes de una evaluación ordenada

Reduzcamos el tamaño de la array de correlación trazando el mapa de calor usando la función melt() y usando ggplot para trazar el mapa de calor. A partir de este mapa de calor, podemos interpretar fácilmente qué variables/características están más correlacionadas y usarlas para un análisis de datos en profundidad. La función ggplot acepta una array de correlación reducida y mapeos estéticos.

R

# Install and load reshape2 package
install.packages("reshape2")
library(reshape2)
 
# creating correlation matrix
corr_mat <- round(cor(data),2)
 
# reduce the size of correlation matrix
melted_corr_mat <- melt(corr_mat)
# head(melted_corr_mat)
 
# plotting the correlation heatmap
library(ggplot2)
ggplot(data = melted_corr_mat, aes(x=Var1, y=Var2,
                                   fill=value)) +
geom_tile()

Salida :

Reordenar la array de correlación y trazar el mapa de calor

Reordenar u ordenar la array de correlación con respecto al coeficiente nos ayuda a identificar fácilmente patrones entre las características/variables. Veamos cómo reordenar la array de correlación usando la función hclust() agrupando las características jerárquicamente (agrupación jerárquica).

R

# Code to plot a reorederd heatmap
 
# Install and load reshape2 package
install.packages("reshape2")
library(reshape2)
 
# creating correlation matrix
corr_mat <- round(cor(data),2)
 
# reorder corr matrix
# using corr coefficient as distance metric
dist <- as.dist((1-corr_mat)/2)
 
# hierarchical clustering the dist matrix
hc <- hclust(dist)
corr_mat <-corr_mat[hc$order, hc$order]
 
# reduce the size of correlation matrix
melted_corr_mat <- melt(corr_mat)
#head(melted_corr_mat)
 
#plotting the correlation heatmap
library(ggplot2)
ggplot(data = melted_corr_mat, aes(x=Var1, y=Var2, fill=value)) +
geom_tile()

Salida :

Adición de coeficientes de correlación al mapa de calor

Los coeficientes de correlación son una medida que representa qué tan fuerte es la relación entre dos variables. Cuanto mayor sea el valor absoluto del coeficiente, mayor será la correlación.

Visualicemos un mapa de calor de correlación junto con los coeficientes de correlación en el mapa usando la columna «valor» en la array de correlación como texto. Usando la función geom_text( ), se pueden agregar anotaciones en el mapa de calor y usar «valor» como etiquetas.

R

# Install and load reshape2 package
install.packages("reshape2")
library(reshape2)
 
# creating correlation matrix
corr_mat <- round(cor(data),2)
 
# reduce the size of correlation matrix
melted_corr_mat <- melt(corr_mat)
head(melted_corr_mat)
 
# plotting the correlation heatmap
library(ggplot2)
ggplot(data = melted_corr_mat, aes(x=Var1, y=Var2,
                                   fill=value)) +
geom_tile() +
geom_text(aes(Var2, Var1, label = value),
          color = "black", size = 4)

Salida :

Mapa de calor de correlación usando heatmaply

Usemos el paquete heatmaply en R para trazar un mapa de calor de correlación usando la función heatmaply_cor(). La correlación de los datos es la array de entrada con la columna «Características» como parámetros de los ejes x e y.

Función: heatmaply_cor(x, limites = c(-1, 1), xlab, ylab, colors = cool_warm,k_row, k_col…)

Argumentos:

  • x: puede ser un objeto heatmapr o una array numérica
  • límites: un vector numérico bidimensional que especifica el rango de datos para la escala
  • colors: un vector de colores para usar en el color del mapa de calor
  • k_row: un escalar entero con el número deseado de grupos para colorear el dendrograma
  • ramas en las filas
  • k_col: un escalar entero con el número deseado de grupos para colorear las ramas del dendrograma en las columnas
  • xlab: un título de carácter para el eje x.
  • ylab: un título de carácter para el eje y.

R

# Load and install heatmaply package
install.packages("heatmaply")
library(heatmaply)
 
# plotting corr heatmap
heatmaply_cor(x = cor(data), xlab = "Features",
              ylab = "Features", k_col = 2, k_row = 2)

Salida :

Mapa de calor de correlación usando ggcorplot

Usemos el paquete ggcorplot en R para trazar un mapa de calor de correlación usando la función ggcorrplot(). La array de correlación de los datos se proporciona como array de corrección de entrada.

Función: ggcorrplot(corr,método = c(“cuadrado”, “círculo”) … )

Argumentos:

  • corr – la array de correlación para visualizar
  • método: carácter, el método de visualización de la array de correlación que se utilizará

R

# load and install ggcorplot
install.packages("ggcorplot")
library(ggcorrplot)
 
# plotting corr heatmap
ggcorrplot::ggcorrplot(cor(data))

Salida :

Trazar el triángulo inferior del mapa de calor de correlación

Veamos cómo trazar el triángulo inferior del mapa de calor de correlación y visualizarlo. Esto se puede hacer reemplazando los valores del triángulo superior de la array de correlación como NA y luego esta array se reduce mediante el proceso de fusión y se representa gráficamente.

R

# get the corr matrix
corr_mat <- round(cor(data),2)
 
# replace NA with upper triangle matrix
corr_mat[upper.tri(corr_mat)] <- NA
 
# reduce the corr matrix
melted_corr_mat <- melt(corr_mat)
 
# plotting the corr heatmap
library(ggplot2)
ggplot(data = melted_corr_mat, aes(x=Var1,
                                   y=Var2,
                                   fill=value)) +
  geom_tile()

Salida :

Trazar el triángulo superior del mapa de calor de correlación

Veamos cómo trazar el triángulo superior del mapa de calor de correlación y visualizarlo. Esto se puede hacer reemplazando los valores del triángulo inferior de la array de correlación como NA y luego esta array se reduce mediante el proceso de fusión y se representa gráficamente.

R

# get the corr matrix
corr_mat <- round(cor(data),2)
 
# replace NA with lower triangle matrix
corr_mat[lower.tri(corr_mat)] <- NA
 
# reduce the corr matrix
melted_corr_mat <- melt(corr_mat)
 
# plotting the corr heatmap
library(ggplot2)
ggplot(data = melted_corr_mat, aes(x=Var1, y=Var2,
                                   fill=value)) +
  geom_tile()

Salida :

Creación de un mapa de calor de correlación interactivo

Un gráfico interactivo muestra información detallada de cada punto de datos cuando el usuario se desplaza sobre el gráfico. Veamos cómo trazar un mapa de calor de correlación interactivo usando la array de correlación y la array de valor p. La función ggplotly() toma una array de correlación de los datos y proporciona un gráfico de mapa de calor interactivo y los detalles se pueden ver al pasar el mouse sobre el mapa.

Función: ggplotly( p = ggplot2::last_plot(), ancho = NULL, alto = NULL … )

Argumentos:

  • p – un objeto ggplot
  • ancho: ancho de la trama en píxeles (opcional, predeterminado para el tamaño automático)
  • altura: altura de la trama en píxeles (opcional, predeterminado para el tamaño automático)

R

# install and load the plotly package
install.packages("plotly")
library(plotly)
library(ggcorrplot)
 
# create corr matrix and
# corresponding p-value matrix
corr_mat <- round(cor(data),2)
p_mat <- cor_pmat(data)
 
# plotting the interactive corr heatmap
corr_mat <- ggcorrplot(
  corr_mat, hc.order = TRUE, type = "lower",
  outline.col = "white",
  p.mat = p_mat
)
 
ggplotly(corr_mat)

Salida :

Publicación traducida automáticamente

Artículo escrito por saaiswethasret 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 *