Découvertes et nouveautés de décembre 2021 et janvier 2022

On est déjà début février  ! C’est donc le moment pour vous parler des news et découvertes du mois de janvier, mais aussi celles de décembre dernier, parce que j’avais l’impasse.

Comme d’habitude, j’ai essayé de les regrouper par thématique : Data visualisation, Biostatistiques, Analyse de corrélation, Recherche clinique, Utilisation de R et Lecture !

Table des matières

Data visualisation

Ajouter une p value

J’ai découvert le package ggpval qui permet d’ajouter la p-value d’un test de comparaison de moyennes (test de Student ou test de Wilcoxon), sur un boxplot réalisé avec ggplot2. La fonction qui permet cela est add_pval().

 

Voici un exemple :

#install.packages("ggpval")
library(ggpval)
library(ggplot2)
library(funModeling) # pour les données heart_disease
plt <- ggplot(heart_disease, aes(x=gender, y=age)) +
  geom_boxplot() +
  geom_jitter()

add_pval(plt,test="t.test") #sinon "wilcox.test" 
ajouter la pvalue d'un test t sur un graphique

Cela fonctionne aussi sur un plot avec facet : 

plt2 <- ggplot(heart_disease, aes(x=gender, y=age)) +
  geom_boxplot() +
  geom_jitter()+
  facet_wrap(~has_heart_disease)

  add_pval(plt2,pairs=list(c(1,2)),test="wilcox.test")  
ajouter des p-value sur un plot avec facet

Vous trouverez plus d’exemples sur la vignette du package.

Après avoir fait quelques essais, mon avis sur ce package est un peu mitigé. Je trouve qu’il est facile d’utilisation et très pratique dans le cas de deux comparaisons, et le fait qu’on puisse l’utiliser avec un facet est un bon point. Par contre lorsqu’il y a plusieurs comparaisons, après une anova par exemple, le rendu n’est pas génial,  parce que les pvalues se chevauchent :

plt3 <- ggplot(heart_disease, aes(x=chest_pain, y=age)) +
  geom_boxplot() +
  geom_jitter()

 
add_pval(plt3,pairs=list(c(1,2),c(1,3),c(1,4)),test="wilcox.test") 

Dans ces cas-là, je trouve que le package ggstatsplot est plus performant :

library(ggstatsplot)
ggbetweenstats(
  data = heart_disease,
  x = chest_pain,
  y = max_heart_rate,
  var.equal=TRUE
) 
pvalue sur graph après anova

Seules les différences significatives sont affichées.

 

Plot en spirale avec le package spiralize

Le package spiralize permet de représenter des données sous la forme d’une spirale. Il me semble que ça peut être intéressant pour représenter des données longitudinales (suivi dans le temps).

Pour voir ce que ça pouvait donner, j’ai essayé avec le dataset AirPassengers qui est une série temporelle du nombre de passagers mensuelle entre 1949 et 1960.

AirPassengers
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432 

La réalisation du graphique en spirale se déroule en trois étapes :

  1. l’initialisation de la spirale avec la fonction spiral_initialize(), dans laquelle on spécifie la longueur des données que l’on va représenter
  2. le tracé d’une spirale vide avec la fonction spiral_track()
  3. la représentation des données avec la fonction spiral_bars().

Les données doivent être entrées sous la forme de deux vecteurs :

  • x qui est un indice
  • y les données (qui doivent être normalisées en 0 et 1)
#install.packages("spiralize")
library(spiralize)
spiral_initialize(xlim = c(0, length(AirPassengers)))
spiral_track(height = 0.8)
x= seq(1,144, by=1)-0.5

# fonction de  normalisation
range01 <- function(x){(x-min(x))/(max(x)-min(x))}

# normalisation du nombre de passagers
y = range01(as.vector(AirPassengers))

# réalisation de la spirale avec les données
spiral_bars(x, y) 
Visualisation de l''évolution du nombre de passagers au cours du temps

On peut faire des spirales beaucoup plus jolies. Par exemple en employant des barres empilées pour représenter plusieurs proportions interdépendantes (ici 3, et leur somme vaut 1).

x = seq(1, 1000, by = 1) - 0.5  # middle points of bars

y = matrix(runif(3*1000), ncol = 3)
y = y/rowSums(y)
spiral_initialize(xlim = c(0, 1000))

spiral_track(height = 0.8)

spiral_bars(x, y, gp = gpar(fill = 2:4, col = NA)) 
Visualisation de l'évolution de proportions

Vous trouverez plus d’exemples dans la vignette du package.

Visuellement je trouve cela très joli, mais il me semble dommage qu’aucune étiquette de temps (ou d’indice des x) ne soit affichée (au moins par défaut) pour pouvoir se repérer.

