Matrice de corrélation: Guide simple pour analyser, formater et visualiser

C’est quoi une matrice de corrélation?

Une matrice de corrélation est utilisée pour évaluer la dépendence entre plusieurs variables en même temps. Le résultat est une table contenant les coefficients de corrélation entre chaque variable et les autres.

Il existe différentes méthodes de tests de corrélation : Le test de corrélation de Pearson, la corrélation de Kendall et celle de Spearman qui sont des tests basés sur le rang. Ces méthodes sont discutées dans les sections suivantes.

La matrice de corrélation peut être visualisée en utilisant un corrélogramme. L’objectif de cet article est de vous montrer comment calculer et visualiser une matrice de corrélation dans R.

Notez qu’un logiciel web est disponible ici pour calculer une matrice de corrélation et dessiner un corrélogramme sans aucune installation. Cette application est décrite à la fin de cet article.

Analyse de corrélation dans R

Comme vous le savez peut être, la fonction cor() de R peut être utilisée pour calculer la matrice de corrélation. Un format simplifié de la fonction est :

# x est une variable de type matrix ou data.frame
cor(x, method = c("pearson", "kendall", "spearman"))

L’argument method indique le type de coefficient de corrélation à calculer. La valeur par défaut est le coefficient de corrélation de pearson, lequel mesure une dépendence linéaire entre deux variables. Les méthodes de corrélation kendall et spearman sont des tests de corrélation non-paramétriques basés sur un test de rang.

Données pour le test de corrélation

La table de données mtcars disponible dans R est utilisée dans les exemples suivants pour calculer la matrice de corrélation.

data(mtcars)
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

Matrice de corrélation

mcor <- cor(mtcars)
mcor
       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
qsec  0.42 -0.59 -0.43 -0.71  0.09 -0.17  1.00  0.74 -0.23 -0.21 -0.66
vs    0.66 -0.81 -0.71 -0.72  0.44 -0.55  0.74  1.00  0.17  0.21 -0.57
am    0.60 -0.52 -0.59 -0.24  0.71 -0.69 -0.23  0.17  1.00  0.79  0.06
gear  0.48 -0.49 -0.56 -0.13  0.70 -0.58 -0.21  0.21  0.79  1.00  0.27
carb -0.55  0.53  0.39  0.75 -0.09  0.43 -0.66 -0.57  0.06  0.27  1.00

Dans la table ci-dessus les coefficients de corrélation sont montrés entre les différentes paires possibles de variables.

Si vos données contiennent des valeurs manquantes, utiliser le code R suivant qui va automatiquement les gérer en les supprimant.

cor(mtcars, use = "complete.obs")

Test de significativité de la corrélation (p-value)

Le résultat de la fonction cor() est une table de coefficients de corrélation entre chaque variable et les autres. Malheureusement, cette fonction n’affiche pas la significativité de la corrélation (p-value). Dans la section suivante, nous allons utiliser le package Hmisc de R pour calculer la p-value de la corrélation.

La fonction rcorr() du package Hmisc peut être utilisée pour calculer le niveau de significativité pour les corrélations de pearson et de spearman. En utilisant cette fonction le coefficient de corrélation r de Pearson ou rho de Spearman est calculer pour toutes les paires de variables possibles dans la table de données.

Un format simplifié de la fonction est:

rcorr(x, type=c("pearson","spearman"))

x doit être un objet de type matrix. Le type de corrélation peut être soit pearson ou spearman.

library(Hmisc)
rcorr(as.matrix(mtcars[,1:7]))
       mpg   cyl  disp    hp  drat    wt  qsec
mpg   1.00 -0.85 -0.85 -0.78  0.68 -0.87  0.42
cyl  -0.85  1.00  0.90  0.83 -0.70  0.78 -0.59
disp -0.85  0.90  1.00  0.79 -0.71  0.89 -0.43
hp   -0.78  0.83  0.79  1.00 -0.45  0.66 -0.71
drat  0.68 -0.70 -0.71 -0.45  1.00 -0.71  0.09
wt   -0.87  0.78  0.89  0.66 -0.71  1.00 -0.17
qsec  0.42 -0.59 -0.43 -0.71  0.09 -0.17  1.00
n= 32 
P
     mpg    cyl    disp   hp     drat   wt     qsec  
