Des données d’enquête aux premiers résultats
Une initiation à l’utilisation de R/RStudio à partir de l’enquête Envie
Claire Kersuzan (PUD-Bx, MSH-Bx/Univ. de Bordeaux, LifeObs/Ined)
Capucine Rauch (PUD-S, MISHA/Univ. de Strasbourg, LifeObs/Ined)
Maude Crouzet (SAGE/Univ. de Strasbourg)
Mise en pratique
Reproduction d’un résultat scientifique
Le projet RStudio contient tout ces éléments !
Sélectionner et préparer les variables
Recoder certaines variables
Calculer des tableaux croisés pondérés
Mettre les résultats en forme
Construire le graphique
C’est parti !
Préparation de l’environnement de travail
Envie.Rproj.csv → fonction read_csv() du package readrSélectionner et préparer les variables
ENVIE2 contenant uniquement les variables d’intérêtselect(BDD, var1, var2, ... , varN)Comment se répartissent les individus dans les modalités des variables d’intérêt ?
table(BDD$var,useNA="always")À vous de jouer, réalisez les tris à plat pour les autres variables !
Figure uniquement sur les femmes et les hommes → il faut retirer les individus non-binaires de la base (genre_id = 3)
filter(BDD,condition)
genre_id vaut 1 ou 2Y a-t-il des données manquantes ?
Origine sociale: 196 NA sur 9 903 individus (≈ 2,0 % de l’échantillon)
Couple: 24 NA sur 9 903 individus (≈ 0,2 % de l’échantillon).
Relativement peu de non-réponses, on choisit de les exclure.
filter(BDD,complete.cases(var1, var2, ..., varN))
Un objet peut en écraser un autre !
Assigner un résultat à un objet déjà existant écrase son contenu précédent, sans possibilité de retour en arrière immédiat.
Pour revenir à l’objet d’origine, il faut relancer la commande ayant permis de le créer.
Recoder les variables
Les variables de la figure ont-elles la même forme que dans le dictionnaire des codes ?
icut()du package questionr⚠️ icut() génére le code mais ne l’exécute pas !
Argument labels=c("etiquette1","etiquette2")
irec()du package questionrRecodage ou labellisation ?
1, 2, 3 en "Homme", "Femme", "Autre""Classes populaires"Par abus de langage, labellisation associée au recodage
Character ou factor ?
Dans R, une variable qualitative peut être stockée:
sous forme de character: chaque modalité est stockée comme du texte
sous forme de factor: modalités définies comme des catégories structurées (niveaux) Plusieurs avantages :
Mais plus compliqué à manipuler !
Dans cet exercice, le « recodage » sert en fait à labelliser, transformer en
factorpourrait suffire.
Mais plus compliqué à manipuler !
Pour débuter on recode/labellise encharacter.
⚠️ irec() génére le code mais ne l’exécute pas !
# Recodage de ENVIE3$par_men_5 en ENVIE3$origine
ENVIE3$origine <- as.character(ENVIE3$par_men_5)
ENVIE3$origine[ENVIE3$par_men_5 == "1"] <- "cadre"
ENVIE3$origine[ENVIE3$par_men_5 == "2"] <- "intermédiaire"
ENVIE3$origine[ENVIE3$par_men_5 == "3"] <- "employée"
ENVIE3$origine[ENVIE3$par_men_5 == "4"] <- "petit indépendant"
ENVIE3$origine[ENVIE3$par_men_5 == "5"] <- "populaire"À vous !
⚠️ Exécuter le code !
À vous !
⚠️ Exécuter le code !
dplyrmutate() et case_when() du package dplyr.case_when(condition1 ~ valeur1, ...)Calculer les tableaux croisés pondérés
Quelle fonction peut-on utiliser pour créer ces deux bases ?
wtd.table() du package questionrwtd.table(VariableEnLigne,VariableEnColonne,weights=pondération)
lprop() du package questionr
À vous de créer les autres tableaux croisés nécessaires à la reproduction de la figure !
À vous de créer les autres tableaux croisés nécessaires à la reproduction de la figure !
Mettre les résultats en forme pour la représentation graphique
data.framedata.framedata.frameas.data.frame(tableau)
À vous maintenant de transformer les autres tableaux contenant les données à représenter !
À vous maintenant de transformer les autres tableaux contenant les données à représenter !
À vous maintenant de transformer les autres tableaux contenant les données à représenter !
bdd_f_age et bdd_h_age) ;bdd_f_origine et bdd_h_origine).genre.À vous de jouer !
Construction du graphique
Choisir la bonne représentation graphique
Le choix du graphique dépend de plusieurs éléments :
Arbre de décision interactif pour vous aider dans le choix du graphique.
Interface esquisser() du package Esquisse
ggplot2)Glisser et déposer les variables dans les zones dédiées
X : modalite
→ catégories à comparer : classes d’âge ou catégories d’origine sociale
Y : Freq
→ pourcentages de personnes ayant été en couple dans l’année
fill : genre
→ distinguer les femmes et les hommes par des couleurs différentes
facet : bloc
→ séparer le graphique en deux parties : âge et origine sociale
dodge#E88A00#077F11Trouver les bonnes couleurs pour son graphique:
flipDans l’onglet Axes, repérer les options de l’axe correspondant à la variable Freq, puis indiquer :
Freq
0901free_yfree_y : chaque facette affiche ses propres modalitésfree : modifie aussi l’échelle des pourcentagesLabels & Title
Title : Avoir été en couple dans l’année selon l’âge et l’origine sociale
X label : Variable
Y label : %
Fill label : Genre
Caption : M. Bergström, F. Maillochon, l’équipe Envie, Population & Sociétés, n° 623, mai 2024, Ined. Source : Enquête Envie, Ined, 2023. Données pondérées.
Thème = apparence générale du graphique
Theme
minimallibrary(ggplot2)
ggplot(bdd_graphique) +
aes(x = modalite, y = Freq, fill = genre) +
geom_col(position = "dodge") +
scale_fill_manual(values = c(
Femme = "#E88A00",
Homme = "#077F11"
)) +
labs(
x = "Variable",
y = "%",
title = "Avoir été en couple dans l'année selon l'âge et l'origine sociale",
caption = "M. Bergström, F. Maillochon, l’équipe Envie, Population & Sociétés, n° 623, mai 2024, Ined. Source : Enquête Envie, Ined, 2023. Données pondérées.",
fill = "Genre"
) +
coord_flip() +
theme_minimal() +
theme(
legend.justification = "right",
plot.title = element_text(size = 12, face = "bold", hjust = 0.5),
plot.caption = element_text(face = "italic", hjust = 0, size=6L),
axis.title.y = element_text(size = 12, hjust = 1),
legend.title = element_text(size = 12)
) +
facet_wrap(vars(bloc), scales = "free_y", ncol = 1) +
ylim(0, 90)
Comment s’appellent-elles ?
couple12Mgenre_idage_recpar_men_5poidscal