Matrice de corrélation: Formattage et visualisation


Le calcul d’une matrice de corrélation est décrit en détails ici. L’objectif de cet article est double. D’une part, nous allons utiliser le package Hmisc de R pour produire une table des coefficients de corrélation ainsi que les p-values correspondantes. D’autre part, nous allons voir comment formatter cette matrice de corrélation en un tableau de 4 colonnes contenant le nom des lignes de la matrice et celui des colonnes, les coefficients de corrélation et les p-values des corrélations.


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


Données

La table de données mtcars disponible dans R est utilisée dans les exemples suivants :

mydata <- mtcars[, c(1,3,4,5,6,7)]
head(mydata)
                   mpg disp  hp drat    wt  qsec
Mazda RX4         21.0  160 110 3.90 2.620 16.46
Mazda RX4 Wag     21.0  160 110 3.90 2.875 17.02
Datsun 710        22.8  108  93 3.85 2.320 18.61
Hornet 4 Drive    21.4  258 110 3.08 3.215 19.44
Hornet Sportabout 18.7  360 175 3.15 3.440 17.02
Valiant           18.1  225 105 2.76 3.460 20.22

Calcul de la matrice de corrélation

La fonction rcorr() du package Hmisc peut être utilisée. Elle offre la possibilité de faire les tests de corrélation de Pearson et de Spearman.

library(Hmisc)
res<-rcorr(as.matrix(mydata))

Comme résultat, la fonction rcorr() renvoie une liste incluant les éléments suivants : - r : la matrice de corrélation. - P : les p-values correspondant aux niveaux de significativité des corrélations.

# Affichage de la matrice de corrélation
signif(res$r, 2)
       mpg  disp    hp   drat    wt   qsec
mpg   1.00 -0.85 -0.78  0.680 -0.87  0.420
disp -0.85  1.00  0.79 -0.710  0.89 -0.430
hp   -0.78  0.79  1.00 -0.450  0.66 -0.710
drat  0.68 -0.71 -0.45  1.000 -0.71  0.091
wt   -0.87  0.89  0.66 -0.710  1.00 -0.170
qsec  0.42 -0.43 -0.71  0.091 -0.17  1.000
# Affichage des p-values des corrélations
signif(res$P,2)
         mpg    disp      hp    drat      wt    qsec
mpg       NA 9.4e-10 1.8e-07 1.8e-05 1.3e-10 1.7e-02
disp 9.4e-10      NA 7.1e-08 5.3e-06 1.2e-11 1.3e-02
hp   1.8e-07 7.1e-08      NA 1.0e-02 4.1e-05 5.8e-06
drat 1.8e-05 5.3e-06 1.0e-02      NA 4.8e-06 6.2e-01
wt   1.3e-10 1.2e-11 4.1e-05 4.8e-06      NA 3.4e-01
qsec 1.7e-02 1.3e-02 5.8e-06 6.2e-01 3.4e-01      NA

Formattage de la matrice de corrélation en 4 colonnes

La fonction personnalisée suivante est utilisée :

# ++++++++++++++++++++++++++++
# flattenCorrMatrix
# ++++++++++++++++++++++++++++
# cormat : matrice des coefficients de corrélation
# pmat : matrice des 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]
    )
}

La fonction flattenCorrMatrix va formatter la matrice de corrélation en un tableau de 4 colonnes : row, column, coefficient de corrélation et p-value.

Le tableau final contient les p-values et les coefficients de corrélation entre chaque variable et les autres.

flattenCorrMatrix(res$r, res$P)
    row column     cor         p
1   mpg   disp -0.8476 9.380e-10
2   mpg     hp -0.7762 1.788e-07
3  disp     hp  0.7909 7.143e-08
4   mpg   drat  0.6812 1.776e-05
5  disp   drat -0.7102 5.282e-06
6    hp   drat -0.4488 9.989e-03
7   mpg     wt -0.8677 1.294e-10
8  disp     wt  0.8880 1.222e-11
9    hp     wt  0.6587 4.146e-05
10 drat     wt -0.7124 4.784e-06
11  mpg   qsec  0.4187 1.708e-02
12 disp   qsec -0.4337 1.314e-02
13   hp   qsec -0.7082 5.766e-06
14 drat   qsec  0.0912 6.196e-01
15   wt   qsec -0.1747 3.389e-01

Visualisation de la matrice de correlation

Vous pouvez utiliser la fonction chart.Correlation() du package PerformanceAnalytics pour une visualisation graphique de la matrice de corrélation.

Les histogrammes de distribution des variables sont montrés sur la diagonale. Les astériques indiquent le niveau de significativité de la corrélation. Pour chaque seuil de significativité on a un symbole correspondant :

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

library(PerformanceAnalytics)
chart.Correlation(mydata, histogram=TRUE, pch=19)

Nuages de points et 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 6772 fois