Une formation aux bonnes pratiques avec Git et R
Insee
Insee
R
et Git
Retour à la page d’accueil pour explorer les autres versions
L’activité du statisticien / datascientist tend à se rapprocher de celle du développeur :
Source : Peng R., Reproducible Research in Computational Science, Science (2011)
Git
est un standard atteignable et efficientNote
Quel socle de bonnes pratiques pour les projets statistiques en R
?
1️⃣ Qualité du code et structure des projets
2️⃣ Les formats de données de diffusion
3️⃣ Le contrôle de version
4️⃣ Normes de sécurité
5️⃣ Ouverture
Deux outils pratiques aident à respecter les standards :
Note
Il existe un guide de référence pour bien coder en R
: le Tidyverse style guide.
README
RDS
, RData
, fst
, sas7bdat
, etc.).pour en finir avec ça :
ou ça :
ou encore ça :
prior <- read_csv(prior_path)
prior <- prior %>%
select(id, proba_inter, proba_build, proba_rfl) %>%
separate(id, into = c('nidt', 'grid_id'), sep = ":") %>%
group_by(nidt) %>%
mutate(
proba_build = proba_build/sum(proba_build),
proba_rfl = proba_rfl/sum(proba_rfl),
) %>%
unite(col = "id", nidt, grid_id, sep = ":")
# Test
# prior_test <- prior %>%
# mutate(
# proba_inter = round(proba_inter, 4)
# proba_build = round(proba_build, 4)
# proba_rfl = round(proba_rfl, 4)
# )
write_csv(prior_round, "~/prior.csv")
Pour arriver à ça :
Source : ThinkR
Git
, GitHub
, GitLab
… quelles différences ?Git
est un logiciel ;RStudio
, VS Code
…)Git
, GitHub
, GitLab
… quelles différences ?GitHub
et GitLab
sont des forges logiciellesAstuce
GitHub
: utilisation pour les projets open-sourceGitLab
: utilisation pour les projets internesQue versionne-t-on ?
.html
, .pdf
, modèles…)Note
Pour définir des règles qui évitent de committer tel ou tel fichier, on utilise un fichier nommé .gitignore
.
Si on mélange du code et des éléments annexes (output, données…) dans un même dossier, il faut consacrer du temps à ce fichier.
Des modèles de .gitignore
existent sur internet, par exemple celui-ci pour les projets .
N’hésitez pas à y ajouter des règles conservatrices (par exemple *.csv
), comme cela est expliqué dans la documentation utilitR
.
Format des commits
Il faut distinguer deux types de processus de production :
Git
répond-il bien aux enjeux de la production ?Exemple avec calcul du taux de pauvreté dans SRCV
Les tâtonnements supposent des allers et retours sur différentes hypothèses :
Git
facilite la complète reproductibilité des tâtonnements ;git blame
permet de voir qui a fait quoi ;Git
.⇒ deux notions essentielles : reproductibilité et traçabilité
R
et des packages ;renv
et la notion de lockfileQuestion
Quels sont, selon vous, les principaux risques de sécurité liés au développement en self ?
Git
Notion de boîte de dialogue qui permet d’entrer le mot de passe sans l’inscrire dans le code
library(DBI)
library(RPostgresInsee)
library(rjson)
## import des éléments de connexion
connexion_details <- fromJSON(file = "X:/HAB-LOGFIDELI/Production en self/conf_servers_fideli.json")
## connexion au clone
connexion_clone <- do.call(dbConnect, args = c(connexion_details$clone[2:4],
list(drv = Postgres(),
password = rstudioapi::askForPassword("Mot de passe :"))))
KeePass
:
.kdbx
chiffré.kdbx
sont protégés par un mot de passe maîtreGit
(utiliser le fichier .gitignore
)On préférera toujours avoir des données stockées dans un unique espace pour lequel les droits d’accès sont gérés individuellement.
R
, Python
et leurs packages sont gratuits, comment est-ce possible ?R
: disaggR
, btb
, RJDemetra
…L’ensemble des bonnes pratiques qui ont été présentées sont issues de l’open source.
Bonnes pratiques pour les projets statistiques (retour au site principal ; )