Archives mensuelles : novembre 2016

Séminaire 1 du 18 octobre 2016 – Mise en œuvre de R, intérêts et difficultés rencontrés en situation d’expérimentation

 

Texte proposé par Pierre-Guillaume Prigent (CRBC – UBO) et faisant suite à son intervention lors de la première séance de séminaire du nouveau cycle de rencontres 2016-2017 autour du traitement et de l’analyse de données quantitatives en SHS le 18 octobre 2016.

 

Mise en œuvre de R, intérêts et difficultés rencontrés en situation d’expérimentation

L’objectif de cette présentation était de montrer comment R a été utilisé dans une situation précise : le traitement et l’analyse des données de l’enquête MVESSE-UBO, sur les modes de vie, la santé et la sécurité des étudiant.e.s de l’UBO.

R est un logiciel libre, gratuit et multiplateforme de traitement des données et d’analyse statistiques. Libre, car on a l’autorisation de l’utiliser, de l’étudier, de le modifier et de le dupliquer à sa guise. Gratuit, car on peut le télécharger gratuitement sur http://cran.r-project.org/ . Multiplateforme, car il est disponible sous Windows, Linux, macOS, etc.

A son démarrage, R peut rebuter, rappelant la vieille interface de MS-DOS. Il est cependant possible de télécharger RStudio, un environnement de développement, qui rend l’utilisation de R plus aisée, et qui étend aussi ses fonctionnalités.

R, c’est donc un logiciel dont les fonctionnalités de base sont riches et puissantes, auquel on peut rajouter des extensions, et un logiciel fréquemment mis à jour, avec une communauté d’utilisateur.ice.s qui ne cesse de grandir. Mais R, c’est aussi un logiciel dont la documentation est majoritairement en anglais et la communauté surtout anglophone, et un logiciel qui fait peur de prime abord, notamment parce qu’il n’a pas d’interface graphique.

Cette présentation visait à partager une expérience personnelle d’appropriation récente qui se poursuit. Il s’agissait de montrer qu’on peut apprendre R en lisant de la documentation, des tutoriels, en posant des questions sur des forums. Il faut cependant au moins plusieurs heures pour l’apprivoiser, et encore plus pour l’enseigner…

R peut tout d’abord être pensé comme une calculatrice. Il permet de faire des opérations de base. Par exemple, si l’on tape “2 + 2” dans le terminal, R nous renverra “4”.

R peut également stocker des données dans des objets. On peut par exemple donner la valeur “2” à l’objet “x”, en tapant “x <- 2” dans le terminal. On peut alors réaliser des opérations sur ces objets, par exemple, “x + 4” nous renverra “6”.

Ces données peuvent aussi être des chaînes de caractère, par exemple “Du texte”. Donc on peut stocker la chaîne “Du texte” dans l’objet “x” en tapant “x <- “Du texte”” (l’usage des guillemets indique à R que l’objet est bien une chaîne de caractère). Attention, restocker de nouvelles données dans un même objet efface les anciennes (ici, il vaut mieux stocker la chaîne dans “y”, et non “x”…). R est cependant bien évidemment capable de gérer un très grand nombre d’objets.

Ces objets peuvent être des vecteurs : “ages <- c(25, 67, 82, 34, 12, 46, 18, 34, 16)”. Ici, c veut dire combiner et est une fonction. Les valeurs 25, 67… sont les arguments de la fonction c. Un vecteur est donc une combinaison de valeurs.

Pour obtenir la moyenne de l’objet “ages”, on peut lui appliquer la fonction “mean”, il suffit alors de le mettre en argument, entre parenthèses, comme ceci : “mean(ages)”. R nous renvoie alors la moyenne du vecteur : “37.11111”.

R est également capable de réaliser des graphiques, simples ou complexes, que l’on peut configurer. Par exemple, il peut tracer un histogramme très simple avec “hist(ages)”. Mais si l’on tape “hist(ages, col = “red”)”, le contenu des barres devient rouge. Un package, ggplot2, permet de réaliser des représentations graphiques esthétiques et optimisées, comme on peut le voir sur le R Graph Catalog. Un package contient de nouvelles fonctions pour R. Il en existe une grande variété. On installe un package avec la commande “install.packages(“nomdupackage”)”. Pour en faire usage, il faut le charger en mémoire avec “library(nomdupackage)” (cette dernière commande doit être lancée, dès que l’on utilise des fonctions du package, à chaque redémarrage de R).

