Initiation à l’analyse de données avec R

Camille Pelletier
Laurence-Olivier M. Foisy

Université Laval

Plan de l’atelier

9h à 12h

  • Qu’est-ce que l’analyse de données?
  • Pourquoi R?
  • Introduction à R et RStudio

12h à 15h

  • Atelier libre avec des mentors de la CLESSN
  • Exercices avec R

Objectifs de l’atelier

  • Introduire R pour l’analyse de données.
    • Les dataframes
    • Les fonctions
    • Les packages
    • Les graphiques
    • Les statistiques

Le but est que vous puissiez sortir d’ici avec une compréhension de base de R et que vous soyez capable d’aller chercher des ressources pour continuer à apprendre.

Pourquoi suivre cet atelier?

  • Base solide pour la recherche académique

Permet également de comprendre la pertinence de l’utilisation d’un logiciel de traitement de données et d’obtenir des outils pour dédramatiser la science des données

Pourquoi suivre cet atelier?



Comprendre le monde autour de nous à travers des données



Qu’est-ce que l’analyse de données?

L’analyse de données vise à explorer, décrire et interpréter des informations recueillies sur les comportements humains, les relations sociales et les phénomènes sociétaux. Ce processus peut inclure des données quantitatives (comme des données issus de sondages) et des données qualitatives (comme des entretiens ou des observations).

Principales étapes de l’analyse de données :

  1. Collecte des données
  2. Préparation des données
  3. Analyse statistique

Les logiciels d’analyse de données

Pourquoi R?



Open source

  • Gratuit
  • Collaboratif
  • Communauté active
    • Stackoverflow
    • r-bloggers
  • Adapté aux besoins des utilisateurs

Pourquoi R?



Packages

  • Offre une extension des fonctionnalités de base presque infinie
  • Peux répondre à des besoins très spécifiques
  • 21,744 packages sur CRAN (Comprehensive R Archive Network)
    • Principal dépôt où sont hébergés les packages R
  • Beaucoup plus sur GitHub
    • En plus de CRAN, de nombreux chercheurs publient leurs packages sur GitHub, une plateforme de partage de code

Pourquoi R?



Reproductibilité

  • Rendre les analyses reproductibles
  • Permet de partager les analyses
    • Les scripts R permettent de partager facilement le travail
  • Permet de retracer les erreurs
  • Partager le code
    • Encourage la transparence et la collaboration dans la recherche

Pourquoi R?



Très utilisé en science sociale

  • Beaucoup de ressources
  • Beaucoup de tutoriels orientés vers les sciences sociales
    • Datacamp
    • Coursera
    • Datanovia

Bref… important d’utiliser les mêmes outils que les chercheurs dans votre domaine

La CLESSN

Chaire de leadership en enseignement des sciences sociales numériques (CLESSN)

  • Titulaire: Yannick Dufresne
  • Objectif: Développer des compétences en science des données pour les étudiants en sciences sociales à travers des projets de recherche et des formations

Datagotchi

  • Application utilisant des variables lifestyles pour prédire le vote
  • Utiliser R et l’analyse de données à travers ce projet:
    • Prototypage en Shiny
    • Nettoyage des données
    • Analyse factorielle
    • Régressions et modèles
    • Visualisation

R : Au-delà de l’analyse de données

  • R ne se limite pas à l’analyse statistique, il peut aussi être utilisé pour développer des applications web interactives

{absolute top=0 left=0 width=“20%”}

Mais derrière tout ça… R

  • Voici l’envers du décor :

{absolute top=0 left=0 width=“20%”}

Analyse textuelle

  • Analyse de ton
    • Est-ce que le texte est positif ou négatif?

Mais aussi …

  • Catégorisation de texte
    • Est-ce que le texte parle de politique, de santé, de sport?
  • Analyse d’image
  • Transcription audio

Installer R et RStudio

  • C’est quoi la différence entre R et RStudio?
  • R est le moteur, RStudio est l’interface
  • RStudio facilite l’utilisation de R
  • RStudio est un IDE (Integrated Development Environment)



À télécharger :

Concept important : Le chemin d’arborescence

  • À tout moment vous devez savoir où vous êtes dans votre ordinateur pour pouvoir importer des données, exporter des graphiques ou mettre des fichiers en relation
  • Votre R est toujours ouvert dans un dossier, et donc vous devez savoir où il est pour pouvoir importer des données
  • La fonction getwd() dans R permet de savoir où vous êtes

Concept important : Planifier avant de coder

La plus grosse erreur est de commencer à coder sans savoir ce que vous voulez faire


  • Clarifer vos objectifs: Qu’est-ce que vous voulez faire?
    • Nettoyer des données?
    • Faire un graphique?

Les possibilités sont infinies, donc il est important de savoir où vous voulez aller