Biostatistiques

Cours "Analyse des données multidimensionnelles"

Si vous vous intéressez à l’analyse des données multidimensionnelles, notamment aux analyses en composantes principales, aux analyses factorielles des correspondances, à l’analyse des correspondances multiples, à la classification et à l’analyse factorielle multiple), vous pouvez actuellement vous inscrire au cours “Analyse des données multidimensionnelles” proposé par François Husson, Jérôme Pagès et Magalie Houée-Bigot sur Fun Mooc .

Ce cours est accessible à tous gratuitement, il commence le 7 mars, et s’étend sur  5 semaines. C’est une très belle opportunité de s’initier et de se former à ces méthodes d’analyses multidimensionnelles.

Analyse de corrélation

Il s’agit d’une très courte vidéo qui va à l’essentiel et qui vous montre comment réaliser une analyse de corrélation entre deux variables quantitative, à l’aide du package ggstatsplot()` (encore lui !), et, ici, de la fonction ggscatterstats().

Cette fonction permet d’obtenir des représentations visuelles très élégantes et contenant toutes les informations nécessaires, pour vos publications ou rapport d’analyse. Voici un exemple :

library(ggstatsplot)
library(funModeling) # pour le dataset heart_disease
ggscatterstats(data=heart_disease,
               x=age,
               y=max_heart_rate,
               type="parametric") 

Ici, avec une version non paramétrique :

ggscatterstats(data=heart_disease,
               x=age,
               y=max_heart_rate,
               type="nonparametric", bf.message=FALSE 
Corrélation de Spearman entre deux variables quantitatives

Je suis quand même un peu gênée par le tracé de la droite dans le cas “nonparametric” parce qu’une des utilisations de la corrélation de Spearman c’est justement lorsque la relation n’est pas linéaire, mais seulement monotone.

Mais on peut aussi l’utiliser dans le cas linéaire lorsque l’hypothèse d’homogénéité des résidus n’est pas satisfaite (par exemple lorsque les résidus augmente lors la variable en x augmente – ce n’est pas le cas ici)

Vous trouverez des infos complémentaires sur le package, ici. Et des informations sur la corrélation dans les deux articles ci-dessous : 

Recherche clinique

Un package de soumissions à la FDA de tests basés sur R

Food and Drug Administration and R

C’est un sujet que je connais très mal, mais grossièrement,  pour commercialiser un produit de santé à l’international, il est nécessaire de soumettre les données observées et les analyses statistiques réalisées, auprès de la FDA (Food and Drug Administration). Jusqu’à présent ses soumissions étaient basées sur l’utilisation du logiciel SAS. Et comme R est de plus en plus utilisé dans l’industrie pharmaceutique, un groupe de travail du consortium R a réalisé une soumission basée sous R. Vous pourrez retrouver tout le matériel de la soumission ici.

Utilisation de R

Crééer son premier package

Maël Theulière et Juliette Engelaere-Lefebvre ont rendu public un diaporama pour apprendre à créer un package sous R, en procédant étape par étape sous la forme de 6 ateliers :

  • Créer son premier package
  • Le workflow de l’alimentation d’un package
  • Ajouter des datasets
  • Ajouter des vignettes et un site de documentation
  • Ajouter des templates Rmarkdown
  • Gérer les versions de votre package.

J’ai parcouru les slides, elles sont vraiment très bien faites, très didactique. Si le sujet vous intéresse, je pense que c’est LA ressource pour bien débuter !

C’est par ici

Lecture

Le magazine significance

J’ai découvert le magazine Signifiance, que ne connaissais pas. C’est un magazine, (et aussi un site web) de la Royal Statistical Society, de l’American Statistical Association et de la Statistical Society of Australia. Sur le site, on retrouve de nombreux articles autour des statistiques et de l’analyse de données. Voici comme le magazine se définie : “Nous défions les mythes, offrons une perspective unique sur les histoires du jour et utilisons des statistiques pour répondre aux questions les plus difficiles de la société”.Allez jeter un coup d’oeil, c’est plutôt intéressant !.

Reflection on modern methods: five myths about measurement error in epidemiological research

Un court article pour se remettre les idées en place au sujet des erreurs de mesures en épidémiologie

 

Conclusion :

J’espère que ces découvertes et nouveautés vous intéresseront aussi ! N’hésitez pas à me le dire en commentaire ou à  partager vos propres découvertes.

Si cet article vous a plu, ou vous a été utile vous pouvez soutenir le blog, en réalisant un don libre sur sa page Tipeee.

Retrouver les précédents news et découvertes

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.