Introduction à Tidyverse

De EduTech Wiki
Aller à la navigation Aller à la recherche

Cet article est en construction: un auteur est en train de le modifier.

En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.



Introduction

Tidyverse (Wickham et al., 2019) est une collection de paquets de R qui se caractérise par le choix délibéré d'appliquer certains principes au Data Science. Les paquets qui font partie de l'écosystème de Tidyverse implémentent ces principes à travers le partage d'une syntaxe similaire, uniformité dans les formats de Input et Output des fonctions, et une philosophie commune, inspirée par la notion de Tidy data (Wickham, 2014). La flexibilité et possibilité d'extension de l'écosystème Tidyverse font ainsi que les paquets puissent être utilisés indifféremment par des novices en R ou des utilisateurs expérimentés, pour des projets simples ou complexes.

Dans cette page nous proposons un aperçu de cet écosystème, avec des exemples simples et destinés à un public novice en R. Les paquets principaux qui composent le Tidyverse sont ensuite abordés de manière plus spécifiques dans des pages dédiées ou des références à des ressources externes.

Note sur la version

Cette page se réfère à la version 1.3.x de Tidyverse (voir versionnage sémantique). Même si l'écosystème des paquets liés au Tidyverse est constamment en évolution, les informations contenues dans cet article devrait être valable dans la plupart des cas également pour des versions successives.

Crédits

L'écosystème lié à Tidyvese est en général très ouvert et attentif aux novices/débutants en R. Il existe par conséquent des nombreuses ressources dans le web - surtout en anglais - disponibles sous Licence Creative Commons qui prévoit l'utilisation libre, pour des finalités non commerciales, avec attribution de la source. Cet article reprend plusieurs concepts et quelques exemples, en les adaptant au contexte d'intérêt de ce wiki, depuis :

  • R for Data Science de Garrett Grolemund et Hadley Wickham. Il existe une traduction française du livre sous le titre R pour les data sciences.

Prérequis

Aucune connaissance préalable n'est nécessaire pour suivre le contenu de cet article. Cependant, pour maximiser sa compréhension et la possibilité d'appliquer directement les éléments traités, les articles suivants peuvent être très utils :

Code des exemples

Le code des exemples est disponible dans un repository GitHub :

  • À faire

Pour pouvoir tester le code à votre tour, il est conseillé d'avoir un un environnement de travail typique pour R. En alternative, vous pouvez utiliser une version dans le cloud que vous pouvez directement modifier sans installation sur votre poste de travail:

  • À faire

La philosophie Tidy

Les paquets de l'univers Tidyverse

Installation et incorporation

Tidyverse est une collection de différents paquets de R qui peuvent être installés et incorporé dans vos scripts de deux manières différentes :

  • Installation/incorporation globale à travers le paquet tidyverse
  • Installation/incorporation ponctuelle des paquets singulièrement

La phase d'installation est d'incorporation peuvent être distinctes, c'est-à-dire que vous pouvez installer le paquet global et ensuite incorporer singulièrement un ou plusieurs paquets. Lorsque vous vous approchez pour la première fois à l'univers Tidyverse, il est conseillé d'utiliser le paquet global. Par la suite, par contre, il est plus indiqué d'incorporer seulement les paquets que vous utilisez, car le paquet global est assez lourd.

Installation et incorporation globale

Pour installer tous les paquets de Tidyverse utilisez la commande suivante :

install.packages("tidyverse")

Pour charger et incorporer Tidyverse dans vos scripts, utilisez :

library(tidyverse)

Lorsque vous lancez cette commande, vous aller voir dans la console un message qui vous informe des paquets que vous avez chargés, ainsi que leur version actuelle. Par exemple :

-- Attaching packages --------------------------------------- tidyverse 1.3.0 --
v ggplot2 3.2.1     v purrr   0.3.3
v tibble  2.1.3     v dplyr   0.8.3
v tidyr   1.0.0     v stringr 1.4.0
v readr   1.3.1     v forcats 0.4.0
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()

Le message vous informe également d'éventuels conflits avec d'autres fonctions. Cet aspect dépasse le cadre introductif de cet article et il est commun à tout autre paquet de R. Néanmoins, il est bien de savoir que Tidyverse vous informe des conflits.

Incorporation individuelle d'autres paquets installés globalement

La commande install.packages("tidyverse") installe également d'autres paquets de l'univers Tidyverse qui ne sont en revanche pas incorporés automatiquement avec la commande library(tidyverse) afin de ne pas charger des éléments non utilisés par la suite. Pour incorporer ces paquets il faudra donc charger le paquet séparément, en plus du paquet global, e.g. :

# Charger le paquet global
library(tidyverse)

# Charger le paquet rvest pour faire du web scraping
library(rvest)

Tidy data

Toute la philosophie de Tidyverse est construite autour de l'organisation des données. En effet, cet aspect est souvent sous-estimé ou géré par des mythes dont l'origine est parfois incertaine ou lié à l'utilisation spécifique de certains logiciels d'analyse statistique. Dans cette section, nous proposons un bref exemple conceptuel qui compare deux approches différentes :

  1. Le mythe du tableau omni-compréhensive
  2. L'approche Tidy

Nous verrons les mêmes données dans les deux perspectives afin de mettre en évidence les différences. Par la suite de l'article, nous verrons comment passer d'un format à l'autre avec une extension de cet exemple de base, ainsi que les avantages de passer à l'approche Tidy.

Le mythe du tableau omni-compréhensive

Un mythe assez fréquent en sciences sociales consiste dans le tableau rectangulaire qui englobe toutes les données des participants, représenté dans l'exemple suivant :

participant age faculty task1 task2 task3 question1 question2 question3
P1 27 Computer Science 162 120 200 1 2 1
P2 38 Psychology 97 126 185 5 4 3
P3 22 Other 150 177 170 7 6 7

Ce tableau présente en réalité différentes informations. On retrouve :

  • Des informations personnelles comme l'âge ou la faculté d’appartenance
  • Des informations relatives à des mesures sur trois tâches, par exemple le temps en seconds nécessaire pour mener à bien la tâche correspondante
  • Des informations relatives à un questionnaire d'évaluation sur une échelle ordinale de 1 à 7

Nous avons limité à trois tâches et à trois questions pour des raisons de brévité, mais ce type de tableaux peuvent rapidement s'étaler en largeur à plusieurs dizaines de colonnes. À l'occurrence, d'ailleurs, le nombre de colonnes peut être ultérieurement augmenté avec des indices composés, comme par exemple les moyennes des tâches et des questions :

participant age faculty task1 task2 task3 question1 question2 question3 avg_tasks avg_questions
P1 27 Computer Science 162 120 200 1 2 1 160.6667 1.333333
P2 38 Psychology 97 126 185 5 4 3 136.0000 4.000000
P3 22 Other 150 177 170 7 6 7 165.6667 6.666667

Les mêmes données en format Tidy

Références

  • Wickham, H., & Grolemund, G. (2016). R for data science: Import, tidy, transform, visualize, and model data. O’Reilly Media, Inc.
  • Wickham, H. (2014). Tidy Data. Journal of Statistical Software, 59(10). https://doi.org/10.18637/jss.v059.i10
  • Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L., François, R., … Yutani, H. (2019). Welcome to the Tidyverse. Journal of Open Source Software, 4(43), 1686. https://doi.org/10.21105/joss.01686