FLASH INFORMATIQUE FI



R : un logiciel libre pour l’analyse de vos données


Outil de choix pour l’analyse de données dans différents domaines, le logiciel R est peu connu, alors qu’il est l’un des grands succès du logiciel libre.



Kickstart is an automated and unattended methR is the best choice of software for data analysis in different fields. It is, however, not very well known, even though it is one of the biggest successes in the free software world.


Frédéric Schütz


Fiche Descriptive



« I believe R currently represents the best medium for quality software in support of data analysis. » John M. Chambers, 2008

Introduction

Le logiciel de statistiques R (également appelé GNU S) est de plus en plus utilisé pour effectuer des analyses statistiques dans bon nombre de domaines. Dans la communauté des sciences de la vie, en particulier, il s’est imposé comme l’outil de choix pour un grand nombre de chercheurs, et a également beaucoup d’adeptes dans le monde de la finance. Il reste cependant relativement peu connu à l’extérieur de la communauté de ses utilisateurs, malgré qu’il ait eu les honneurs d’un article le présentant dans le New York Times  (journal qui l’utilise également pour préparer des infographies dans ses propres pages). R est l’un des grands succès du logiciel libre ; le fait que le logiciel soit libre a permis qu’une importante communauté de statisticiens répartis dans le monde entier participent au développement, une situation qui n’aurait pas été possible avec les alternatives non libres.
Contrairement à d’autres logiciels de statistiques qui se basent sur une interface graphique, R est un langage de programmation. Développé à partir de 1993 par Ross Ihaka et Robert Gentleman, il implémente le langage S originellement conçu pour l’analyse de données par John Chambers (devenu entre-temps l’un des développeurs de R) [1]. L’intérêt majeur de R est l’importante collection de packages développés autour du logiciel de base, et qui garantit à la majorité des utilisateurs, quel que soit leur domaine, qu’ils trouveront l’infrastructure nécessaire pour gérer leurs données, les analyser et les représenter graphiquement. À ce jour, plus de 3700 packages sont disponibles dans CRAN (Comprehensive R Archive Network) , le réseau de serveurs miroirs qui soutient la diffusion de R. De plus, plusieurs projets annexes se sont formés, avec en tête Bioconductor et ses 550 packages dédiés à l’analyse de données provenant des sciences de la vie. Dans ce domaine en particulier, les auteurs de nouvelles méthodes statistiques mettent la plupart du temps à disposition un package R, augmentant ainsi l’attrait du logiciel.

R est-il le bon outil pour moi  ?

Vous avez des données à traiter ; peut-être devez-vous réaliser des résumés sous forme de graphiques, ou extraire des informations particulières, et vous vous demandez si R est l’outil qu’il vous faut. Avant toute chose, il n’y a aucun doute que R n’est pas forcément facile d’accès. Comme pour tout langage de programmation, il est nécessaire d’apprendre les rudiments du langage avant de pouvoir l’utiliser, et il est difficile d’être immédiatement productif. Des interfaces graphiques, telles que R Commander , existent également, et permettent d’utiliser des menus pour lancer certaines commandes et en voir le résultat immédiatement. Elles nécessitent quand même de comprendre les bases du logiciel (les résultats affichés seront ceux de la ligne de commande), et ne permettent généralement d’exécuter que des commandes basiques.
Plusieurs cours sont disponibles sur la place lausannoise, permettant une bonne prise en main du logiciel. Cependant, cet investissement ne sera utile que si vous l’utilisez régulièrement par la suite. Si vous n’avez besoin que de faire un graphique ici et là, d’autres outils sont sûrement plus adaptés - sans même devoir penser à Excel, décrié (à raison) par la plupart des experts dans le domaine. Pour savoir si R contient des outils permettant d’analyser le type de données qui vous intéresse, vous pouvez consulter les CRAN Task Views disponibles sur le site Web du projet , et qui détaillent les différents packages classés par catégorie (finance, optimisation, génétique, etc.).
Pour les programmeurs expérimentés, il faut un peu de temps pour s’habituer aux idiosyncrasies du langage, en particulier si on recherche une vitesse d’exécution élevée. Ainsi, l’utilisation de boucles (l’instruction for() classique disponible dans la majorité des langages de programmation) est à éviter le plus possible, car elle est peu efficace. Les boucles sont avantageusement remplacées par des fonctions quelquefois plus compliquées d’emploi, mais qui permettent d’agir sur l’entier d’un vecteur de données plutôt que de le traiter élément par élément, un peu à la façon des fonctions vectorisées de Matlab ou d’Octave.
De manière générale, R n’est pas le logiciel le plus réputé pour ses performances, que ce soit en temps d’exécution ou pour la gestion de la mémoire  [2].

