R à l’Usage des Sciences Sociales - Paris - 11 juin 2021

Recherche reproductible

Reproductibilité, réplicabilité

Selon Claerbout, Donoho, Peng (… et Giraud) :

Recherche reproductible : Les auteurs fournissent les données et le code nécessaire pour rejouer les analyses et recréer les résultats numériques.

Replication : Une étude arrive aux même résultats scientifiques en collectant de nouvelles données (éventuellement avec des méthodes différentes) et en réalisant une nouvelle analyse.


Attention, d’autres auteurs et institutions inversent ces définitons, les utilisent de manière indifférenciée ou rajoute le concept de répétabilité.

Barba, L. A. (2018). Terminologies for reproducible research. arXiv preprint arXiv:1802.03311.

Le spectre de la reproductibilité

Panorama des solutions assurant la reproductibilité des analyses avec R

La figure seule

La figure avec les données

.
├── data
│   ├── martinique.gpkg
│   └── rev.csv
└── fig
    └── map.png

La figure avec les données et les métadonnées

.
├── data
│   ├── martinique.gpkg
│   └── rev.csv
├── fig
│   └── map.png
└── metadata
    └── metadata.txt

La figure, les données, les métadonnées et le script

.
├── analyse
│   └── carte_revenus.R
├── data
│   ├── martinique.gpkg
│   └── rev.csv
├── fig
│   └── map.png
└── metadata
    └── medata.txt

La figure, les données, les métadonnées et le script

Un projet RStudio

.
├── analyse
│   └── carte_revenus.R
├── data
│   ├── martinique.gpkg
│   └── rev.csv
├── fig
│   └── map.png
└── make_a_map.Rproj

Un projet RStudio

Un projet RStudio + litterate programming + sessionInfo()

.
├── analyse
│   ├── carte_des_revenus.Rmd
│   └── carte_des_revenus.html
├── data
│   ├── martinique.gpkg
│   └── rev.csv
├── fig
│   └── map.png
├── make_a_map.Rproj
└── metadata
    └── metadata.txt

Un gestionnaire de package

renv

  • Gerer les versions des packages utilisés dans un projet.

  • Isoler, intelligemment, les packages par projet.

renv

Make-like pipeline toolkit

targets (succésseur de drake)

  • Pour les gros projets.

  • Gestion des caches et parralélisation des tâches

targets

“Packager” son analyse

Utiliser des containers

Docker

docker pull riatelab/make_a_map:v1.0.0

docker run -d -e PASSWORD=xxx --rm -p 8787:8787 riatelab/make_a_map:v1.0.0 

Docker

Systèmes de gestion de version

git, GitHub, GitLab ???

  • Git est un système de gestion de version distribué

    • tracker les changement dans les fichiers texte
    • gérer l’historique du code source
    • partager le code avec des dépots distantes
  • GitHub et GitLab hébèrgent des dépots distants + des services pour gérer des projets (issue tracking, collaboration, hébergement web, CI/CD)

  • GitLab a un modèle open-core. Possibilité d’héberger une instance.

Git

Research Compendium

Les données

Stocker / archiver ses données dans un dépôt respectant les principes FAIR :

Et après?

Peer, L., Orr, L., & Coppock, A. (2021). Active Maintenance: A Proposal for the Long-Term Computational Reproducibility of Scientific Results. PS: Political Science & Politics, 1-5. doi:10.1017/S1049096521000366

Quelques ressources

Merci

R version 4.1.0 (2021-05-18)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 10 (buster)

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.8.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.8.0

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.33

loaded via a namespace (and not attached):
 [1] codetools_0.2-18  png_0.1-7         digest_0.6.27     R6_2.5.0          jsonlite_1.7.2   
 [6] magrittr_2.0.1    evaluate_0.14     highr_0.9         rlang_0.4.11      stringi_1.6.2    
[11] jquerylib_0.1.4   bslib_0.2.5.1     rmarkdown_2.8     tools_4.1.0       stringr_1.4.0    
[16] xfun_0.23         yaml_2.2.1        compiler_4.1.0    htmltools_0.5.1.1 sass_0.4.0