News et découvertes d'octobre 2021

Nouveautés R du mois d'octobre 2021

Je vous propose ici un nouveau type d’article dans lequel je vous partage les fonctions, packages ou ressources que j’ai découvertes durant le mois qui vient de s’écouler, et qui m’ont particulièrement intéressées. Je vais essayer de les regrouper dans de grandes thématiques comme l’utilisation de R, les biostatistiques, le reporting, la data visualisation, etc…

On commence donc pour le mois d’octobre 2021, avec vous allez voir, une pépite pour simuler des données ! 

Table des matières

Data Visualization

Quelles couleurs utiliser pour les daltoniens ?

La question des couleurs à employer pour permettre aux daltoniens de bien distinguer les informations sur une représentation visuelle revient souvent. Lors d’une formation que j’ai animé très récemment, un stagiaire a partagé un document rédigé par Paul Tol, qui propose des palettes de couleurs (avec leur code rgb et hexadécimal ) qui :

  • sont distinctes pour tous (y compris les daltoniens),
  • sont distinctes du noir et blanc
  • sont distinctes à l’écran et sur papier
  • qui s’accordent bien ensemble.

Ce document est vraiment très intéressant, parce qu’il permet de régler le problème récurrent du choix des couleurs pour satisfaire tout un ensemble de contraintes.

 

Et pour créer concrètement ces palettes sous R pour qu’elles soient prêtes à l’emploi, vous pouvez consulter mon articleComment automatiser votre palette de couleurs RGB ?”.

Reporting

Création de site ou blog avec le package distill

Si vous souhaitez créer un blog ou un site internet pour partager vos travaux de recherche, mais que vous ne souhaitez pas passer par WordPress, et que vous vous débrouillez en R markdown, le package distill peut vraiment être une bonne option !

Je l’ai rapidement essayé et j’ai réussi facilement à créer le squelette d’un site internet. J’ai même réussi à le déployer avec R Studio Connect (enfin une fois sur deux pour être honnête : au premier essai tout a fonctionné; et la seconde fois, j’ai obtenu une erreur 404…).

Je n’ai pas pris le temps de creuser cette erreur, mais globalement l’utilisation du package m’a vraiment paru abordable. Ce n’est pas plus compliqué que l’utilisation du package bookdown pour compiler un document complet à partir de différents fichiers Rmarkdown.

Vous trouverez des tutos plutôt faciles à suivre sur ce site (crée bien évidemment avec distill !) . Les tutoriels sont dans l’onglet Websites.

Biostatistiques

Simuler des données

Voilà la pépite 💥 dont je vous parlais ! Une application Shiny qui permet de simuler des données de plans factoriels à partir de paramètres que l’on donne en entrée : nombre de facteurs, nombre de modalités, moyennes, écart-types (simulation selon des lois normales). 

L’application permet de spécifier des effets between et within (analyse avec des modèles mixtes).

Elle s’appelle Faux, ça ne fait pas envie, et pourtant, elle me semble vraiment intéressante pour simuler des données afin de :

  • créer des jeux de données à des fins pédagogiques
  • créer des jeux de données pour s’assurer que le plan d’analyse statistique prévu est bien adapté
  • créer un jeu de données proches de données observées, sans communiquer les vraies données.

Cette application a été développée par Lisa DeBruine(@LisaDeBruine).

Pour la tester, j’ai cherché à simuler les données (reproduire) ToothGrowth (présentes dans le package dataset, chargé par défaut). Il s’agit d’un plan factoriel 2*3, uniquement avec des effets between,  réalisés chez le cochon d’inde, et qui a pour but d’évaluer les effets de l’administration de vitamine C sur la croissance des dents. Cette vitamine C est administrée par jus d’orange (OJ), ou via un comprimé (VC), et selon 3 doses (0.5, 1 et 2). Chaque croisement de modalités est évaluée sur 10 animaux.

Pour commencer, j’ai récupéré les moyennes et écart-types des longueurs de dents :

TG <- ToothGrowth
tapply(TG$len, list(TG$supp, TG$dose), mean)
##      0.5     1     2
## OJ 13.23 22.70 26.06
## VC  7.98 16.77 26.14
tapply(TG$len, list(TG$supp, TG$dose), sd)
##         0.5        1        2
## OJ 4.459709 3.910953 2.655058
## VC 2.746634 2.515309 4.797731 

J’ai ensuite :

  1. Renseigné ces informations sur l’application
  2. Généré les données
  3. Téléchargé les données simulées
  4. Importées ses données dans R pour les comparer aux données d’origine
TG_simul <- read.csv("data/TG-simulated.csv")

tapply(TG_simul$y, list(TG_simul$supp, TG_simul$dose), mean)
##        0.5       1       2
## OJ 13.2299 22.7002 26.0600
## VC  7.9799 16.7701 26.1401
tapply(TG_simul$y, list(TG_simul$supp, TG_simul$dose), sd)
##         0.5        1        2
## OJ 4.460140 3.909964 2.660077
## VC 2.750031 2.519982 4.799992 

On peut voir que les données simulées ont effectivement des caractéristiques très proches des données d’origine.

J’ai ensuite exploré graphiquement ces deux datasets :

library(dplyr)
# data management des données simulées
TG_simul <- TG_simul %>% 
    select(-id) %>% 
    mutate(type="simulation") %>% 
    rename(len=y) %>% 
    relocate(len, supp, dose)

