Accéder au contenu principal

Tutoriel sur la corrélation en R

Initiez-vous aux bases de la corrélation en R : coefficients de corrélation, matrices de corrélation, visualisation des corrélations, etc.
Actualisé 18 sept. 2026  · 13 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity

correlation

Dans ce tutoriel, vous allez explorer plusieurs méthodes de visualisation de données et les statistiques qui les sous-tendent. L’objectif est notamment d’identifier des tendances et des relations entre variables dans un data frame.

Exactement, vous allez vous concentrer sur des notions comme la corrélation et la régression ! Vous commencerez par une introduction à la corrélation en R. Vous verrez ensuite comment tracer des matrices de corrélation en R avec des packages tels que ggplot2 et GGally. Enfin, vous passerez en revue les différents types de corrélations et leur importance pour la suite de votre analyse.

Si vous souhaitez aller plus loin, découvrez le cours de DataCamp Correlation and Regression.

Contexte

Dans le tutoriel d’aujourd’hui, vous utiliserez un jeu de données de films provenant de Kaggle pour mieux comprendre les relations entre variables.

J’ai légèrement préparé les données pour comparer des éléments « à périmètre constant », par exemple en harmonisant les unités monétaires. Sans cette étape, l’analyse statistique de variables comme gross, budget et profit serait trompeuse. Vous pouvez accéder au jeu de données original.

Importer les données

Pour charger le jeu de données movies et l’utiliser, servez-vous de la fonction read.csv() pour importer les données dans un data frame et stockez-le dans la variable au nom on ne peut plus original movies !

movies <- read.csv(url("http://s3.amazonaws.com/dcwoods2717/movies.csv"))

Et voilà, vous êtes prêt à démarrer !

Inspection rapide des données

Une fois le data frame importé, il est utile d’en prendre la mesure. Commencez par examiner sa structure. Ci-dessous, le résultat de la fonction très simple et pratique str() :

str(movies)
## 'data.frame':    2961 obs. of  11 variables:
##  $ title              : Factor w/ 2907 levels "10 Cloverfield Lane",..: 1560 2143 34 2687 1405 1896 2633 894 1604 665 ...
##  $ genre              : Factor w/ 17 levels "Action","Adventure",..: 6 12 5 5 5 3 2 8 3 8 ...
##  $ director           : Factor w/ 1366 levels "Aaron Schneider",..: 474 472 781 828 175 1355 1328 1328 968 747 ...
##  $ year               : int  1920 1929 1933 1935 1936 1937 1939 1939 1940 1946 ...
##  $ duration           : int  110 100 89 81 87 83 102 226 88 144 ...
##  $ gross              : int  3000000 2808000 2300000 3000000 163245 184925485 22202612 198655278 84300000 20400000 ...
##  $ budget             : int  100000 379000 439000 609000 1500000 2000000 2800000 3977000 2600000 8000000 ...
##  $ cast_facebook_likes: int  4 109 995 824 352 229 2509 1862 1178 2037 ...
##  $ votes              : int  5 4546 7921 13269 143086 133348 291875 215340 90360 6304 ...
##  $ reviews            : int  2 107 162 164 331 349 746 863 252 119 ...
##  $ rating             : num  4.8 6.3 7.7 7.8 8.6 7.7 8.1 8.2 7.5 6.9 ...

Ici, la console indique que le data frame contient 2961 observations et 11 variables.

Soit dit en passant, même si chaque film ne durait qu’une heure, il vous faudrait regarder des films sans interruption pendant plus de quatre mois pour tous les voir !

La console liste aussi le nom et la classe de chaque variable, ainsi que quelques valeurs. De quoi se faire une bonne idée du contenu du data frame, étape cruciale pour mener une analyse pertinente.

Autre fonction très utile pour une vue d’ensemble rapide : summary(). Remarquez les similitudes et différences avec la sortie de str().

