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

Cet article a été mis à jour, vous consultez ici une archive de cet article!


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 cet 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

Calcule 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?logrammes

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 profiles cach?s dans la matrice. La m?thode hclust (pour hierarchical clustering) est utilis?e dans les exemples ci-dessous.

# Corr?logramme avec rearrengement de type hclust
corrplot(M, type="upper", order="hclust")

correlation matrix, correlogram in R, correlation graph

# Utilisation de differents 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 etiquettes 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!





Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons