Une nouvelle R pour le Cereq

SAS R plus a rien

Edmond Noack

2024-08-10

Une présentation inspirée d’un séminaire du Metsem (Séminaire Méthodologie de Sciences Po)

Hugues Pecout (Géographie Cités) présente une séance intitulée “De l’article de données à l’article de code, en passant par les méthodes”, elle concerne la pratique de publication de documents computationnels (Notebooks) dans le cadre du projet Rzine.

Ecouter le séminaire ICI

Les concepts

  • La programmation lettré : Méthode de code intéligible

  • Les documents computationnels : Rmarkdown/Quarto

  • Les forges logicielles : Github ou Gitlab

Literate Programming

Nous devons changer notre attitude traditionnelle envers la construction des programmes : au lieu de considérer que notre tâche principale est de dire à un ordinateur ce qu’il doit faire, appliquons-nous plutôt à expliquer à des êtres humains ce que nous voulons que l’ordinateur fasse…

Tel un auteur, il choisit, avec soin, le dictionnaire à la main, les noms de ses variables et en explique la signification pour chacune d’elles. Il cherche donc à obtenir un programme compréhensible parce que ses concepts sont présentés dans le meilleur ordre possible. Pour cela, il utilise un mélange de méthodes formelles et informelles qui se complètent.

— Donald Knuth, Literate Programming

On est à la recherche de lisibilité pas d’optimisation

Literate Programming

Difficile à lire

head(summarise(group_by(filter(base_efe, tx_acc > 0.2),top1_c5),moyenne = mean(tx_acc), médiane = median(tx_acc)))
# A tibble: 2 × 3
  top1_c5 moyenne médiane
  <chr>     <dbl>   <dbl>
1 C5i        39.7    40.3
2 C5m        12.4    12.4

Literate Programming

Simple à lire

base_efe %>%
  # filtre si le taux accès est superieur à 20 %
    filter(tx_acc > 0.2) %>%
  # en fonction de la variable top1_c5
    group_by(top1_c5) %>%
  # La moyenne et la médiane
    summarise(moyenne = mean(tx_acc), médiane = median(tx_acc)) %>%
    head()
# A tibble: 2 × 3
  top1_c5 moyenne médiane
  <chr>     <dbl>   <dbl>
1 C5i        39.7    40.3
2 C5m        12.4    12.4

Note Book, Document computationnel

Interface de programmation qui combine langage naturel et langage de programmation

Du texte + du code

  • Le texte : Peut etre mis en forme, comptenir des images, des liens etc…

  • Le code : Peut s’executer par bloc

    Le Note Book est l’outil parfait pour faire du literate programming (programmation lettrée)

    Le Note Book aide a faire de la recherche reproductible

Note Book, Document computationnel, S. Jugnot et disque R

L’utilisation de notebook permetrait de partir d’une base brute d’enquête jusqu’a une base diffusable. On serait ainsi transparent sur les appurements, imputations, redressements, etc…

Un seul programme pour passer de production à diffusion

Structure Note Book :

Exemple de Note Book R :

Le Note Book permet different format de sorties

  • Du code
  • Des PDF
  • Des PPT
  • Latex
  • Des pages HTML
  • Des docs .qmd .rmd

Quarto est le meilleur outils de Note Book

Les Forges Logicielles

Répondent aux problématiques de :

  • Travail collaboratif (gestion de version/versionning)
  • Partage
  • Oragnisation interne et externe
  • Mise a disposition

Et favorisent la science ouverte, la reproductibilité

Les deux principales forges logicielles (GitHub et Gitlab)

Github

Gitlab

Le Cereq a fait le choix de Gitlab

  • Avantage a demander à

Github Desktop

Interface permettant de relier nos fichier en local et les fichier sur GIT (cloud)

Commit Push Pull Fetch

  • Commit : Commentaire sauvegarder dans le fichier .git

  • Push : Envoi du commit sur le GIT(cloud)

  • Pull : Récuparation en local du GIT(cloud)

  • Fetch : comparaison du cloud et du local

Les repos, Les branches

Un repo est un répertoire qui va contenir un ensemble de fichier.

Un repo peut avoir plusieurs branches qui évoluent en parrallèle et qui peuvent etre merger

Il est de bon usage que chaque intervenant travaille sur sa propre branche.

Il y a une branche principale qui fait office de référence : la branche main

Les indispensables d’un repo

  • Le Readme : fichier markdown explicatif du projet
  • Le dossier .git : enregistre l’historique via les commits
  • Le gitignore : permet d’exclure des dossier ou extension du l’envoi sur la Git(cloud)
  • Le dossier data : contient les bases et est exclu du cloud via le gitigniore
  • Le dossier programme : contient les pgm