R permet de mémoriser toutes les commandes tapées dans des scripts. A l’origine, les scripts, qui sont donc des fichiers textes qui contiennent du code R, sont censés permettre l’automatisation de tâches complexes, mais pour les utilisateur.ice.s non-spécialistes de R, ils peuvent servir de mémo. R sauvegarde également les commandes tapées dans son historique. On y navigue en utilisant les flèches du haut et du bas.

R est bien entendu capable d’importer des données habituellement représentées sous forme de tableaux. R les appelle “data frames”. Le logiciel de base gère le CSV, mais il existe de nombreux packages permettant l’import de données au format Excel, SAS, SPSS, par exemple. RStudio permet de manière assez minimaliste de les visualiser comme dans un tableur classique, mais ne permet pas directement de les modifier. Étant donné la logique d’automatisation permise par R, il est préférable de se passer de modifications manuelles de données. Dans l’idéal, il veut mieux conserver les données originales et produire un script permettant leur modification que de conserver uniquement le résultat. R permet de stocker ses données dans des fichiers .RData, qui peuvent comprendre de nombreux objets de différents types : un moyen idéal pour travailler sur ses données au fil de leur évolution. On peut également demander à R de stocker certaines de ses données dans un fichier .RData, ce qui permet par exemple de faire des archives.

De nombreuses commandes permettent de prendre connaissance du contenu et de l’organisation d’un data frame. On peut facilement connaître ses dimensions (le nombre de colonnes et de lignes) avec la fonction “dim”, le nom de ses variables avec “names”, une liste de ses variables avec des précisions les concernant avec “str”, et un résumé de ses données avec “summary”.

Lors de la présentation ont été évoquées les méthodes de base pour travailler sur les variables, que ce soit leur manipulation ou leur analyse. R est possible de réaliser des tris à plats, des tris croisés, des tableaux de fréquence, ainsi que de nombreux tests statistiques. On peut également utiliser les indexations pour réaliser des recodages.

Dans le cadre de l’enquête MVESSE-UBO, R aura également permis :

  • de convertir les dates de naissance contenues dans un data frame en âge au moment de l’enquête
  • de convertir des centaines de modalités différentes d’une variable définissant le niveau et la filière d’étude en une vingtaine de niveaux avec les expressions régulières (sorte de super “rechercher-remplacer”, que R sait très bien gérer)
  • classer des personnes selon leur avancement dans un questionnaire en ligne à partir de la base de connexion
  • extraire les mails d’un long fichier texte très désorganisé et les classer

Et dans d’autres cadres :

  • sauvegarder le contenu de groupes de discussion sur Facebook et développer des outils pour en faciliter la lecture

Des packages plus ou moins utiles ont également été présentés.

3 packages (ou suite de packages) pour R sortent du lot :

  • tidyverse, une suite de packages pour faciliter la manipulation et la visualisation de données ; on pourrait presque dire qu’elle offre à R une nouvelle syntaxe
  • questionr, pour faciliter le traitement des enquêtes
  • rmarkdown, pour générer des documents contenant du texte, des instructions R avec leur résultat, dans une syntaxe simple (Markdown) auquel on peut rajouter des bouts de LaTeX si besoin.

Si vous êtes perdu.e.s avec R, il y a de grandes chances qu’une solution à votre problème soit trouvable sur Internet. Il est également possible de consulter l’aide intégrée (en anglais). Tapez “help.start()” pour consulter sa page d’accueil, et “help(fonction)” pour consulter la page d’aide de la fonction qui vous intéresse.

Si vous souhaitez contacter l’auteur de cette présentation (pour par exemple lui demander les slides, plus complètes que cet article, ou bien prendre connaissance de ses scripts, en partager avec lui, échanger des connaissances sur R, etc.), son mail est : ppg@protonmail.com.

*

*       *

Et voici quelques ressources pour se familiariser avec R et trouver de l’aide.

Pierre-Guillaume PRIGENT

 

Affiche de la séance de séminaire

cycle-quanti-01-affiche-16-10-18