El paquete corrplot permite visualizar matrices de correlación en R de una forma muy sencilla. Proporciona varios métodos de visualización y opciones para reordenar las variables, mostrar solo la mitad de la matriz, mostrar los coeficientes de correlación o resaltar las correlaciones significativas.
En este tutorial vamos a utilizar la matriz de correlación de las variables del conjunto de datos mtcars, calculada con la función cor. Ten en cuenta que corrplot necesita una matriz de correlación, no los datos originales, por lo que tendrás que calcularla primero.
M <- cor(mtcars)
corrplot
Pasa la matriz de correlación a la función corrplot para crear un gráfico de correlación. Por defecto, cada correlación se representa con un círculo cuyo tamaño y color dependen del valor de la correlación: azul para las correlaciones positivas y rojo para las negativas.
# install.packages("corrplot")
library(corrplot)
corrplot(M)


El argumento method permite elegir cómo representar las correlaciones. Las opciones disponibles son "circle" (por defecto), "square", "ellipse", "number", "shade", "color" y "pie". En el siguiente ejemplo utilizamos elipses, que son más estrechas cuanto más fuerte es la correlación.
corrplot(M, method = "ellipse")
Si prefieres un mapa de calor puedes establecer method = "color", que rellena cada celda con el color correspondiente a la correlación. Este método es muy útil si lo combinas con los coeficientes de correlación, como se muestra en las siguientes secciones.
corrplot(M, method = "color")


Como la matriz de correlación es simétrica, puedes mostrar solo una mitad con type = "upper" o type = "lower". Además, la diagonal solo contiene unos (la correlación de cada variable consigo misma), por lo que puedes eliminarla con diag = FALSE.
corrplot(M, type = "upper", diag = FALSE)
Por defecto, las variables se muestran en el mismo orden que en la matriz. El argumento order permite reordenarlas para que los patrones se vean mejor. Las opciones son "original", "AOE" (orden angular de los vectores propios), "FPC" (primera componente principal), "hclust" (clúster jerárquico) y "alphabet".
Al usar order = "hclust" también puedes dibujar rectángulos alrededor de los clusters con addrect, indicando el número de clusters. El método de agrupamiento se puede cambiar con hclust.method.
corrplot(M, order = "hclust", addrect = 2)


Los coeficientes de correlación se pueden añadir sobre el gráfico con addCoef.col, que establece el color de los números, mientras que su tamaño se puede cambiar con number.cex. Si solo quieres mostrar los números usa method = "number".
corrplot(M, method = "color", type = "upper", diag = FALSE,
addCoef.col = "black", number.cex = 0.7)
La función corrplot.mixed permite usar un método diferente para cada mitad de la matriz. Por defecto, el triángulo inferior muestra los coeficientes de correlación y el superior muestra círculos, pero puedes cambiarlos con los argumentos lower y upper.
corrplot.mixed(M, lower = "number", upper = "ellipse",
tl.col = "black", number.cex = 0.7)


La función cor.mtest calcula los p-valores de los tests de correlación para cada par de variables. Pasa la matriz de p-valores a p.mat y establece el nivel de significación con sig.level para tachar las correlaciones no significativas. Si prefieres eliminarlas establece insig = "blank".
p <- cor.mtest(mtcars, conf.level = 0.95)
corrplot(M, type = "upper", diag = FALSE,
p.mat = p$p, sig.level = 0.05)
La paleta de colores se puede personalizar con el argumento col. corrplot incluye las funciones COL1 (secuenciales) y COL2 (divergentes), que proporcionan paletas de RColorBrewer, como "RdBu", "PiYG" o "PuOr". También puedes crear tu propia paleta con colorRampPalette o elegir otras paletas de colores.
corrplot(M, type = "upper", diag = FALSE,
col = COL2("PuOr"))


Los argumentos que empiezan por tl permiten personalizar las etiquetas de texto: tl.col establece el color, tl.srt la rotación y tl.cex el tamaño. La posición de la leyenda de colores se puede cambiar con cl.pos, que puede ser "r" (derecha), "b" (abajo) o "n" (sin leyenda).
corrplot(M, type = "lower", diag = FALSE,
tl.col = "black", tl.srt = 45, tl.cex = 0.9,
cl.pos = "b")
Si prefieres ggplot2 puedes crear una matriz de correlación con ggcorrplot o un mapa de calor con geom_tile. Además, si quieres mostrar los gráficos de dispersión de cada par de variables junto a las correlaciones consulta la función ggpairs. Ten en cuenta que el paquete corrplot es diferente de la función corPlot del paquete psych.
Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad
Ir al sitio
También te puede interesar