# data management des données d'origine
TG <- TG %>% 
    mutate(type="origine")

# assemblage des 2 datasets
TG_all <- bind_rows(TG, TG_simul)

# plot
library(ggplot2)
pd <- position_dodge(0.1)
ggplot(TG_all, aes(x=dose, y=len, colour=type))+
    geom_point(position = pd)+
    facet_grid(~supp) 
comparaison des données simulées et des données d'origine

On voit bien que les données simulées sont très similaires aux données d’origine.

Il s’agit ici d’une publication de Katherine Lee et al,  qui propose une approche pour le traitement et le reporting des données manquantes dans les études épidémiologiques observationnelles.
Je n’ai pas encore pris le temps de la lire en totalité, je l’ai seulement parcouru (mais elle est en bonne position dans la liste de mes prochaines lecture d’article), mais elle me semble contenir beaucoup d’informations. Si, comme moi, vous connaissez mal ce sujet des données manquantes (les différents types, les différentes méthodes d’imputation, les guidelines etc..), je pense que c’est un bon point de départ. Et même si vous travaillez dans un domaine qui n’est pas celui de l’épidémiologie !

 

Effects size : seuils théoriques vs réalité

Il s’agit là encore d’une publication, mais qui traite des effect sizes. Elle a été écrite par Daniel Quitana. Daniel Quitana est un  chercheur norvégien qui travaille sur l’Ocytocine, la variabilité de la fréquence cardiaque et les méta-analyse, et qui partage beaucoup de contenus sur Twitter ou sur sa chaîne  Youtube, notamment sur sa manière de mener ses recherches (par exemple, comment il réalise une méta-analyse). Je vous en avais déjà parlé dans cet article .

L’effect size est une mesure standardisée de la différence des effets entre deux groupes. Il existe des seuils théoriques, proposés par Cohen, mais ces seuils ont été établis dans le domaine des sciences sociales. Dans son article, Daniel Quintana compare ces seuils avec la distribution réellement observés des effects size dans le domaine de la variabilité de la fréquence cardiaque.

Cette publication m’intéresse particulièrement parce que cette question de la pertinence des seuils définis une fois pour toute, pour un test donné, dans un domaine éloigné de l’application que j’en fais (biologie, médecine, agronomie), je me la pose fréquemment !

 Et cerise sur le gâteau, Daniel Quintana partage le code R qu’il a employé dans son étude  : https://osf.io/sjkxa/.

Utilisation de R

Gestion des versions de package avec renv

Comment faire pour que mon code fonctionne toujours dans 2 ans (ou 6 mois 😅 ) malgré les mises à jour de R et des packages ?

La réponse est dans cet article, en français ! 👇👇👇

Exportation de data frame dans un même classeur Excel

Ici quelle que chose de très concret : comment exporter plusieurs data frame dans un même classeur Excel ?

C’est très simple avec la fonction write_xlsx() du package writexl. Pour cela, il suffit de spécifier, dans une liste, les data frame considérés et le nom des feuilles qui les recevront dans une liste.

Par exemple pour exporter dans un classeur mes_datasets.xlsx, les data frame iris, airquality, et anscombe,

# creation d'un dossier "data_export" dans le projet R
dir.create("data_export")
## Warning in dir.create("data_export"): 'data_export' existe déjà
#install.packages("writexl")
library(writexl)


writexl::write_xlsx(
    x = list(
        feuille_Iris = iris,
        feuille_Airquality = airquality,
        feuille_anscombe = anscombe
    ),
    path = "data_export/mes-dataset.xlsx"
) 

Remarque : ces trois datasets sont présents par défaut dans R

exporter plusieurs feuilles dans un même classeur

Pour apprendre comment découper un data frame en fonction des modalités d’une variable catégorielle pour ensuite exporter ces différents sous data frame dans même classeur Excel, toujours avec la fonction write_xlsx() du package writexl, vous pouvez consulter cet article :Exportations multiples en fichiers csv ou feuilles Excel” .

Conclusion

Alors ? 

Qu’est-ce que vous pensez de ce nouveau format d’article ?

Bien ou pas bien ?

Dites-le-moi en commentaire de cet article ou bien envoyez-moi un petit message : claire@delladata.fr

De même, si vous souhaitez que je consacre un article entier à un des éléments présentés ici, ou  si vous découvrez des pépites que vous souhaitez partager, dites le moi en commentaire,  ou envoyez-moi un mail.

Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee  👇

Image par Couleur de Pixabay

Poursuivez votre lecture

8 Responses

  1. Merci Madame Della Vedova pour cet autre superbe article, grâce à vous, j’apprends un petit peu plus chaque jour sur la Data science / Data analyse/ Data visualisation et autre.
    Vivement un prochain article.
    Bien cordialement.

    Alain

  2. Bonjour,

    A part le lien pour la publi Quintana qui n’a pas fonctionné pour moi, l’article est super.

    Je vais jeter un oeil aux effect size et aux donnees manquantes qui sont mon lot quotidien! Mais ma préférence va aux couleurs que j’ai d’ores et déjà transférés!

    MERCI

  3. Très pratique pour parcourir rapidement un nombre important de sujets et approfondir en fonction du temps et de l’intérêt. Super travail merci beaucoup.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bonjour !

vous venez souvent ?

Identifiez-vous pour avoir accès à toutes les fontionnalités !

Aide mémoire off'R ;)

Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.