SAS R plus a rien
2024-08-10
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
La programmation lettré : Méthode de code intéligible
Les documents computationnels : Rmarkdown/Quarto
Les forges logicielles : Github ou Gitlab
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
Difficile à lire
# A tibble: 2 × 3
top1_c5 moyenne médiane
<chr> <dbl> <dbl>
1 C5i 39.7 40.3
2 C5m 12.4 12.4
Simple à lire
# A tibble: 2 × 3
top1_c5 moyenne médiane
<chr> <dbl> <dbl>
1 C5i 39.7 40.3
2 C5m 12.4 12.4
library(ggplot2)
data("mpg")
ggplot(data = mpg,
aes(x = cut(displ, breaks = c(unname(quantile(displ,na.rm = T,probs = c(0,0.25,0.5,0.75,1)))),
include.lowest = TRUE, labels = c("Très faible","Faible","Haute","Très haute")),
fill=class)
) +
geom_bar(position = "fill")+
scale_fill_brewer(palette="Set1")+
xlab("Cylindré en litre") +
ylab("") +
ggtitle("Cylindré en litre selon le type de vehicule") #-----------------------------------------------------------------
# Représentation graphique
# de la répartition de vehicules
# discrétisés en quatre classes
# en fonction de leur cylindré en litre
#
#-----------------------------------------------------------------
# Library de graphique et base
library(ggplot2)
# Discrétisation la variable displ (données mpg)
## Statistiques sur la série statistique displ
summary(mpg$displ)
## Histogramme de la distribution
hist(mpg$displ) Min. 1st Qu. Median Mean 3rd Qu. Max.
1.600 2.400 3.300 3.472 4.600 7.000
## Choix des bornes de classes en quartile
bornes_des_classes <- c(quantile(mpg$displ,na.rm = T,probs = c(0,0.25,0.5,0.75,1)))
## Choix des noms de classes
nom_des_classes <- c("Très faible","Faible","Haute","Très haute")
## Discrétisation de la variable 'displ'
mpg$displ_tranche <- cut(mpg$displ,
breaks = bornes_des_classes,
labels = nom_des_classes,
include.lowest = TRUE)
#---------------------------------------------------------------------
# Représentation de la distribution selon la discrétisation
## Représentation graphique de la distribution
ggplot(data = mpg, #data set mpg
aes(x = displ_tranche, #axe des x variable displ_tranche discrétisation de displ
fill=class) # variable de type de véhicule (catégorisation au sein de chaque barre)
) +
geom_bar(position = "fill") + #Type de graphique avec postion empilée
scale_fill_brewer(palette="Set1") + # Choix de la palette de couleur
xlab("Cylindré en litre") + # Titre de l'axe des abscisses
ylab("") + #suppression du titre de l'axe des ordonnés
ggtitle("Cylindré en litre selon le type de vehicule") # Titre du graphique graphique_1 <- ggplot(data = mpg, #data set mpg
aes(x = displ_tranche, #axe des x variable displ_tranche discrétisation de displ
fill=class) # variable de type de véhicule (catégorisation au sein de chaque barre)
)
#Type de graphique avec postion empilée
graphique_1<-graphique_1 + geom_bar(position = "fill")
# Choix de la palette de couleur
graphique_1<-graphique_1 + scale_fill_brewer(palette="Set1")
# Titre de l'axe des abscisses
graphique_1<- graphique_1 + xlab("Cylindré en litre")
#suppression du titres de l'axe des ordonnés
graphique_1<- graphique_1 + ylab("")
# Titre du graphique
graphique_1<- graphique_1 + ggtitle("Cylindré en litre selon le type de vehicule")
graphique_1Interface 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
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
Répondent aux problématiques de :
Et favorisent la science ouverte, la reproductibilité, la transparence
Hébergement : GitLab Enterprise Edition, gratuit et auto-hébergé sur les serveurs du SUNI. Le serveur GitLab été créé par Jérémy pour une autre application dans le passé, mais n’a finalement jamais été utilisé.
Sécurité
Prix : Une mise à niveau vers une version payante devra être envisagée si la version gratuite ne correspond plus aux besoins du Céreq.
Interface permettant de relier nos fichier en local et les fichier sur GIT (cloud)
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
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
R, Markdown, Quarto, les Notebooks et Git