Concept important : Décomposer le problème

  • Une fois que vous savez ce que vous voulez faire, il est important de décomposer le problème en petites étapes
  • Un script R pour une seule tâche
    • Bien nommer vos scripts pour savoir ce qu’ils font
    • Exemples:
      • nettoyage_donnees.R
      • graphique.R
  • Chaque script doit être clair et facile à comprendre
  • Commenter votre code avec des #

Importer des données

  • Les données sont souvent dans des fichiers Excel, CSV, ou autres
    • On utilise des fonctions comme read.csv() pour lire les fichiers


df <- read.csv("chemin/vers/data.csv")


  • Dans cette ligne de code il y a plusieurs éléments importants:
    • Le nom de l’objet : df dans ce cas-ci, c’est un dataframe
    • L’opérateur d’assignation : <-
    • La fonction qui permet de lire le fichier : read.csv()
    • Le chemin vers le fichier : "chemin/vers/data.csv"

Chemins d’arborescence

Important de comprendre comment spécifier le chemin vers un fichier

Voici les deux façons de spécifier le chemin :

  • Absolu: /Users/username/Documents/projet/data/data.csv
    • Utile seulement sur votre ordinateur, un autre utilisateur ne pourra pas utiliser le même chemin
  • Relatif: data/data.csv
    • Utile pour partager le code avec d’autres utilisateurs


Différence entre mac et windows

  • Mac: /
  • Windows: \ (il faut s’assurer de changer les \ pour des /)

Importer des données

Autres fonctions pour importer des données dépendamment du format:

  • df <- readxl::read_excel("chemin/vers/data.xlsx")
  • df <- readRDS("chemin/vers/data.rds")

Codons!

Nous allons utiliser le dataframe swiss

# Charger les packages nécessaires
library(dplyr) # Manipulation de données
library(ggplot2) # Graphiques

# Importer les données swiss (jeu de données intégré)
df <- swiss

# Explorer les données
View(df)
summary(df)
names(df)
head(df)
ncol(df)
nrow(df)

Analyse rapide d’une variable

# Voir le nombre de valeurs pour chaque élément d'une variable
table(df$Fertility)

# Histogramme de la variable 'Fertility'
hist(df$Fertility)

# Obtenir la moyenne de la variable 'Fertility'
mean(df$Fertility)
  • $ permet d’accéder à une variable dans un dataframe.
  • On accède à la variable Fertility dans le dataframe df avec df$Fertility

Filter et sélectionner des variables

# Sélectionner des colonnes 
# (par exemple, Fertility, Education et Agriculture)

df_selected <- df %>%
  select(Fertility, Education, Agriculture)

# Filtrer les lignes pour inclure uniquement les cantons 
# avec une fertilité supérieure à la moyenne

mean_fertility <- mean(df_selected$Fertility, na.rm = TRUE)

df_filtered <- df_selected %>%
  filter(Fertility > mean_fertility)

Modifier des variables

# Créer une nouvelle variable binaire "high_agriculture" 
# indiquant si le pourcentage d'agriculture est supérieur à 50

df_mutated <- df_filtered %>%
  mutate(high_agriculture = ifelse(Agriculture > 50, 1, 0))

# Regrouper par "high_agriculture" et calculer la moyenne de l'éducation

df_summarized <- df_mutated %>%
  group_by(high_agriculture) %>%
  summarize(moyenne_education = mean(Education, na.rm = TRUE))

# Afficher le résultat final
print(df_summarized)

Représentation graphique des données

Principes généraux de la visualisation

  • Montrer les données
    • Évitez les distractions inutiles
  • Choisir des visualisations appropriées
    • Quelles informations seront utiles ?
  • Éviter les graphiques « spaghetti »
    • Évitez les lignes trop complexes qui se chevauchent et s’entremêlent
  • Commencer en noir et blanc
    • Utiliser les couleurs de manière efficace

Visualisation avec ggplot2

Initialiser un graphique

ggplot(df, aes(x = Agriculture, y = Fertility, color = Education)) 
  • df est le dataframe
  • aes() est la fonction qui permet de spécifier les variables à utiliser
  • x et y sont les variables à utiliser pour les axes x et y
  • color est la variable à utiliser pour la couleur

Visualisation avec ggplot2

Ajouter un geom_()

ggplot(df, aes(x = Agriculture, y = Fertility, color = Education)) +
  geom_point(alpha = 0.8) # Le alpha est la transparence
  • Il existe plusieurs geom_() pour différents types de graphiques
    • geom_point() est pour un nuage de points
    • geom_line() est pour un graphique en ligne
    • geom_bar() est pour un graphique en barres
    • geom_histogram() est pour un histogramme

Visualisation avec ggplot2

Ajouter une échelle de couleur

ggplot(df, aes(x = Agriculture, y = Fertility, color = Education)) +
  geom_point(alpha = 0.8) + # Le alpha est la transparence
  scale_color_gradient(low = "blue", high = "red", name = "Éducation") 
  • scale_color_gradient() permet de spécifier les couleurs pour la variable Education
  • low et high sont les couleurs pour les valeurs les plus basses et les plus hautes
  • name est le nom de la légende
  • Vous pouvez utiliser les hexcodes pour les couleurs