Installation

R est distribué principalement via le site d’archives du projet, CRAN. Des versions sont disponibles pour Linux, Mac et Windows. Des paquets prêts à être installés sont disponibles pour différentes distributions Linux, et des installeurs sont fournis pour Mac et Windows. L’installation de base ne pose généralement aucun problème particulier, et aucune dépendance particulière (autres que celles gérées par les gestionnaires de paquets sous Linux) n’est nécessaire.
Sous Linux, une fois installé, R se présente sous la forme d’une interface en ligne de commande acceptant les instructions que vous lui donnerez. Sous Windows et Mac, un environnement de développement basique est fourni (fig. 1).


fig. 1 - l’environnement de travail par défaut de R dans Windows
Il est néanmoins fortement recommandé d’utiliser l’un des nombreux environnements disponibles qui rendront votre travail bien plus facile et efficace. On peut citer le mode ESS (Emacs speaks statistics) pour Emacs, qui permet de lancer R sans sortir de l’éditeur, ou Rstudio  et StatET (basé sur Eclipse) sous Windows. Sur cette plate-forme, il existe aussi des éditeurs qui offrent le coloriage syntaxique du code R, tel que Tinn-R ou Notepad++.

Utilisation

Fonctionnalités de base

L’installation de base de R donne accès à toutes les fonctionnalités standard pour faire de la statistique. Il connaît ainsi toutes les distributions classiques, de même que les tests d’hypothèses standard et différents modèles tels que les modèles linéaires.
Les graphiques sont l’un des points forts de R, qui offre différents outils pour les réaliser  [3]. Le site Web de la R graph gallery donne un grand nombre d’exemples de graphiques réalisés avec R, et inclut le code source nécessaire pour les reproduire.
Voici un exemple tout simple d’analyse statistique avec R (le caractère > en début de ligne indique que le reste de la ligne est une commande tapée par l’utilisateur ; les autres lignes correspondent aux résultats retournés par R). Le signe # indique le début d’un commentaire (tout le reste de la ligne est ignoré).
Il est possible de lire des données extérieures de plusieurs façons, entre autres en utilisant la commande read.table() qui peut lire soit des fichiers textes, soit accéder directement à une URL, par exemple :


Nous avons ici les données de taille et poids de 19 adolescents. La variable data est de type dataframe, c’est-à-dire sous forme de tableau où chaque colonne représente une variable différente (de type arbitraire) et chaque ligne une observation. La commande summary() nous donne un résumé de chacune des variables :


Un diagramme de dispersion nous permet de représenter graphiquement la taille en fonction du poids. En plus des données que l’on veut représenter (les composants Age et Height), la fonction nous permet de spécifier le type et la couleur des points (choisie en fonction du sexe) et les légendes des axes :

> plot( data$Age, data$Height, col=data$Gender,
pch=21, bg=data$Gender, xlab="Age", ylab="Taille", main="Diagramme de dispersion")

La commande lm() nous permet d’obtenir la régression linéaire de la taille en fonction de l’âge. La formulation Height Age (taille en fonction de l’âge) permet de spécifier quelle variable correspond à l’observation et quelle variable est explicative. Le résultat peut être stocké dans une variable, et réutilisé plus loin (par exemple, on pourrait obtenir des informations détaillées sur le modèle à l’aide de la commande summary()) :

> model <- lm( Height ~ Age, data=data)
> model
         Call:
lm(formula = Height ~ Age, data = data)
Coefficients:
         (Intercept)     Age
              25.224   2.787

Dans la dernière ligne, nous obtenons l’ordonnée à l’origine et la pente de la droite de régression. Nous pouvons également calculer la corrélation entre ces deux variables, qui vaut 0.81 :

> cor( data$Height, data$Age)
[1] 0.8114343

Le langage R utilise un modèle de programmation-objet relativement léger et transparent pour l’utilisateur, mais qui permet de simplifier bon nombre d’opérations. Ainsi, la variable model que nous avons définie est un objet, de type lm (modèle linéaire). Pour ajouter la droite de régression sur le graphique que nous avons dessiné, la commande abline() peut directement prendre comme paramètre le modèle créé précédemment, et, reconnaissant le type d’objet, en extraire les informations dont il a besoin :

> abline(model)

Le résultat est donné sur la figure 2.


fig. 2 - diagramme de dispersion de nos données, avec la droite de régression correspondante

Fonctionnalités plus avancées

Si vous avez besoin d’aller plus loin, soit que vous ayez des analyses moins standard à effectuer ou que vous travailliez avec des données qui ont besoin d’un traitement particulier, vous aurez alors besoin de l’un des nombreux packages supplémentaires disponibles pour R. Certains sont disponibles avec l’installation de base, et doivent simplement être chargés en mémoire à l’aide de la commande require(). Les autres peuvent généralement être téléchargés et installés directement depuis le logiciel, soit via la ligne de commande ou l’interface graphique. Sous Windows, l’option Install package(s) du menu Packages permet de choisir les packages d’intérêt et de les installer facilement. Certaines distributions Linux (en particulier Debian et Ubuntu) proposent également ces outils parmi les packages du système, assurant ainsi leurs mises à jour automatiques et la gestion des dépendances avec la version du logiciel de base.

Aide et support

R est livré avec une fonctionnalité d’aide intégrée, contenant une page par commande R, que l’on peut appeler en tapant simplement  ?commande ou help(commande). Très complètes, ces pages comprennent généralement un exemple d’utilisation, que vous pouvez directement lancer pour voir comment la commande fonctionne (ainsi, la commande example(lm), donnera un exemple complet d’utilisation d’un modèle linéaire dans R, y compris les graphiques pertinents). Elles sont néanmoins relativement techniques, et sont probablement plus utiles comme aide-mémoire pour quelqu’un qui connaît déjà la fonction que pour un débutant. De plus, le problème qui se pose souvent (y compris pour les utilisateurs expérimentés) est de savoir quelle est la commande à utiliser, voire même de connaître l’existence d’une commande qui pourrait être utile dans une analyse donnée. Il est également possible de chercher un mot-clé dans toutes les pages d’aide (avec la commande help.search("motcle")). Un certain nombre de manuels sont disponibles sur le site du projet ; s’ils fournissent de bonnes références, ils ne sont pas non plus forcément idéaux pour des débutants. Le tutoriel proposé est très complet (peut-être même un peu trop, pour un débutant). Un grand nombre d’autres tutoriels sont disponibles sur divers sites Web, de même que de nombreux livres. Certains d’entre eux sont dédiés à l’utilisation de R dans un domaine particulier (biostatistique, finance, etc.) et peuvent être précieux pour le débutant. On peut recommander en particulier les livres de P. Dalgaard (en anglais) et de P. Lafaye de Micheaux (en français). Pour la recherche d’informations en ligne, le nom très court du logiciel est malheureusement un handicap, et peut provoquer quelques difficultés avec les moteurs de recherche. Si ces derniers se sont améliorés et reconnaissent souvent R comme le nom d’un logiciel, il est utile de connaître l’existence de Rseek, un moteur dédié à R. La mailing-liste principale concernant R, R-help, est fréquentée par les développeurs principaux et beaucoup d’autres personnes compétentes, et les archives sont riches en discussions intéressantes. Il est utile de savoir que certains développeurs ne prennent pas de gants quand ils répondent aux questions, pouvant donner l’impression que le climat de la liste est hostile, mais le problème est mineur.

Conclusion

R est un projet extrêmement dynamique, avec un développement rapide et plusieurs nouvelles versions par année. Le revers de la médaille est qu’il est souvent nécessaire de le mettre à jour, les packages les plus récents nécessitant généralement la dernière version du logiciel, qui n’est pas toujours entièrement compatible avec les versions précédentes. Une telle mise à jour nécessite la réinstallation complète du logiciel. C’est un logiciel mature et la panoplie étendue d’outils qu’il offre fait que tout utilisateur qui doit effectuer des analyses statistiques trouvera probablement chaussure à son pied. La grande communauté d’utilisateurs et le nombre élevé de documents disponibles font qu’il n’est pas compliqué d’apprendre à l’utiliser, à condition d’être prêt à s’investir un peu sur le long terme.

Références

Site Web

Livres

  • DALGAARD, Peter. Introductory statistics with R. Springer, 2008.
  • LAFAYE DE MICHEAUX, Pierre, DROUILHET, Rémy & LIQUET, Benoit. Le logiciel R : Maîtriser le langage - Effectuer des analyses statistiques. Springer, 2011.


Article du FI-EPFL 2012 sous licence CC BY-SA 3.0 / F. Schütz

[1] Le nom de R est un jeu de mot, à la fois sur le prénom des auteurs et sur le nom du langage de programmation S

[2] L’une des catégories citées dans la note précédente est justement High Performance Computing, et décrit tous les packages R qui peuvent améliorer ses performances.

[3] Voir le manuel R Grahical Manual



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.