summary(movies)
##                          title            genre    
##  Home                       :   3   Comedy   :848  
##  A Nightmare on Elm Street  :   2   Action   :738  
##  Across the Universe        :   2   Drama    :498  
##  Alice in Wonderland        :   2   Adventure:288  
##  Aloha                      :   2   Crime    :202  
##  Around the World in 80 Days:   2   Biography:135  
##  (Other)                    :2948   (Other)  :252  
##               director         year         duration    
##  Steven Spielberg :  23   Min.   :1920   Min.   : 37.0  
##  Clint Eastwood   :  19   1st Qu.:1999   1st Qu.: 95.0  
##  Martin Scorsese  :  16   Median :2004   Median :106.0  
##  Tim Burton       :  16   Mean   :2003   Mean   :109.6  
##  Spike Lee        :  15   3rd Qu.:2010   3rd Qu.:119.0  
##  Steven Soderbergh:  15   Max.   :2016   Max.   :330.0  
##  (Other)          :2857                                 
##      gross               budget          cast_facebook_likes
##  Min.   :      703   Min.   :      218   Min.   :     0     
##  1st Qu.: 12276810   1st Qu.: 11000000   1st Qu.:  2241     
##  Median : 34703228   Median : 26000000   Median :  4604     
##  Mean   : 58090401   Mean   : 40619384   Mean   : 12394     
##  3rd Qu.: 75590286   3rd Qu.: 55000000   3rd Qu.: 16926     
##  Max.   :760505847   Max.   :300000000   Max.   :656730     
##                                                             
##      votes            reviews           rating     
##  Min.   :      5   Min.   :   2.0   Min.   :1.600  
##  1st Qu.:  19918   1st Qu.: 199.0   1st Qu.:5.800  
##  Median :  55749   Median : 364.0   Median :6.500  
##  Mean   : 109308   Mean   : 503.3   Mean   :6.389  
##  3rd Qu.: 133348   3rd Qu.: 631.0   3rd Qu.:7.100  
##  Max.   :1689764   Max.   :5312.0   Max.   :9.300  
## 

En une seule commande, R renvoie des informations statistiques clés pour chaque variable du data frame. Maintenant que vous savez avec quoi vous travaillez, plongeons dans l’exploration !

Feature engineering : calculer le profit

À la lecture des variables disponibles, certaines variables numériques peuvent être combinées pour enrichir l’analyse.

Par exemple, vous disposez de gross et budget : pourquoi ne pas les utiliser pour calculer le profit de chaque film ?

Le profit se calcule avec la formule profit = gross - budget. Essayez dans le bloc DataCamp Light ci-dessous !

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKSIsInNhbXBsZSI6IiMgRmlsbCBpbiB0aGUgYXBwcm9wcmlhdGUgdmFyaWFibGUgbmFtZXMgdG8gc3Vic2V0IVxucHJvZml0IDwtIG1vdmllcyQuLi4uLiAtIG1vdmllcyQuLi4uLlxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNvbHV0aW9uIjoiIyBGaWxsIGluIHRoZSBhcHByb3ByaWF0ZSB2YXJpYWJsZSBuYW1lcyB0byBzdWJzZXQhXG5wcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNjdCI6InRlc3Rfb2JqZWN0KFwicHJvZml0XCIsIHVuZGVmaW5lZF9tc2c9XCJEaWQgeW91IGNvcnJlY3RseSBkZWZpbmUgdGhlIHZhcmlhYmxlIGBwcm9maXRgP1wiLCBpbmNvcnJlY3RfbXNnID0gXCJOb3QgcXVpdGUhXCIpXG50ZXN0X2Vycm9yKClcbnN1Y2Nlc3NfbXNnKFwiRXhjZWxsZW50IVwiKSJ9

Parfait !

On voit bien qu’il y a, dans ce data frame, autant de succès financiers que de gouffres budgétaires.

Le profit des films pourra servir à des analyses intéressantes par la suite, ajoutons donc profit comme nouvelle colonne au data frame.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikiLCJzYW1wbGUiOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2AgXG5tb3ZpZXMkLi4uLi4gPC0gbW92aWVzJC4uLi4uIC0gbW92aWVzJC4uLi4uIiwic29sdXRpb24iOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2Bcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldCJ9

Corrélation

Maintenant que profit a été ajouté comme nouvelle colonne, examinons de plus près les relations entre les variables du jeu de données.

Regardons comment profit varie en fonction du rating de chaque film.