Visualisation avec ggplot2

Ajouter des titres et des labels

ggplot(df, aes(x = Agriculture, y = Fertility, color = Education)) +
  geom_point(alpha = 0.8) + # Le alpha est la transparence
  scale_color_gradient(low = "blue", high = "red", name = "Éducation") +
  labs(
    title = "Relation entre l'agriculture et la fertilité en Suisse",
    x = "Pourcentage d'agriculture",
    y = "Fertilité"
  ) 

Visualisation avec ggplot2

Ajouter un thème

ggplot(df, aes(x = Agriculture, y = Fertility, color = Education)) +
  geom_point(alpha = 0.8) + # Le alpha est la transparence
  scale_color_gradient(low = "blue", high = "red", name = "Éducation") +
  labs(
    title = "Relation entre l'agriculture et la fertilité en Suisse",
    x = "Pourcentage d'agriculture",
    y = "Fertilité"
  ) +
  theme_minimal()
  • theme_minimal() est un thème minimaliste
  • Il existe plusieurs thèmes prédéfinis dans ggplot2
  • Vous pouvez aussi créer votre propre thème

Visualisation avec ggplot2

Sauvegarder le graphique

ggplot(df, aes(x = Agriculture, y = Fertility, color = Education)) +
  geom_point(alpha = 0.8) + # Le alpha est la transparence
  scale_color_gradient(low = "blue", high = "red", name = "Éducation") +
  labs(
    title = "Relation entre l'agriculture et la fertilité en Suisse",
    x = "Pourcentage d'agriculture",
    y = "Fertilité"
  ) +
  theme_minimal()

ggsave("nom_du_graphique.png", width = 10, height = 6)
  • Vous pouvez spécifier le format du graphique (png, pdf, etc.) ainsi que le chemin pour sauvegarder le graphique

Visualisation avec ggplot2

Un histogramme de la variable Fertility

ggplot(df, aes(x = Fertility)) +
  geom_histogram(fill = "skyblue", color = "white", bins = 5) +
  labs(
    title = "Distribution de la fertilité en Suisse",
    x = "Fertilité",
    y = "Nombre de cantons"
  ) +
  theme_minimal()

Analyse statistique

# Calculer la corrélation entre Fertility et Agriculture

correlation <- cor(df$Fertility, df$Agriculture)
print(paste("Corrélation entre Fertility et Agriculture:", round(correlation, 2)))

# Effectuer une régression linéaire avec Fertility comme variable dépendante

modele <- lm(Fertility ~ Agriculture, data = df)

# Afficher le résumé du modèle de régression

summary(modele)

Bonnes pratiques

  • Nommer vos objets de façon explicite
  • Commenter votre code
  • Organiser votre code

Organiser votre environnement de travail

/MonProjet
├── data/                
   ├── raw_data.csv      
   └── cleaned_data.csv  
├── scripts/             
   ├── analyse.R         
   └── visualization.R   
├── results/             
   ├── summary_statistics.csv  
   └── plots/                  
       └── data_distribution.png  
├── docs/                
   ├── methodology.md    
   ├── references.bib    
   └── project_presentation.qmd  
└── README.md            

Git

  • Créé par Linus Torvalds en 2005
  • Gestion de version
  • Permet de suivre l’évolution d’un projet
  • Utile pour tout ce qui est texte, incluant les articles et les présentations
  • Enregistre tous les changements faits depuis la création du projet (.git)
  • Reproductibilité et transparence

Git

  • Télécharger et installer Git depuis git-scm.com

  • Configurer git avant de commencer à l’utiliser

    • Dans le terminal:
git config --global user.name "username"
git config --global user.email votre@email.com
git config --global credential.helper store

Git

GitHub

GitHub

  • GitHub = Git + Internet

  • Plateforme de développement collaboratif

  • Héberge des projets Git

  • Acheté par Microsoft pour 7.5 milliards de dollars

  • Lieu d’entreposage de plusieurs projets open source

Comment l’utiliser?

  1. Cloner un projet existant sur votre ordinateur.
  • Ce projet est maintenant un dossier sur votre ordinateur. Vous pouvez le modifier, le supprimer, le déplacer, etc.
git clone https://lien/vers/repo.git
  1. Modifier le projet, ajouter des fichiers, etc.
git pull 
git add votre_fichier_1 votre_fichier_2
git commit -m "Message de commit"
git push

En apprendre plus

Ressources

Quoi faire quand ça ne fonctionne pas?

  • ChatGPT
    • Être clair et précis dans vos requêtes
    • Expliquer la structure de vos données
    • Copier-coller le message d’erreur
    • Copier-coller la documentation d’un package
  • Réessayer ChatGPT
    • C’est rare que ChatGPT ne trouve pas la réponse
  • La documentation de R (ex: ?mean() dans votre console)
  • Google
    • Stackoverflow
    • Stackexchange

Conclusion