FAS1003: Visualisation des données

Cours 2: Introduction à R et à la visualisation (suite) et outils de travail

Visualisation des données

Quelques principes généraux de la visualisation des données

  • L’humain distingue mieux les différences de tailles quand elles sont organisées sous forme de lignes, plutôt que sous forme d’aires, d’angles ou de cercles.

En images

rma3

Source

En images

rma3

Source

En images

rma3

Source

En images

rma3

Source

Quelques principes généraux de la visualisation des données (suite)

Notre cerveau peut nous jouer des tours quand on regarde des graphiques (Healy 2018). - L’oeil humain ne voit pas toutes les formes, couleurs et contrastes aussi efficacement les uns que les autres. - Certaines tendances de la cognition peuvent nous permettre de comprendre pourquoi c’est le cas.

Tendances de la cognition

Healy (et Arel-Bundock, 2020) décrit certaines tendances de la cognition (“Gestalt principles”) qui peuvent affecter notre interprétation des éléments visuels:

  1. L’oeil fait des liens entre les éléments visuels qui se ressemblent (“similarity”): par exemple, on présume que les éléments de mêmes couleurs, taille ou forme sont liés les uns aux autres.

Similarity: exemples

rma4

Source

Similarity: exemples

rma4

Source

Tendances de la cognition (suite)

  1. L’oeil fait des liens entre les éléments qui sont proche les uns des autres (“proximity”): on a l’impression que les éléments qui sont regroupés ont quelque chose à voir les uns avec les autres.

Proximity: exemples

rma3

Source

Proximity: exemples

rma3

Source

Tendances de la cognition (suite)

  1. Les éléments incomplets ou interrompu sont complétés par notre cerveau (“closure”, “continuity”): notre cerveau poursuit les lignes qui traversent des “obstacles”. Quand une forme est incomplète, notre cerveau la “referme”.

Continuity/Closure: exemples

rma3

Source

Continuity/Closure: exemples

rma3

Source

Continuity/Closure: exemples

rma3

Source

Tendances de la cognition (suite)

  1. Le cerveau conclut qu’il existe une relation entre les éléments qui sont liés ensemble par l’image (“connection”, voir aussi “common region”): en créant des liens entre certains éléments, on donne l’impression qu’ils ont à voir les uns avec les autres.

Connection/Common region: exemples

rma3

Source

Connection/common region: exemples

rma3

Source

Tendances de la cognition (suite)

  1. Certains motifs peuvent créer des illusions d’optique.

rma3

Source

Tendances de la cognition (suite)

  1. L’oeil détecte mieux les contrastes dans les images monochromes (en noir et blanc) que colorées.

rma3

Source

Tendances de la cognition (suite)

  1. Quand le nombre de couleurs augmente, il devient plus difficile de distinguer les informations, surtout si c’est combiné avec des formes variées.

rma3 Source

Les principes de la visualisation

Un des plus grands du domaine de la visualisation des données, Edward Tufte, souligne quatre principes fondamentaux de la visualisation:

  1. Intégrité: Ne pas être malhonnête avec les données, montrer les données telles qu’elles le sont, avant toute transformation.

Les principes de la visualisation (suite)

  1. Simplicité: Réduire la quantité d’encre pour la quantité d’information transmise – éliminer les décorations, diminuer le nombre de dimensions.

Les principes de la visualisation (suite)

  1. Contexte: Ajouter un titre, identifier les axes, identifier les variables et les garder sur des échelles standardisées, ajouter une légende qui décrit bien les élements du graphique.

Les principes de la visualisation (suite)

  1. Esthétique: Ultimement, il faut que ce soit beau. Et la beauté est subjective.

Comment choisir le bon type de graphique?

Il n’y a pas de règles strictes pour choisir le bon type de graphique. Or, il aide de se poser les questions suivantes:

  1. Qui est l’audience de notre graphique/de notre article scientifique?
  2. Quelle histoire voulons-nous raconter?

Comment choisir le bon type de graphique? (suite)

  1. Quelle est la nature de nos données?
  2. Sur quoi avons-nous l’intention de mettre l’emphase?
  3. Quel message voulons-nous transmettre à l’aide de notre graphique?
  4. Un tableau serait-il plus approprié pour transmettre l’information?

