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 !
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"
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")
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
)
Seules les différences significatives sont affichées.
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 :
spiral_initialize()
, dans laquelle on spécifie la longueur des données que l’on va représenterspiral_track()
la représentation des données avec la fonction spiral_bars()
.Les données doivent être entrées sous la forme de deux vecteurs :
#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)
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))
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.
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.
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
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 :
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.
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 :
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 !
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 !.
Un court article pour se remettre les idées en place au sujet des erreurs de mesures en épidémiologie
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.
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.