Pour cela, utilisez les fonctions intégrées de R plot et abline : plot produit un nuage de points et abline ajoute une droite de régression (ou « droite des moindres carrés ») en fournissant un modèle linéaire, comme illustré ci-dessous.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKVxubW92aWVzJHByb2ZpdCA8LSBtb3ZpZXMkZ3Jvc3MgLSBtb3ZpZXMkYnVkZ2V0XG5vcHRpb25zKHNjaXBlbiA9IDk5OSkiLCJzYW1wbGUiOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJC4uLi4sIG1vdmllcyQuLi4uKVxuXG4jIEFkZCBhIHJlZ3Jlc3Npb24gbGluZXdpdGggdGhlIGZvcm0gYGFibGluZShsbSh5IH4geCkpYFxuXG5hYmxpbmUobG0obW92aWVzJC4uLi4gfiBtb3ZpZXMkLi4uLikpIiwic29sdXRpb24iOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJHJhdGluZywgbW92aWVzJHByb2ZpdClcblxuIyBBZGQgYSByZWdyZXNzaW9uIGxpbmUgd2l0aCB0aGUgZm9ybSBgYWJsaW5lKGxtKHkgfiB4KSlgIFxuYWJsaW5lKGxtKG1vdmllcyRwcm9maXQgfiBtb3ZpZXMkcmF0aW5nKSkifQ==

Le résultat correspond-il à vos attentes ?

R regression

Globalement, les films mieux notés semblent afficher un profit plus élevé. Autrement dit, il existe une corrélation positive entre rating et profit dans ce data frame.

Cela dit, un simple coup d’œil au graphique suffit à voir que des films très bien notés n’ont pas été des cartons au box-office, et que plusieurs films très rentables ont reçu des notes plutôt basses.

Corrélation n’implique PAS causalité !

Une petite histoire pour illustrer la différence : je tiens un stand de glaces à la plage. Le nombre moyen de piétons qui traversent en dehors des passages protégés augmente en même temps que mes ventes de glaces. Mes glaces poussent-elles les gens à ignorer le code de la route, ou un autre facteur intervient-il ? Mes glaces sont, certes, excellentes, mais le soleil donne sans doute envie de glace et incite aussi à éviter d’attendre en plein soleil aux passages piétons. Il existe bien une relation (corrélation) entre mes ventes et le nombre de traversées hors clous, mais on ne peut pas en conclure un lien de causalité.

Gardez ce raisonnement en tête pour la suite du tutoriel !

Calculer une corrélation en R

Quels types de relations existent entre les variables de movies et comment les évaluer quantitativement ?

Première approche : calculer des corrélations et des matrices de corrélation avec cor() :

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIilcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxub3B0aW9ucyhzY2lwZW4gPSA5OTkpIiwic2FtcGxlIjoiIyBDb21wdXRlIFBlYXJzb24gY29ycmVsYXRpb25cbmNvcihtb3ZpZXMkcmF0aW5nLCBtb3ZpZXMkcHJvZml0KVxuXG4jIENvcnJlbGF0aW9uIE1hdHJpeFxuY29yKG1vdmllc1ssNDoxMF0pIn0=

Remarque : vous pouvez aussi préciser la méthode souhaitée pour choisir le coefficient de corrélation à calculer. Attention aux hypothèses sous-jacentes : les méthodes de Kendall et Spearman ne s’appliquent qu’à des données ordonnées. Il faut donc ordonner vos données avant de calculer ces coefficients.

De plus, la méthode par défaut, la corrélation de Pearson, suppose que vos variables suivent une distribution normale, qu’il existe une relation linéaire entre elles et que les résidus autour de la droite de régression sont distribués normalement.

Notez enfin que la fonction rcorr() du package Hmisc permet de calculer les niveaux de significativité pour les corrélations de Pearson et de Spearman.

Vous verrez aussi qu’une matrice de corrélation est un tableau des coefficients de corrélation entre variables. C’est une excellente première étape pour repérer les relations présentes dans le jeu de données. Allons un peu plus loin dans la section suivante.

Explorer visuellement la corrélation : la matrice de corrélation en R

Dans cette étape, vous allez tracer une matrice de corrélation avec les variables de votre data frame movies. Ce simple graphique vous permet de visualiser rapidement quelles variables présentent une corrélation négative, positive, faible ou forte avec les autres.

Pour ce faire, vous utiliserez le package malin GGally et sa fonction ggcorr().

L’appel s’écrit ggcorr(df), où df est le nom du data frame. La sortie est une matrice triangulaire, colorée et annotée avec les noms des variables. Le coefficient de corrélation d’une variable par rapport aux autres se lit en parcourant la matrice horizontalement et/ou verticalement selon sa position.

Sur le papier cela peut sembler abstrait, mais en pratique c’est très simple. Testez dans le bloc de code suivant !

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxubGlicmFyeShcIkdHYWxseVwiKSIsInNhbXBsZSI6IiMgUmVwbGFjZSB0aGUgXCIuLi4uLlwiIHdpdGggdGhlIG5hbWUgb2YgdGhlIGRhdGEgZnJhbWUgXG5nZ2NvcnIoLi4uLi4pIiwic29sdXRpb24iOiIjIFJlcGxhY2UgdGhlIFwiLi4uLi5cIiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBkYXRhIGZyYW1lIFxuZ2djb3JyKG1vdmllcykifQ==

correlation coefficient

Dans la matrice que vous venez de créer (bravo !), rendez-vous sur la ligne ou la colonne d’une variable, par exemple year, et lisez son coefficient de corrélation d’après la couleur de la cellule croisant une autre variable.

Pour year, on observe une faible corrélation positive avec budget et une faible corrélation négative avec rating.

Les coefficients de corrélation sont toujours compris entre -1 et 1, bornes incluses. Un coefficient de -1 indique un ajustement négatif parfait : les valeurs de y diminuent au même rythme que les valeurs de x augmentent. Un coefficient de 1 indique un ajustement positif parfait : les valeurs de y augmentent au même rythme que celles de x.

Dans la plupart des cas, comme pour year, le coefficient se situe quelque part entre -1 et 1.

Avez-vous remarqué quelque chose d’étrange dans la matrice ?

Toutes les variables de movies n’y figurent pas !

C’est normal : toutes ne sont pas numériques. La fonction ggcorr ignore automatiquement les variables non numériques, ce qui vous évite de les retirer manuellement avant de créer la matrice.

Si vous souhaitez que votre matrice « ressorte » davantage (ou si, comme moi, vous êtes un peu daltonien), quelques réglages simples permettent d’obtenir des matrices plus lisibles et riches en informations.

Dans le bloc de code suivant, l’argument label est ajouté et peut valoir TRUE ou FALSE. Par défaut, c’est FALSE, mais avec label = TRUE, le coefficient chiffré de chaque relation est affiché dans sa cellule. Plus besoin d’estimer la valeur à partir de l’échelle de couleurs.

L’argument label_alpha permet de moduler l’opacité de chaque étiquette selon la force de la corrélation. Très pratique pour une lecture visuelle rapide.

Ne vous contentez pas de me croire sur parole, testez par vous-même !

Traçons maintenant une matrice plus lisible :

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxubGlicmFyeShcIkdHYWxseVwiKSIsInNhbXBsZSI6IiMgRmlsbCBpbiBcIlRSVUVcIiBvciBcIkZBTFNFXCIgdG8gc2VlIGhvdyB0aGUgY29ycmVsYXRpb24gbWF0cml4IGNoYW5nZXNcbmdnY29ycihtb3ZpZXMsIFxuICAgICAgIGxhYmVsID0gLi4uLi4sIFxuICAgICAgIGxhYmVsX2FscGhhID0gLi4uLi4pIiwic29sdXRpb24iOiIjIEZpbGwgaW4gXCJUUlVFXCIgb3IgXCJGQUxTRVwiIHRvIHNlZSBob3cgdGhlIGNvcnJlbGF0aW9uIG1hdHJpeCBjaGFuZ2VzXG5nZ2NvcnIobW92aWVzLCBcbiAgICAgICBsYWJlbCA9IFRSVUUsIFxuICAgICAgIGxhYmVsX2FscGhhID0gVFJVRSkifQ==