Visualiser des données ordonnées

rma3

Source

Visualiser des données non ordonnées

rma3

Source

Différents types de graphiques

Il est possible de suivre certains guides pour s’inspirer, comme:

En résumé

  • Au final, nos goûts aussi sont importants.
  • Le plus important, comme le dit Tufte, est de ne pas faire mentir les données et de ne pas tenter de transmettre trop d’informations à la fois.
  • Un graphique devrait être intuitif et explicite.

Quelques maîtres de la visualisation des données

  • Je vous encourage à faire vos propres recherches sur les artistes en visualisation des données.
  • Je vous montre ici quelques classiques ou personnes que j’apprécie particulièrement.

Edward Tufte

Voir le livre.

Amber Thomas

Voir ici.

Le New York Times

Voir ici.

Information is Beautiful

ici.

Pause!

Suite de l’introduction à R

Jusqu’à maintenant

  1. Nous avons créé des R Projects.
  2. Dans ces R Projects, nous avons créé des scripts R, dans lesquelles nous avons rédigé nons commandes.

Maintenant, on change un peu la formule

  1. Les R Projects demeurent.
  2. Au lieu de travailler dans des R scripts, nous allons travailler dans des fichiers R Markdown.

R Markdown: C’est quoi ça?

  • R Markdown est un type de fichier (avec extention .Rmd) qui permet de composer du texte et de faire apparaître des commandes R (ainsi que leurs résultats).
  • Dans ce type de fichier, le texte est entrecoupé de “bribes” de code R.
  • Lorsqu’on a terminé de composer un document R Markdown, on le “tricotte” dans le format de notre choix, par ex. Word, Powerpoint, PDF ou HTML.
  • Dans le cadre du cours, nous nous en tiendrons au format Word. Libre à vous cependant d’explorer les autres formats.

R Markdown: aperçu

rma

Créer un nouveau fichier R Markdown

  • Commencez par ouvrir le R Project dans lequel voulez travailler (ou créez-en un nouveau).
  • Pour créer un nouveau fichier R Markdown, sélectionnez “File -> New File -> R Markdown…”
  • Donnez-lui un titre, cliquez sur le format “Word”, puis sur “Ok”.
  • Lorsque le fichier sera ouvert, enregistrez-le dans votre ordinateur au même emplacement que votre R Project.

