Visualiser une matrice de corrélation par un corrélogramme

Introduction

Cet article décrit comment dessiner un corrélogramme dans R. Un corrélogramme représente le graphique d'une matrice de corrélation. Le corrélogramme est très important pour mettre en évidence les variables les plus corrélées. Dans ce type de graphique, les coefficients de corrélation sont colorés en fonction de leur valeur. La matrice de corrélation peut être aussi réordonnée en fonction du degré de corrélation entre les variables. Le package corrplot de R est utilisé dans ce document.

Notez qu'un logiciel web est disponible ici pour calculer une matrice de corrélation et dessiner un corrélogramme sans aucune installation.

Installer le package corrplot

Le package corrplot est nécessaire pour exécuter le code R dans cet article.

install.packages("corrplot")

Données pour l'analyse de corrélation

La table de données mtcars est utilisée pour calculer la matrice de corrélation.

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

Calcul de la matrice de corrélation

M<-cor(mtcars)
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

Corrélogramme : Visualisation de la matrice de corrélation

La fonction corrplot est utilisée pour faire le graphique de la **matrice de corrélation.

Le format simplifié de la fonction est:

corrplot(corr, method="circle")
Arguments Description
corr La matrice de corrélation à visualiser. Pour visualiser une matrice quelconque, utiliser is.corr=FALSE.
method Méthodes de visualisation : "circle", "color", "number", etc.

Méthodes de visualisation

Sept méthodes de visualisation différentes peuvent être utilisées : "circle", "square", "ellipse", "number", "shade", "color", "pie".

library(corrplot)
corrplot(M, method="circle")

correlation matrix, correlogram in R, correlation graph

corrplot(M, method="pie")

correlation matrix, correlogram in R, correlation graph

corrplot(M, method="color")

correlation matrix, correlogram in R, correlation graph

Les corrélations positives sont affichées en bleu et les corrélations négatives en rouge. L'intensité de la couleur et la taille des cercles sont proportionnelles aux coefficients de corrélation. A droite du corrélogramme, la légende de couleurs montre les coefficients de corrélation et les couleurs correspondantes.

Afficher les coefficients de corrélation :

corrplot(M, method="number")

correlation matrix, correlogram in R, correlation graph

Les différentes dispositions du corréllogrammes

Il y a 3 dispositions différentes :

  • full (par défaut) : Affiche la Matrice de corrélation en entier.
  • upper: Affiche le triangle supérieur de la matrice de corrélation.
  • lower: Affiche le triangle inférieur de la matrice de corrélation.
corrplot(M, type="upper")

correlation matrix, correlogram in R, correlation graph

corrplot(M, type="lower")

correlation matrix, correlogram in R, correlation graph

Réordonner la matrice de corrélation

La matrice de corrélation peut être réordonnée en fonction du coefficient de corrélation. Ceci est important pour identifier des profils cachés dans la matrice. La méthode hclust (pour hierarchical clustering) est utilisée dans les exemples ci-dessous.

# Corrélogramme avec réarrangement de type hclust
corrplot(M, type="upper", order="hclust")

correlation matrix, correlogram in R, correlation graph

# Utilisation de différents spectres de couleurs
col<- colorRampPalette(c("red", "white", "blue"))(20)
corrplot(M, type="upper", order="hclust", col=col)

correlation matrix, correlogram in R, correlation graph

# Changer la couleur de fond en lightblue
corrplot(M, type="upper", order="hclust", col=c("black", "white"),
         bg="lightblue")

correlation matrix, correlogram in R, correlation graph

Changement de la couleur du corrélogramme

Comme montré dans les sections ci-dessus, la couleur du corrélogramme peut être personnalisée. Les palettes de couleurs du package RcolorBrewer sont utilisées dans le script ci-dessous :

library(RColorBrewer)
corrplot(M, type="upper", order="hclust", 
         col=brewer.pal(n=8, name="RdBu"))

correlation matrix, correlogram in R, correlation graph

corrplot(M, type="upper", order="hclust",
         col=brewer.pal(n=8, name="RdYlBu"))

correlation matrix, correlogram in R, correlation graph

corrplot(M, type="upper", order="hclust",
         col=brewer.pal(n=8, name="PuOr"))

correlation matrix, correlogram in R, correlation graph

Changement de la couleur et de la rotation des étiquettes de textes

tl.col (for text label color) et tl.srt (for text label string rotation) sont utilisés pour changer la couleur et l’angle de rotation des textes.

corrplot(M, type="upper", order="hclust", tl.col="black", tl.srt=45)

correlation matrix, correlogram in R, correlation graph

Combiner le corrélogramme avec le test de significativité

Calcul de la p-value des corrélations

Pour calculer la p-value des matrices, nous allons utiliser une fonction personnalisée:

# mat : matrice de donnée
# ... : Arguments supplémentaire à passer à la fonction cor.test
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
}
# Matrice de p-value de la corrélation
p.mat <- cor.mtest(mtcars)
head(p.mat[, 1:5])
           mpg       cyl      disp        hp      drat
mpg  0.000e+00 6.113e-10 9.380e-10 1.788e-07 1.776e-05
cyl  6.113e-10 0.000e+00 1.803e-12 3.478e-09 8.245e-06
disp 9.380e-10 1.803e-12 0.000e+00 7.143e-08 5.282e-06
hp   1.788e-07 3.478e-09 7.143e-08 0.000e+00 9.989e-03
drat 1.776e-05 8.245e-06 5.282e-06 9.989e-03 0.000e+00
wt   1.294e-10 1.218e-07 1.222e-11 4.146e-05 4.784e-06

Ajout du niveau de significativité au corrélogramme

# Indication des corrélations non significatives 
#par une croix
corrplot(M, type="upper", order="hclust", 
         p.mat = p.mat, sig.level = 0.01)

correlation matrix, correlogram in R, correlation graph

# Remplacement des corrélations non significatives
#par du blanc
corrplot(M, type="upper", order="hclust", 
         p.mat = p.mat, sig.level = 0.01, insig = "blank")

correlation matrix, correlogram in R, correlation graph

Dans la figure ci-dessus, les corrélations avec une p-value > 0.01 sont considérées comme non significatives. Dans ce cas les valeurs du coefficient de corrélation sont remplacées par du blanc ou barrées par une croix.

Personnaliser le corrélogramme

col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(M, method="color", col=col(200),  
         type="upper", order="hclust", 
         addCoef.col = "black", # Ajout du coefficient de corrélation
         tl.col="black", tl.srt=45, #Rotation des étiquettes de textes
         # Combiner avec le niveau de significativité
         p.mat = p.mat, sig.level = 0.01, insig = "blank", 
         # Cacher les coefficients de corrélation sur la diagonale
         diag=FALSE 
         )

correlation matrix, correlogram in R, correlation graph

Conclusions

Utiliser la fonction corrplot() pour faire le graphique de la matrice de corrélation.

Infos

References: corrplot intro

Cette analyse a été faite avec R (ver. 3.1.0).


Enjoyed this article? I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Twitter, Facebook or Linked In.

Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Avez vous aimé cet article? Je vous serais très reconnaissant si vous aidiez à sa diffusion en l'envoyant par courriel à un ami ou en le partageant sur Twitter, Facebook ou Linked In.

Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!





Cette page a été vue 16160 fois
Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons