Le package easystat
est défini par ses développeurs (dont Indrajeet Patil, Dominique Makowski et Daniel Lüdecke ), comme “une collection de packages qui fonctionnent en synergie pour fournir une syntaxe cohérente et intuitive lorsque vous travaillez avec des modèles statistiques dans le langage de programmation R (R Core Team, 2021). La plupart des packages easystats renvoient des résumés numériques complets des paramètres et des performances du modèle.”
Dans cet ensemble, la place du package see
est de “complèter ces résumés numériques avec une multitude de fonctions et d’outils pour produire une gamme de visualisations prêtes à être publiées pour les paramètres du modèle, les prédictions et les diagnostics de performance. En tant que pilier central d’easystats
, le package see
aide les utilisateurs à utiliser la visualisation pour des rapports scientifiques plus informatifs, communicables et complets.
La description étant plutôt prometteuse, je me suis penchée plus en détails les fonctions proposées par ce package. Dans cet article, je vous partage ce qui m’a particulièrement intéressée.
Il s’agit de représenter, sur un graphique, les valeurs des paramètres d’un modèle statistique (régression linéaire multiple, glm etc..)
Pour réaliser ce type de graph, le principe est de :
1. Ajuster un modèle
2. Extraire les paramètres avec la fonction parameters()
du package parameters
(qui appartient à easystats
)
3. Simplement employer la fonction plot()
sur le résultat des étapes précédentes.
Pour tester cette fonction, j’ai ajusté un modèle de régression linéaire multiple sur les données cystfibr
contenues dans le package ISwR
:
install.packages("easystats")
library("easystats")
library(ISwR)
data("cystfibr")
cystfibr$sex <- as.factor(cystfibr$sex)
# ajustement du modèle
cystfibr.lm <- lm(pemax~sex+height+bmp+fev1+rv+tlc, data=cystfibr)
# obtention des paramètres
parameters(cystfibr.lm)
## Parameter | Coefficient | SE | 95% CI | t(18) | p
## --------------------------------------------------------------------
## (Intercept) | -166.49 | 99.01 | [-374.49, 41.52] | -1.68 | 0.110
## sex [1] | 4.27 | 13.23 | [ -23.53, 32.08] | 0.32 | 0.750
## height | 1.17 | 0.32 | [ 0.50, 1.84] | 3.67 | 0.002
## bmp | -0.56 | 0.59 | [ -1.80, 0.67] | -0.96 | 0.351
## fev1 | 1.90 | 0.80 | [ 0.22, 3.59] | 2.38 | 0.029
## rv | 0.11 | 0.10 | [ -0.11, 0.33] | 1.06 | 0.304
## tlc | 0.40 | 0.41 | [ -0.47, 1.26] | 0.97 | 0.345
plot(parameters(cystfibr.lm))
Et pour obtenir une version avec les paramètres standardisés, c’est tout simple : il suffit d’ajouter l’argument standardize="refit"
dans la fonction parameters()
:
# pour obtenir des paramètres standardisés
plot(parameters(cystfibr.lm, standardize="refit"))
Et comme le package est compatible avec ggplot2
(ça veut dire que l’on peut compléter les graphiques en ajoutant des couches ggplot2
, on peut, par exemple, ajouter un titre :
library(ggplot2)
plot(parameters(cystfibr.lm, standardize="refit"))+
ggtitle("mon super graph")
Il y a d’autres packages qui permettent de faire la même chose, mais ici l’interaction entre les packages parameters
et see
est simple d’utilisation et très efficace !
Là aussi, il existe plein de packages et de fonctions qui permettent d’étudier les corrélations. J’en ai déjà parlé dans cet article, ou encore dans celui-là.
Pour tester ce que propose le package see
, j’ai encore employé les données cystfibr
contenues dans le package ISwR
:
library(correlation)
library(see)
library(ISwR)
data("cystfibr")
results <- summary(correlation(cystfibr))
plot(results, show_data = "points")
Hé bien, je trouve la visualisation vraiment intéressante. Elle nous permet d’appréhender les liens entre les variables ultra-facilement !
Dans certaines situations, réaliser un graphique sur un fond noir permet réellement de le mettre en valeur, ça fait un petit effet whaouuu 🤩 pas négligeable !
C’est possible de le faire avec ggplot2
, mais à ma connaissance, pas facilement. Il existe bien un theme dark sur ggplot2
, mais je le trouve super décevant. Voici un exemple :
ggplot(iris, aes(x=Sepal.Width, y=Sepal.Length, colour=Species))+
geom_point()+
theme_dark()
On est d’accord, c’est pas terrible ?
Alors qu’avec le package see
on peut accéder à un vrai fond noir, grâce à la fonction theme_blackboard()
:
ggplot(iris, aes(x=Sepal.Width, y=Sepal.Length, colour=Species))+
geom_point()+
theme_blackboard()
🤩🤩🤩 C’est beaucoup mieux, non ?
Si comme moi, vous trouvez que les couleurs par défaut de ggplot2
ne sont pas géniales 😩, les palettes prédéfinies du package see
seront une bouffée d’oxygène ! 😜
Et en plus, elles sont super simples à employer, il suffit d’ajouter la couche scale_color_material()`
par exemple (il en existe d’autres, vous les trouverez en cliquant ici.
Voilà ce que ça donne :
ggplot(iris, aes(x=Sepal.Width, y=Sepal.Length, colour=Species))+
geom_point()+
scale_color_material()
Moi, je dis MERCI 🙏🙏🙏
Jusque-là, pour combiner plusieurs plots dans une même fenêtre graphique, j’employais la plupart du temps la fonction, grid.arrange()
du package gridExtra
.
Pour faire des choses plus subtiles, j’employais les fonctions des packages cowplot
et patchwork
.
Le package see
permet aussi de combiner facilement des plots, avec la fonction plots() !
Franchement, quoi de plus simple ?
Voici un exemple (directement copié de la page github du package 😉)
p1 <- ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_boxplot() +
theme_modern(axis.text.angle = 45) +
scale_fill_material_d()
p2 <- ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_violin() +
theme_modern(axis.text.angle = 45) +
scale_fill_material_d(palette = "ice")
p3 <- ggplot(iris, aes(x = Petal.Length, y = Petal.Width, color = Sepal.Length)) +
geom_point2() +
theme_modern() +
scale_color_material_c(palette = "rainbow")
plots(p1, p2, p3, n_columns = 2)
Jusque-là, rien de renversant. Mais ce que j’ai vraiment apprécié, c’est de pouvoir ajouter un tag ultra-facilement, grâce à l’argument tags
, et obtenir un rendu très élégant :
plots(p1, p2, p3,
n_columns = 2,
tags = paste("Fig. ", 1:3)
)
On peut aussi le faire avec cowplot, mais les étiquettes sont moins bien placées (en tout cas par défaut)
library(cowplot)
plot_grid(p1, p2,p3,
ncol=2,
labels=paste("Fig. ", 1:3))
Ce type de plot, comme son nom l’indique, consiste à combiner, dans un même graph, un violin plot avec un dot plot :
ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_violindot(fill_dots = "black") +
theme_modern() +
scale_fill_material_d()
Si vous souhaitez avoir une vision plus complète des possibilités du package see
, n’hésitez pas à consulter sa page github : https://easystats.github.io/see/, ansi que sa documentation. Pour la voir apparaître dans la page d’aide, il vous suffit de cliquer sur le nom du package dans l’onglet “package”
Au final, je trouve ce package see
assez intéressant, parce qu’il est facile à employer, compatible avec ggplot2, et qu’il permet en pratique courante d’accéder à des fonctionnalités qui me manquaient (la palette de couleurs agréable, et un thème dark).
Il me donne aussi clairement envie d’aller explorer les fonctionnalités des autres packages de easystats
.
Mais pour en revenir à ce package see
(🤦♀️énorme jeu de mot!) à la question “est ce que vous devez l’adopter“, ma réponse est : plutôt oui !!
Et vous, qu’est-ce que vous en pensez ?
Si vous souhaitez soutenir mon travail, vous pouvez faire un don libre sur la page tipeee du blog :
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.
3 réponses
Il est magique ce package !!
Excellent travail
Merci Aziz !