Les éléments d’un fichier R Markdown

  1. Les titres
    • Les titres sont précédés d’un ou plusieurs symbole(s) dièse (#).

Les éléments d’un fichier R Markdown (suite)

  1. Le texte
    • Le texte est rédigé dans le document. Aucune configuration n’est nécessaire.

rma2

Les éléments d’un fichier R Markdown (suite)

  1. Les bribes de code

rma3

Les éléments d’un fichier R Markdown (suite)

  1. Les bribes de code
    • Pour créer une nouvelle bribe de code, utilisez le raccourci:
      • Ctrl + Alt + I en Windows
      • Cmd + Option + I en Mac
    • Ou bien: cliquez sur le bouton “Insert” en haut à droite, puis sélectionnez R.

Les éléments d’un fichier R Markdown (suite)

  1. Les bribes de code (suite)
    • Dans les bribes de code, on peut écrire des commandes R, exactement comme on faisait dans un R script.
    • Les lignes de codes s’exécutent exactement de la même manière que via un R script.
    • Les résultats apparaissent dans la console (comme avant), mais aussi sous les bribes elles-mêmes.

Les éléments d’un fichier R Markdown (suite)

  1. La toute première bribe de code
    • Elle est utile si l’on veut ajuster certaines configurations de notre fichier.
    • Pour l’instant, on ne la modifie pas. On ne la supprime pas non plus!

rma3

Comment tricotter un fichier R Markdown

rma1

Que se passe-t-il quand on tricotte notre fichier?

  • Une fois le fichier tricotté, la version Word devrait apparaître.
  • Vous la retrouverez aussi à l’emplacement du fichier R Markdown dans votre ordinateur.

Madame, pourquoi on apprend tout ça?

  • Les fichiers R Markdown sont extrêmement utiles pour produire des documents qui contiennent des commandes R et des résultats.
  • Pas besoin de copier-coller les résultats de R vers un autre document.
  • Si vous décidez de modifier un élément de votre code, votre document final s’ajustera automatiquement!
  • Dans le cadre du cours, vous remettrez tous vos travaux dans ce format.
  • En plus de voir les résultats que vous produisez, je pourrai aussi voir vos commandes.

Les paquets

  • Jusqu’à maintenant, nous avons utilisé des fonctions qui existent de facto dans R, comme mean() ou read_csv() par exemple.
  • Cependant, la plupart des fonctions doivent être installées, puisqu’elles ne sont pas comprises dans R automatiquement.
  • Toutes ces autres fonctions se trouvent dans des “paquets” (packages).

Installer un nouveau paquet

  • Pour installer un paquet, on utiliser la fonction install.packages(). On ajoute le nom du paquet entre guillemets.
install.packages("tidyverse")
  • Comment savoir de quel paquet j’ai besoin? Suivre mes instructions ou chercher sur internet!

“Appeler” un paquet

  • Une fois un paquet installé, vous n’avez plus jamais besoin de le ré-installer!
  • Cependant, à chaquefois que vous ouvrirez R et voudrez utiliser ce paquet, il faudra l’appeler à l’aide de la fonction library().
  • Ici, pas besoin de guillemets.
library(tidyverse)

C’est mêlant?

  • Pour mieux comprendre, imaginez-vous la chose suivante:
  • En utilisant install.packages(), c’est comme si vous étiez allé.e acheter un livre (le package en question).
  • Vous êtes revenu.e à la maison et l’avez mis dans votre bibliothèque.
  • Ensuite, quand vous voulez consulter ce livre, pas besoin de retourner l’acheter, mais vous devez aller le chercher dans votre bibliothèque (library()).

Manipuler des banques de données

  • Un paquet extrêmement important pour ce cours est le paquet tidyverse.
  • Ce paquet est spécial: c’est un paquet qui contient des paquets.
  • En l’installant, on installe plein d’autres paquets, donc dplyr, qui est très utile pour manipuler les banques de données et ggplot2, qui sert à créer des graphiques.

Le tuyau

  • Pour manipuler les banques de données, nous nous servirons d’un outil nommé le “tuyau” (pipe operator).
  • Ce dernier prend la forme suivante: %>%.
    • Les raccourcis pour l’écrire sont: Ctrl+Shift+M (Windows), Cmd+Shift+M (Mac)
  • Quand on veut manipuler une banque de données, on la fait “traverser le tuyau”.
  • Tout ça est très étrange, je sais. Les prochaines diapos vous aideront à comprendre.

Manipuler des banques de données: Sélectionner des variables

  • La fonction select() permet de sélectionner des variables (colonnes).
dat = airquality

d = dat %>% 
  select(Wind,Temp)
# on crée un nouvel objet (d) qui contient 
# seulement les variables Wind et Temp
# de la banque de l'bjet original "dat"

d2 = dat %>% 
  select(-Wind) # retirer des variables

Manipuler des banques de données: Sélectionner des lignes

  • La fonction filter() permet de sélectionner des observations (lignes).
d3 = dat %>% filter(Day <= 12)  # plus petit ou égal à

d4 = dat %>% filter(Month == 5)  # est égal à

d4 = dat %>% filter(Solar.R != 99)  # n'est pas égal à

d5 = dat %>% filter(Month > 5, Day < 12)

Manipuler des banques de données: Ajouter des variables

  • La fonction mutate() permet d’ajouter des variables.
dat = dat %>% mutate(variable1 = 40)
# la variable sera égale à 40 pour toutes les observations

dat = dat %>% mutate(variable2 = Ozone)
# dupliquer la variable Ozone

Manipuler des banques de données: Recoder des variables

  • La fonction recode() permet de recoder une variable existante.
  • On peut l’utiliser en combinaison avec mutate().
dat = CO2 # nouvelle banque
table(dat$Type)
## 
##      Quebec Mississippi 
##          42          42
d2 = dat %>% 
  mutate(Type_nouveau = recode(Type, 
                               "Quebec" = "Qc",
                               "Mississippi" = "Miss"))

Manipuler des banques de données: Recoder des variables

  • La fonction ifelse() est aussi très utile pour recoder des variables.
d3 = dat %>% 
  mutate(Type_nouveau = ifelse(Type == "Quebec", "Qc", "Miss"))
# si Type est égal à "Quebec", inscrit "Qc".
# Sinon, inscrit "Miss".

Manipuler des banques de données: Modifier le type des variables

  • On peut recoder une variable pour changer son type.
  • Les fonctions as.numeric(), as.character(), as.factor(), etc. permettent de faire cela.
class(dat$conc)
## [1] "numeric"
dat = dat %>% mutate(conc = as.character(conc))

class(dat$conc)
## [1] "character"

Manipuler des variables: Grouper, puis faire des calculs

  • La fonction group_by() permet de faire groupes.
  • Par exemple, on peut vouloir calculer la moyenne d’une variable A pour chacune des catégories d’une variable B.
table(dat$Treatment) # Treatment a 2 catégories
## 
## nonchilled    chilled 
##         42         42
summary(dat$uptake) # la moyenne globale de uptake est 27.21
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    7.70   17.90   28.30   27.21   37.12   45.50

Manipuler des variables: Grouper, puis faire des calculs (suite)

demo = dat %>% 
  group_by(Treatment) %>% 
  summarise(moyenne = mean(uptake)) %>% 
  ungroup()

demo
## # A tibble: 2 × 2
##   Treatment  moyenne
##   <fct>        <dbl>
## 1 nonchilled    30.6
## 2 chilled       23.8

Manipuler des variables: Grouper, puis faire des calculs (suite)

demo2 = dat %>% 
  group_by(Treatment) %>% 
  summarise(somme = sum(uptake)) %>% 
  ungroup()

demo2
## # A tibble: 2 × 2
##   Treatment  somme
##   <fct>      <dbl>
## 1 nonchilled 1287 
## 2 chilled     999.

Exercice

  1. Enregistrez la banque de données iris, qui se trouve de facto dans R, dans un objet nommé banque.
  2. À l’aide des fonctions mutate() et recode(), recodez la variable Species pour que la catégorie setosa se nomme Setosa. Enregistrez cette nouvelle banque de données dans un objet nommé nouvelle_banque.
  3. À l’aide de la fonction select(), supprimez la variable Sepal.Length de nouvelle_banque.
  4. Calculez le total de la variable Petal.Length pour chaque groupe de la variable Species. Appelez ce total total_petal.
  5. “Tricottez” votre fichier dans un document Word.

Exercice: Corrigé

  1. Enregistrez la banque de données iris, qui se trouve de facto dans R, dans un objet nommé banque.
banque = iris
banque <- iris

Exercice: Corrigé (suite)

  1. À l’aide des fonctions mutate() et recode(), recodez la variable Species pour que la catégorie setosa se nomme Setosa et que la catégorie versicolor se nomme Versicolor. Enregistrez cette nouvelle banque de données dans un objet nommé nouvelle_banque.
table(banque$Species)
## 
##     setosa versicolor  virginica 
##         50         50         50
nouvelle_banque = banque %>% 
  mutate(Species = recode(Species,
                          "setosa" = "Setosa",
                          "versicolor" = "Versicolor"))

Exercice: Corrigé (suite)

  1. À l’aide de la fonction select(), supprimez la variable Sepal.Length de nouvelle_banque.
nouvelle_banque = nouvelle_banque %>% select(-Sepal.Length)

Exercice: Corrigé (suite)

  1. Calculez le total de la variable Petal.Length pour chaque groupe de la variable Species. Appelez ce total total_petal.
nouvelle_banque = nouvelle_banque %>% 
  group_by(Species) %>% 
  summarise(total_petal = sum(Petal.Length)) %>% 
  ungroup()

nouvelle_banque
## # A tibble: 3 × 2
##   Species    total_petal
##   <fct>            <dbl>
## 1 Setosa            73.1
## 2 Versicolor       213  
## 3 virginica        278.

Exercice: Corrigé (suite)

  1. “Tricottez” votre fichier dans un document Word.

Appuyez sur le bouton “knit”.

À la semaine prochaine!