correlation coefficient

Dans les graphiques suivants, vous verrez que lorsqu’une corrélation est « forte », la pente de la droite de régression (x/y) est proche de 1/1 ou -1/1, tandis qu’une corrélation « faible » donnera une droite à peine inclinée. Une pente proche de 1/1 ou -1/1 suggère des variables étroitement liées.

Dans le cas de movies, une telle droite peut offrir de précieux éclairages sur la nature de vos variables et potentiellement révéler une interdépendance.

Par exemple, dans votre précédent graphique de profit en fonction du rating, la droite de régression présentait une pente modérée, positive. La matrice de corrélation indique d’ailleurs un coefficient de 0,3 pour ces deux variables.

Logique, non ?

Types de corrélations

Passons maintenant à des graphiques illustrant différents types de corrélations, comme aperçu plus haut.

Corrélation forte : votes versus reviews

Commençons par tracer deux variables avec une corrélation positive forte.

D’après la matrice, votes et reviews répondent au critère, avec un coefficient de 0,8. La pente devrait donc être proche de 1/1.

Vous utiliserez le package ggplot2 dans cet exercice et les suivants. ggplot2 est un outil polyvalent pour produire des visualisations convaincantes.

Ici, vous allez recourir à la fonction qplot du package, qui peut générer divers graphiques selon la géométrie passée à l’argument geom.

Dans le code ci-dessous, geom contient deux géométries, point et smooth : point produit un nuage de points et smooth une courbe de tendance. Notez que method est défini sur lm : la courbe de tendance sera donc une droite de régression, comme dans le graphique de profit en fonction des years vu précédemment.

En bref, vous allez voir à quel point il est facile de produire des visualisations percutantes en un rien de temps !

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB2b3RlcyB2cyByZXZpZXdzXG5xcGxvdChtb3ZpZXMkLi4uLi4sIFxuICAgICAgbW92aWVzJC4uLi4uLCBcbiAgICAgIGRhdGEgPSAuLi4uLiwgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIiwic29sdXRpb24iOiIjIFBsb3Qgdm90ZXMgdnMgcmV2aWV3c1xucXBsb3QobW92aWVzJHZvdGVzLCBcbiAgICAgIG1vdmllcyRyZXZpZXdzLCBcbiAgICAgIGRhdGEgPSBtb3ZpZXMsIFxuICAgICAgZ2VvbSA9IGMoXCJwb2ludFwiLCBcInNtb290aFwiKSwgXG4gICAgICBtZXRob2QgPSBcImxtXCIsIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSwgXG4gICAgICBzZSA9IEZBTFNFKSJ9

positive R correlation

Vous aurez peut-être reconnu l’argument alpha utilisé dans qplot. Il applique un dégradé d’opacité aux points du nuage, comme pour les étiquettes de coefficients dans ggcorr.

Dans la configuration ci-dessus, l’opacité maximale n’est atteinte qu’à partir de 5 superpositions de points. Augmenter ou diminuer le dénominateur de alpha change le nombre de superpositions requis pour modifier l’opacité. Cet attribut aide à repérer rapidement les zones de forte densité de points et peut faire émerger des insights en un coup d’œil.

Allez-y, modifiez le code et observez l’effet !

Corrélation faible : profit au fil des années

Voyons maintenant à quoi ressemble une corrélation « faible » et négative en traçant profit par rapport aux years. Cette fois, aucun method n’est spécifié : la courbe de tendance sera donc ajustée de manière curviligne selon les données (comportement par défaut). Vous remarquerez autour de la courbe une zone grise plus ou moins large selon l’intervalle de confiance.

Si la notion d’intervalle de confiance ne vous est pas familière, pas d’inquiétude ! R s’occupe du calcul, et nous y reviendrons juste après.

Pour l’instant, complétez les parties manquantes et observez le résultat.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkiLCJzb2x1dGlvbiI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkifQ==

weak correlation

Après avoir vu l’intervalle de confiance et la courbe de lissage à l’œuvre, quelles observations tirer ?

  • Au début du graphique, le profit semble augmenter d’une year à l’autre.
  • La zone grisée autour de la courbe est d’abord assez large et le nombre de points (observations) faible.
  • Lorsque la courbe traverse une zone plus dense en observations, la zone grisée se rétrécit et épouse la courbe, qui commence à décliner sur les dernières years.