mpg         0.0000 0.0000 0.0000 0.0000 0.0000 0.0171
cyl  0.0000        0.0000 0.0000 0.0000 0.0000 0.0004
disp 0.0000 0.0000        0.0000 0.0000 0.0000 0.0131
hp   0.0000 0.0000 0.0000        0.0100 0.0000 0.0000
drat 0.0000 0.0000 0.0000 0.0100        0.0000 0.6196
wt   0.0000 0.0000 0.0000 0.0000 0.0000        0.3389
qsec 0.0171 0.0004 0.0131 0.0000 0.6196 0.3389       

Comme résultat, la fonction rcorr() renvoie une liste avec les éléments suivants : - r : la matrice de corrélation. - n : la matrice du nombre d’observations utilisé dans l’analyse de chaque paire de variables. - P : les p-values correspondant aux niveaux de significativité des corrélations.

Une fonction simple pour formatter la matrice de corrélation

Cette section fournit une fonction simple pour formater une matrice de corrélation en une table à 4 colonnes contenant :

  • Colonne 1 : Noms des lignes (variable 1 pour le test de corrélation)
  • Colonne 2 : Nom des colonnes (variable 2 pour le test de corrélation)
  • Colonne 3 : Les coefficients de corrélation
  • Colonne 4 : Les p-values des corrélations

La fonction ci-dessous peut être utilisée:

# ++++++++++++++++++++++++++++
# flattenCorrMatrix
# ++++++++++++++++++++++++++++
# cormat : matrix of the correlation coefficients
# pmat : matrix of the correlation p-values
flattenCorrMatrix <- function(cormat, pmat) {
  ut <- upper.tri(cormat)
  data.frame(
    row = rownames(cormat)[row(cormat)[ut]],
    column = rownames(cormat)[col(cormat)[ut]],
    cor  =(cormat)[ut],
    p = pmat[ut]
    )
}

Exemple d’utilisation :

library(Hmisc)
res<-rcorr(as.matrix(mtcars[,1:7]))
flattenCorrMatrix(res$r, res$P)
    row column     cor         p
1   mpg    cyl -0.8522 6.113e-10
2   mpg   disp -0.8476 9.380e-10
3   cyl   disp  0.9020 1.803e-12
4   mpg     hp -0.7762 1.788e-07
5   cyl     hp  0.8324 3.478e-09
6  disp     hp  0.7909 7.143e-08
7   mpg   drat  0.6812 1.776e-05
8   cyl   drat -0.6999 8.245e-06
9  disp   drat -0.7102 5.282e-06
10   hp   drat -0.4488 9.989e-03
11  mpg     wt -0.8677 1.294e-10
12  cyl     wt  0.7825 1.218e-07
13 disp     wt  0.8880 1.222e-11
14   hp     wt  0.6587 4.146e-05
15 drat     wt -0.7124 4.784e-06
16  mpg   qsec  0.4187 1.708e-02
17  cyl   qsec -0.5912 3.661e-04
18 disp   qsec -0.4337 1.314e-02
19   hp   qsec -0.7082 5.766e-06
20 drat   qsec  0.0912 6.196e-01
21   wt   qsec -0.1747 3.389e-01

Visualisation d’une matrice de corrélation

Plusieurs solutions sont disponibles dans R pour visualiser une matrice de corrélation:

  • la fonction symnum()
  • la fonction corrplot() pour dessiner un correlogramme
  • le Nuage de points (scatter plots)
  • heatmap

Visualiser une matrice de corrélation avec la fonction symnum

La fonction symnum de R remplace les coefficients de corrélation par des symboles en fonction de leurs valeurs. Elle prend la matrice de corrélation comme argument:

symnum(mcor, abbr.colnames=FALSE)
     mpg cyl disp hp drat wt qsec vs am gear carb
mpg  1                                           
cyl  +   1                                       
disp +   +   1                                   
hp   ,   +   ,    1                              
drat ,   ,   ,    .  1                           
wt   +   ,   +    ,  ,    1                      
qsec .   .   .    ,          1                   
vs   ,   +   ,    ,  .    .  ,    1              
am   .   .   .       ,    ,          1           
gear .   .   .       ,    .          ,  1        
carb .   .   .    ,       .  ,    .          1   
attr(,"legend")
[1] 0 ' ' 0.3 '.' 0.6 ',' 0.8 '+' 0.9 '*' 0.95 'B' 1

