Matrice de corrélation avec R: Analyse et visualisation

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 test de corrélation : Le test de corrélation de Pearson, la corrélation de Kendall et 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.

Analyse de corrélation dans R


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 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é 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.

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ées 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ée.

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.

Corrélogramme : visualisation d’une matrice de corrélation

Plusieurs méthodes sont disponibles dans R pour dessiner un corrélogramme. Vous pouvez utiliser soit la fonction symnum(), la fonction corrplot() ou des nuages de points pour faire le graphique de la matrice de corrélation.

Utiliser la fonction symnum

La fonction symnum de R remplace les coefficients de corrélation par des symboles en fonction de la valeur. 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 …

Faire un corrélogramme avec la fonction corrplot de R

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 texte.

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