Conclusion : tracer l’intervalle de confiance en plus de la courbe de lissage permet de visualiser l’incertitude autour de la droite de régression. Cette incertitude augmente quand il y a peu d’observations et diminue quand il y en a davantage.

C’est très utile pour voir comment la relation entre variables évolue dans le data frame et comment les zones de forte densité influent sur la courbe tracée.

Attention toutefois : le graphique peut prêter à confusion et ne pas trancher visuellement entre corrélation positive ou négative.

Traçons maintenant profit en fonction des years comme vous l’avez fait pour votes versus reviews : remplacez simplement les « … » dans chaque argument pour placer les années sur l’axe x et le profit sur l’axe y. N’oubliez pas de préciser le data frame dans data !

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyQuLi4uLiwgXG4gICAgICBtb3ZpZXMkLi4uLi4sIFxuICAgICAgZGF0YSA9IC4uLi4uLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgbWV0aG9kID0gXCJsbVwiLCBcbiAgICAgIGFscGhhID0gSSgxIC8gNSksIFxuICAgICAgc2UgPSBGQUxTRSkiLCJzb2x1dGlvbiI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyR5ZWFyLCBcbiAgICAgIG1vdmllcyRwcm9maXQsIFxuICAgICAgZGF0YSA9IG1vdmllcywgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIn0=

negative correlation

En revenant à la matrice de corrélation, vous constatez que le coefficient entre profit et year est de -0,1, ce qui se voit mieux avec la droite des moindres carrés qu’avec la courbe ajustée.

Faire la synthèse

Découvrons une autre fonction puissante du package GGally : ggpairs. Elle permet de créer une matrice qui affiche, pour plusieurs variables, le coefficient de corrélation, un nuage de points (avec droite de régression et intervalle de confiance) et une densité.

Avec une seule fonction, vous combinez efficacement tout ce que vous avez vu dans ce tutoriel, de façon compacte et immédiatement lisible.

Dans le bloc de code suivant, choisissez vos trois variables préférées du data frame (aucun sous-échantillonnage nécessaire), renseignez-les et lancez !

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5saWJyYXJ5KFwiR0dhbGx5XCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGx1ZyBpbiB5b3VyIHRocmVlIGZhdm9yaXRlIHZhcmlhYmxlcyBhbmQgdGlua2VyIGF3YXkhXG5nZ3BhaXJzKG1vdmllcywgXG4gICAgICAgIGNvbHVtbnMgPSBjKFwiLi4uLi5cIiwgXCIuLi4uLlwiLCBcIi4uLi4uXCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSIsInNvbHV0aW9uIjoiIyBQbHVnIGluIHlvdXIgdGhyZWUgZmF2b3JpdGUgdmFyaWFibGVzIGFuZCB0aW5rZXIgYXdheSFcbmdncGFpcnMobW92aWVzLCBcbiAgICAgICAgY29sdW1ucyA9IGMoXCJjYXN0X2ZhY2Vib29rX2xpa2VzXCIsIFwiYnVkZ2V0XCIsIFwicHJvZml0XCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSJ9

correlation R matrix

Vous vous en doutez, chaque type de graphique a ses cas d’usage. L’essentiel est de connaître les techniques à votre disposition, savoir les utiliser et comprendre ce qu’elles montrent.

Pour aller plus loin

Vous avez parcouru beaucoup de notions dans ce tutoriel : bravo d’être allé jusqu’au bout !

J’espère que vous pourrez mettre ces concepts en pratique dans vos propres analyses. Ce sont les bases de l’exploration de données en R, et vous pouvez aller bien plus loin pour vous familiariser avec vos données avant d’analyser et modéliser. Pourquoi ne pas passer à la vitesse supérieure avec le cours Exploratory Data Analysis de DataCamp ?

En attendant, je vous invite à faire un tour sur Kaggle pour trouver un jeu de données riche et passionnant à explorer si vous ne souhaitez pas continuer avec le jeu movies !

Sujets
R