Comme indiqué dans la légende, les coefficients de corrélation entre 0 et 0.3 sont remplacés par un espace (" “); les coefficients de corrélation entre 0.3 et 0.6 sont remplacés par”.“; etc …

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

Vous devez installer le package corrplot qui permet de faire une visualisation graphique de la matrice de corrélation.

Pour lire plus à propos de la fonction corplot() cliquez ici : visualiser une matrice de corrélation avec la fonction corrplot.

La fonction corrplot prend la matrice de corrélation comme premier argument. Le second argument (type=“upper”) est utilisé pour afficher seulement le triangle supérieur de la matrice de corrélation.

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

plot of chunk correlogram

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.

La matrice de corrélation est réarrangée en fonction des coefficients de corrélation en utilisant la méthode hclust. tl.col (text label color) et tl.srt (text label string rotation) sont utilisés pour changer la couleur et la rotation des étiquettes de textes.

Visualiser une matrice de corrélation avec des scatter plots

La fonction chart.Correlation(), du package PerformanceAnalytics, peut être utilisée pour faire un graphique de la matrice de corrélation. Installer le package si vous ne l’avez pas déjà.

library(PerformanceAnalytics)
mydata <- mtcars[, c(1,3,4,5,6,7)]
chart.Correlation(mydata, histogram=TRUE, pch=19)

plot of chunk graph

  • La distribution de chaqu’un des variables est montré sur la diagonale.
  • En bas de la diagonale : Les scatter plots sont montrés avec la courbe de tendance
  • En haut de la diagonale : Les coefficients de corrélation et les niveaux de significativité (étoiles) sont montrés

Chaque niveau de significativité est associé à un symbole :

p-values(0, 0.001, 0.01, 0.05, 0.1, 1) <=> symboles(“***”, “**”, “*”, “.”, " “)

Visualiser une matrice de corrélation avec un heatmap

# Générer des couleurs
col<- colorRampPalette(c("blue", "white", "red"))(20)
heatmap(x = mcor, col = col, symm = TRUE)

Heatmap de la matrice de corrélation


  • x : la matrice de corrélation à dessiner
  • col : palettes de couleurs
  • symm : valeur logique indiquant si x devrait être traité comme symétrique; peut être true si seulement si x est une matrice carrée.


Logiciel en ligne pour analyser et visualiser une matrice de corrélation

Une application web pour calculer et visualiser une matrice de corrélation est disponible ici sans aucune installation: logiciel en ligne de calcul de matrices de corrélation.

Logiciel web de calcul de la matrice de corrélation, Logiciel R

(Freepik)

Accéder au logiciel de calcul de matrices de corrélation

Le logiciel peut être utilisé comme suit :

  1. Accéder au logiciel web de calcul de matrices de corrélation : calculateur de matrices de corrélation
  2. Charger un fichier .txt tabulation ou CSV contenant vos données (les colonnes sont les variables). Les formats de fichiers supportés sont décrits ici. Vous pouvez utiliser les données de démo disponibles sur la page Web du logiciel en cliquant sur le lien correspondant.
  3. Après chargement, un aperçu d’une partie de votre fichier est affiché pour vérifier que les données sont correctement importées. Si les données ne sont pas affichées correctement, assurez-vous que le format de votre fichier est correct ici.
  4. Cliquez sur le bouton “Analyser” et sélectionner au moins deux variables pour calculer la matrice de corrélation. Par défaut, toutes les variables sont sélectionnées. Désélectionner les colonnes contenant du texte. Vous pouvez également sélectionner les méthodes de corrélation (Pearson, Spearman ou de Kendall). Par défaut la méthode de Pearson est choisie.
  5. Cliquer sur le bouton Ok
  6. Résultats : la sortie du logiciel comprend :
    • La matrice de corrélation
    • La visualisation de la matrice de corrélation en corrélogramme
    • Un lien web pour exporter les résultats dans un fichier .txt

Notez que, vous pouvez spécifier l’hypothèse alternative à utiliser pour le test de corrélation en cliquant sur le bouton “Options avancées”.

Choisissez l’une des 3 options ci-dessous :

  • Two-sided pour un test bilatéral
  • Corrélation <0 pour un test unilatéral inférieur
  • Corrélation > 0 pour un test unilatéral supérieur
La valeur par défaut est two-sided.


conclusions

  • Utiliser la fonction cor() pour une simple analyse de corrélation
  • Utiliser la fonction rcorr() du package Hmisc pour calculer la matrice de coefficients de corrélation ainsi que la matrice de p-value en une seule étape.
  • Utiliser la fonction symnum() ou corplot()[du package R corrplot] pour faire le graphique de la matrice de corrélation.

Infos

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 79211 fois