Matrice de corrélation sous R

Dressez et paramétrer rapidement un corrélogramme avec la librairie corrplot

Lorsqu'il s'agit de représenter graphiquement les corrélations entre plusieurs variables d'un set de données, le corrélogramme, souvent résumé à sa forme matricielle, est l'option la plus efficace. Cette forme de représentation permet en effet de traduire facilement la force des relations qui unissent les variables entre elles.
Nous allons dans cet article nous pencher sur l'utilisation de la librairie corrplot. Sachez cependant qu'il en existe beaucoup d'autres.

Données de travail

Pour illustrer nos propos, nous allons travailler avec un dataset de 150 transactions immobilières, pour lesquelles nous disposons d'un certain nombre d'informations comme le nombre de chambres, de salles de bain et de places de stationnement, mais également de la surface, de l'étage ainsi que du nombre d'étages total de l'immeuble. Enfin nous disposons de 2 variables catégorielles, la présence d'un balcon et le type de chauffage.
Les données brutes de ce dataset sont disponibles sur Gorenja.com ici.

Chargeons nos données dans un dataframe "df_appart" et visualisons un extrait :


df_appart <- read.table("appartements.csv", header = TRUE,
                         sep = ";",
                         quote = "\"",
                         fill = TRUE,
                         comment.char = "")
head(df_appart)
  bien      chb sdb surface parking balcon chauffage  etage etage_imm   prix
1 REF23978  2   1   30      1       non    gaz         1      5         99000
2 REF35989  2   1   30      2       non    electrique  4      7        158000
3 REF34600  2   1   53      1       non    gaz        10     12        348000
4 REF24544  1   1   33      1       oui    gaz         9     11        120000
5 REF30844  3   1   44      1       oui    gaz        10     11        195000

Le dataset est composé de 2 variables catégorielles que sont la présence d'un balcon et le type de chauffage. Pour être exhaustif dans notre étude des corrélations il nous faudrait prendre en compte ces 2 variables en procédant au préalable à un codage disjonctif complet (one hot encoding) de celles-ci. Nous traiterons ce point dans un article à venir, aussi nous allons, pour l'heure, nous contenter d'étudier les corrélations des variables quantitatives.

Nous allons exclure du dataset les variables non numériques à présent :


df_appart <- df_appart[names(df_appart)[sapply(df_appart, is.numeric)]]
head(df_appart)
  chb sdb surface parking etage etage_imm   prix
1   2   1      30       1     1         5  99000
2   2   1      30       2     4         7 158000
3   2   1      53       1    10        12 348000
4   1   1      33       1     9        11 120000
5   3   1      44       1    10        11 195000

Installation et import de la librairie corrplot

Nous installons à présent (pour ceux qui ne l'ont pas déjà) la librairie corrplot puis la chargeons.


install.packages("corrplot")
library(corrplot)

Matrice de correlation

Le corrélogramme est réalisé sur la base d'une matrice de corrélation, aussi il nous faut la générer avant de procéder au rendu graphique.
La fonction cor de R va nous permettre de calculer la coefficient de corrélation entre 2 variables ou bien, comme c'est notre cas, entre les variables, 2 a 2, qui constituent un set de données. Cette fonction donne la possibilité de calculer le coefficient de corrélation linéaire de Pearson ou encore les corrélations de rangs de Kendall ou Spearman.
Nous allons opter pour le coefficient de Pearson :


corr <- cor(df_appart, method="pearson")
round(corr, 2)
            chb   sdb surface parking etage etage_imm  prix
chb        1.00  0.30    0.80    0.27 -0.02      0.03  0.68
sdb        0.30  1.00    0.14    0.03 -0.12      0.03  0.04
surface    0.80  0.14    1.00    0.24 -0.03     -0.04  0.88
parking    0.27  0.03    0.24    1.00  0.10      0.03  0.23
etage     -0.02 -0.12   -0.03    0.10  1.00      0.71  0.12
etage_imm  0.03  0.03   -0.04    0.03  0.71      1.00 -0.08
prix       0.68  0.04    0.88    0.23  0.12     -0.08  1.00

Correlogramme

La matrice de corrélation étant générée, il ne nous reste plus qu'à la représenter graphiquement. L'opération va s'effectuer via la fonction corrplot. Dans une utilisation de base, celle-ci a 2 paramètres principaux.
Tout d'abord, la méthode de représentation (method) qui peux prendre comme valeurs circle, color, shade, square, ellipse, number ou pie. Certaines représentations sont plus lisibles que d'autres en fonction des données. Il convient de faire de tests.
Ensuite, le type de structure (type) : full (par défaut), upper et lower. Ces valeurs afficheront respectivement la matrice complète ou simplement le triangle supérieur ou inférieur.
Ci-dessous le résultat de 2 représentations possibles de notre matrice :


corrplot(corr, method="circle")
corrplot(corr, method="color", type="upper")
R matrice correlation pearson corrplot

Dans notre cas, la représentation de droite semble plus lisible. Le prix de ventre semble être corrélé avec la surface d'abord puis le nombre de chambres ensuite. Il est possible d'avoir un sentiment plus immédiat de la hiérarchie via le paramètre hclust.

Ordonner la matrice selon l'intensité du lien

Le paramètre hclust va en effet nous permettre de hiérarchiser les variables en fonction de l'intensité du lien qui les unie.
Nous en profitons, par ailleurs, pour colorer les noms de variables et les incliner de 45 degrés via les paramètres tl.col et tl.srt
Voici le résultat :


corrplot(corr, method="color", type="upper", 
         order="hclust",
         tl.col="orange", tl.srt=45)
R matrice correlation pearson corrplot

Retrouvez dans la rubrique "Nos datasets" toutes les données dont vous aurez besoin pour tester et pratiquer !