Au cours de la dernière séance, vous avez créé un projet dans Rstudio et enregistré un script R qui permet notamment d’importer des données. Le TD d’aujourd’hui s’inscrit dans la continuité du précédent et propose de poursuivre la découverte du jeu de données des manchots de Palmer.
Aller dans le répertoire ds_TD
et cliquer sur l’icone associé au projet créé lors de la dernière séance. Rstudio s’ouvre et reprend apparemment la session là où elle s’était arrêtée :
TD1_script.R
a été sauvegardé.Ouvrir le script de la dernière séance et l’enregistrer sous le nom TD2_script.R
. La fenêtre Files liste maintenant deux fichiers R
dans votre répertoire ds_TD
, un pour chacune des séances de TD, le script de la deuxième séance incluant les lignes de commande de celui de la première.
Cliquer sur la fenêtre Packages.
Rstudio n’a chargé aucun package à l’ouverture du projet et il faut les charger via la fonction library
(vue en TD1) dont l’argument principal est le nom du package souhaité.
tidyverse
. Dans l’onglet Packages, la ligne portant sur tidyverse est maintenant cochée.Le tidyverse
est en fait un ensemble de packages, contenant entre autres
dplyr
dédié à la manipulation de données,ggplot2
dédié à la visualisation de données.La fonction select
du package dplyr
permet de sélectionner des variables (des colonnes) d’un jeu de données.
Quels arguments faut-il renseigner pour sélectionner la seule variable Espece
?
Sélectionner cette variable puis l’afficher.
Sélectionner cette variable et la stocker dans un objet nommé dta
.
Que fait la commande suivante ?
select(penguins, -poids)
Cette opération peut se comprendre de la façon suivante : à partir du jeu de données penguins, on retire la variable poids
. Ceci peut s’écrire à l’aide d’un opérateur appelé pipe et noté %>%
(raccourci CTRL + Shift + m ), de la façon suivante :
%>% select(-poids) penguins
L’opérateur pipe permet d’enchaîner les commandes et préserve la lisibilité.
%>%
penguins select(-poids) %>%
select(-ile) %>%
select(-espece)
poids
.Il est possible de sauvegarder ce jeu de données simplifié dans l’objet penguins lui-même, c’est ce qu’illustre la ligne de commande suivante :
<- penguins %>% select( -poids) penguins
filter
De façon formelle, vous venez d’utiliser l’opérateur logique >
. Les opérateurs logiques permettent notamment d’exprimer des conditions. Les plus importants sont, in english :
<
less than<=
less than or equal to>
greater than>=
greater than or equal to==
exactly equal to!=
not equal to!x
Not xx | y
x OR yx & y
x AND yRemarque : pour transformer vos variables, vous utiliserez des opérateurs arithmétiques tels que +
, pour additionner deux variables par exemple.
%>% filter(is.na(sexe)) penguins
!x
, garder uniquement les individus pour lesquels le sexe est renseignéGrâce au jeu de données manchots
, il est possible de comparer les longueurs de bec chez les mâles et les femelles.
Pour différencier les distributions des longueurs de bec selon le sexe, il est nécessaire d’ajouter une information sur le sexe sur le graphique créé précédemment, comme proposé dans la commande suivante :
%>% ggplot() + geom_histogram(aes(x=longueur_bec, fill = sexe)) manchots
Pour obtenir un histogramme par sexe, il faut modifier le comportement par défaut et indiquer que l’on veut deux histogrammes différents et non pas superposer dans chaque classe le nombre de mâles et de femelles. Il faut modifier l’argument position
par défaut.
%>% ggplot() + geom_histogram(aes(x=longueur_bec, fill = sexe), position = 'identity') manchots
Enfin pour bien visualiser les différents histogrammes, il est possible de jouer sur la transparence.
%>% ggplot() + geom_histogram(aes(x=longueur_bec, fill = sexe), position = 'identity', alpha = 0.6) manchots
Il est difficile, à l’oeil, de comparer des histogrammes : les boîtes à moustaches sont plus adaptées pour comparer l’effet du sexe sur la distribution des longueurs de bec.
sexe
et longueur_bec
.Les boîtes à moustaches sont une représentation adaptée à la visualisation de l’effet d’une variable qualitative sur une variable quantitative, elles sont obtenues dans R
grâce à la fonction graphique geom_boxplot
. Il faut spécifier que l’abscisse est la variable qualitative et l’ordonnée la variable quantitative.
Ce graphique par défaut est largement personnalisable (cf fin du TD)
Rappeler la nature des variables longueur du bec et longueur des nageoires. Quelle sorte de graphique semble le plus adpatée ?
Utiliser la fonction graphique geom_point
en précisant bien les abscisses et les ordonnées pour obtenir une visulaisation du lien entre la longueur des nageoires sur la longueur du bec.
Utiliser la couleur pour différencier les mâles des femelles.
Ajouter un titre au graphique précédent
Il est possible de modifier l’intitulé par défaut des axes grâce à la fonction labs
.
%>% ggplot() +
manchots geom_boxplot(aes(x = sexe, y = longueur_bec)) +
labs(x ='Sexe', y = 'Longueur du bec (mm)' )
Il est également possible de représenter les données elles-mêmes. On peut utiliser la commande geom_point
qui va dessiner un point aux abscisses et ordonnées spécifiées.
%>% ggplot() +
manchots geom_boxplot(aes(x = sexe, y = longueur_bec)) +
labs(x ='Sexe', y = 'Longueur du bec (mm)' ) +
geom_point(aes(x = sexe, y = longueur_bec))
Le résultat n’est pas très satisfaisant, car tous les points ayant la même abscisse, il est difficile de les différencier. Il est possible de perturber légèrement l’abscisse de manière à mieux distinguer les différentes mesures.
%>% ggplot() +
manchots geom_boxplot(aes(x = sexe, y = longueur_bec)) +
labs(x ='Sexe', y = 'Longueur du bec (mm)' ) +
geom_jitter(aes(x = sexe, y = longueur_bec))
Finalement pour avoir un très joli graphique, il est possible de
%>% ggplot() +
manchots geom_boxplot(aes(x = sexe, y = longueur_bec)) +
labs(x ='Sexe', y = 'Longueur du bec (mm)' ) +
geom_jitter(aes(x = sexe, y = longueur_bec), width = 0.3, size=0.4, alpha=0.8)
Utiliser la couleur comme cerise sur le gâteau.
%>% ggplot() +
manchots geom_boxplot(aes(x = sexe, y = longueur_bec, fill = sexe), alpha = 0.2) +
labs(x ='Sexe', y = 'Longueur du bec (mm)' ) +
geom_jitter(aes(x = sexe, y = longueur_bec, col = sexe), width = 0.3, size=0.4, alpha=0.8) +
labs(fill = 'Sexe', col = 'Sexe')
Reprendre les graphiques qui visualisent l’effet de la longueur des nageoires sur la longueur du bec.
%>% ggplot() +
manchots geom_point(aes(x = longueur_nageoire, y = longueur_bec)) +
xlab('Longueur des nageoires (mm)') +
ylab('Longueur du bec (mm)') +
geom_smooth(method = 'lm', aes(x = longueur_nageoire ,
y = longueur_bec))
%>% ggplot() +
manchots geom_point(aes(x = longueur_nageoire, y = longueur_bec, col = sexe)) +
xlab('Longueur des nageoires (mm)') +
ylab('Longueur du bec (mm)') +
geom_smooth(method = 'lm', aes(x = longueur_nageoire ,
y = longueur_bec, col = sexe))
La fonction aes
étant utilisé 2 fois de façon équivalente, il est possible de factoriser la fonction aes
%>% ggplot() +
manchots aes(x = longueur_nageoire, y = longueur_bec, col = sexe) +
geom_point() +
xlab('Longueur des nageoires (mm)') +
ylab('Longueur du bec (mm)') +
geom_smooth(method = 'lm')
Il est essentiel de nettoyer (ne garder que les commandes pertinentes) et de sauvegarder le script final pour pouvoir le réutiliser lors d’une séance prochaine. Il est préférable de charger les packages lors des premières lignes du script.
R
.