Programmation R

R est à la fois un logiciel de statistique et un langage de programmation.

R est un logiciel de traitement statistique des données. Il fonctionne sous la forme d'un interpréteur de commandes. Il dispose d'une bibliothèque très large de fonctions statistiques, d'autant plus large qu'il est possible d'en intégrer de nouvelles par le système des "packages", des modules externes compilés (sous forme de DLL sous Windows) que l'on peut télécharger gratuitement sur internet. R propose également une palette étendue de fonctionnalités graphiques. Il est possible d'utiliser R en mode intercatif sans jamais avoir à programmer.

R est un langage de programmation (de script) interprété dérivé de S (disponible dans le logiciel S-PLUS). A ce titre, il en intègre toutes les caractéristiques : données simples et structurées, opération d'entrée-sortie, branchements conditionnels, boucles indicées et conditionnelles, récursivité, etc. Il est même possible de faire de la programmation objet en exploitant les mécanismes des classes. Au final, les étudiants auront à réaliser un package au standard du CRAN implémentant une méthode de machine learning, si possible avec une stratégie de parallélisation des calculs. Lequel package doit téléchargeable et installable directement à partir de GitHub.

Cet enseignement est avant tout un cours de programmation. Il ne s'agit pas de montrer comment faire tel ou tel traitement statistique avec R. Les innombrables didacticiels en ligne, dont certains sont référencés dans cette page, s'en chargent très bien. Notre objectif est d'apprendre (ou ré-apprendre) à programmer en tirant profit des particularités de R : c'est un langage objet, la structure de base est le vecteur, une bibliothèque très riche de fonctions permettant de manipuler ces structures sont disponibles.

Il sera néanmoins en relation directe avec le traitement exploratoire des données dans la mesure où la plupart des illustrations consisteront à programmer des techniques statistiques, d'analyse de données, de machine learning, de data mining et de data science. Je profite de l’expérience ainsi acquise pour mettre R en contrepoint du tandem "Excel (tableur) + Tanagra" d'une part, de Python et ses packages spécialisés de machine learning d'autre part.

Ce cours est dispensé en M2 Statistique et Informatique (SISE).

Ressources en ligne

Matériel pédagogogique pour le cours - Slides, supports de cours, ouvrages, outils...

Supports

Outils

Le site du projet R - Le logiciel (setup) et de la documentation sont disponibles en ligne. Le logiciel peut fonctionner sous Windows, MacOS X et Linux. R est un logiciel libre, complètement gratuit.

A voir également la FAQ, les manuels en ligne, le Wiki...

RStudio - Un IDE (environnement de développement intégré) pour R. Relativement léger et très user-friendly. A conseiller lorsqu'il faudra passer à des développements plus conséquents. En prime, un tutoriel qui montre comment déboguer du code sous R-Studio, indispensable dès que l'on doit tracer un programme un tant soit peu complexe.

Slides pour le cours de Programmation R

Introduction à la programmation R. Les bases du langage R. Types de données, structures algorithmiques (branchements conditionnels, boucles)

Programmation modulaire sous R. Instructions, blocs d'instructions, procédures et fonctions, découpage en modules des programmes.

Manipulation des vecteurs sous R. Création des vecteurs, calculs récapitulatifs, extractions, le type factor.

Tableaux et matrices avec R. Création des matrices à partir d'un vecteur, extractions, modification dynamique des dimensions, extractions, calculs avec la fonction apply().

Data frame avec R. Création d'un data frame, importation d'un fichier de données (txt, xls, xlsx), utilisation des données intégrées dans les packages. Manipulation des data frame, filtrage, restrictions, projections. Opérations sur les data frame. Exploitation des fonctions sapply() et lapply().

Programmation à partir des objets statistiques sous R. Récupération des propriétés des objets issus des calculs statistiques. Utilisation de la commande attributes(). Programmation de nouvelles méthodes sous forme de fonctions.

Mécanisme des classes sous R. Modèles S3, S4, RC. Manipulation des objets, accès aux champs, fonctions génériques, héritage.

Mécanisme des classes sous R. Modèle R6. Programmation orientée objet sous R avec un modèle comparable à ce qui se fait pour les autres langages (portée des champs, héritage, propriétés [accesseurs, mutateurs], constructeur, destructeur).

Programmation MapReduce sous R. Hadoop, système de fichiers HDFS, modèle de programmation MapReduce. Programmation sous R via le package RHadoop.

Supports et ouvrages à lire absolument pour le cours de Programmation R

Introduction à la programmation en R, de Vincent Goulet. Il s'agit ni plus ni moins que d'un ouvrage sur la programmation sous R, avec une prédisposition aux applications statistiques. Un grand nombre d'exemples et d'exercices corrigés sont disponibles. Un ouvrage de qualité qui fait référence. Mon cours est bâti à partir de cet ouvrage.

Débogage sous RStudio. Deux tutoriels montrent comment déboguer un programme sous l'EDI (environnement de développement intégré) RStudio. Edition des points d'arrêt, exécution pas à pas du programme, surveillance de l'environnement local et global (valeur des variables), ... Ces fonctionnalités sont indispensables dès lors que l'on souhaite développer des programmes R complexes et performants.

Notes de Cours sur le Logiciel R, de Anne Philippe (Université de Nantes). Très complet, très détaillé. Fait un large tour d'horizon de ce qu'on peut réaliser avec R...

Programmation R - Machine learning et Big Data

Programmer efficacement sous R. Optimisation du code, utilisation du profiler, parallélisation des calculs, lisibilité du code. Programmation du leave-one-out, procédure de rééechantillonnage pour l'évaluation des modèles prédictifs (machine learning).

Programmation R sous Hadoop. Ce tutoriel décrit tout le processus permettant de programmer dans le langage R dans le framework Hadoop. Voici quelques étapes clés : installation d'un cluster mono-noeud via la distribution cloudera, installation d'un environnement de développement client-serveur avec RStudio, programmation en mapreduce du fameux algorithme "wordcount" à partir d'un ensemble de fichiers textes stockés sur hdfs. Utilisation des packages de la collection RHadoop.

MapReduce avec R. Programmation MapReduce avec R. Utilisation du package "rmr2" de la collection RHadoop. Programmation MapReduce de techniques simples (comptage de valeurs, somme des carrés intra-classes de l'ANOVA) et un peu plus sophistiquées (régression linéaire multiple).

Programmation R sous Spark avec SparkR. Installation du framework Spark sous Windows. Présentation de la librairie Machine Learning MLlib. Utilisation du package SparkR. Mis en place d'une démarche d'analyse prédictive. Régression logistique.

Programmation parallèle sous R. Découpage du calcul de la matrice de variance covariance intra-classes pour l'analyse discriminante. Distribution des calculs sur les coeurs d'une machine à processeur multi-coeurs. Utilisation des packages "parallel" et "doParallel" de R.

Traitement des très grands fichiers avec R - Le package "filehash". Copie des objets - y compris les données - sur disque à l'aide des fonctions du package "filehash". L'objectif est d'alléger l'occupation mémoire et de pouvoir traiter de très grosses volumétries sous R. Les procédures statistiques usuelles (rpart, lda) savent tirer parti du dispositif, et ainsi augmenter considérablement leur capacité de calcul.

Quelques tutoriels - Machine learning, Data Mining, Statistiques et Analyse de données avec R

Installation et gestion des packages.

Manipulations des données avec R. Importation des fichiers xls et xlsx (Excel), filtre, filtre élaboré, statistiques descriptives ciblées sur des sous-populations (~ tableaux croisés dynamiques), tris à 1 ou plusieurs critères, quelques graphiques.

Induction des arbres de décision avec R. Arbres de décision ; packages : rpart, tree, party ; prédiction ; matrice de confusion ; lecture des fichiers xls et xlsx (Excel).

Régression logistique binaire avec R. Régression logistique, prédiction, matrice de confusion, sélection de variables, lecture des fichiers xls et xlsx (Excel).

Régression linéaire multiple. Diagnostic de la régression, détection des points atypiques, diagnostic de la colinéarité et sélection de variables.

Guide to credit scoring in R. Mise en oeuvre de quelques techniques de scoring sur la base "german credit".

Analyse en Composantes Principales (ACP). Cercle des corrélations, projection des observations dans les plans factoriels, caractérisation à l'aide des variables illustratives quantitatives et qualitatives, projection des individus illustratifs (supplémentaires).

Analyse en Composantes Principales (ACP) avec FactoMinerR et dynGraph. Statistiques descriptives, représentations graphiques, cercle des corrélations, projection des observations dans les plans factoriels, caractérisation à l'aide des variables illustratives quantitatives et qualitatives, moyennes conditionnelles et valeurs test, exploration graphique interactive avec dynGraph.

Analyse factorielle des correspondances avec R (AFC). Profils, valeurs propres, scree plot, cosinus 2, contributions, représentation simultanée.

Analyse factorielle des correspondances multiples avec R (AFCM). Statistiques descriptives, valeurs propres, scree plot, cosinus 2, contributions, projection des observations, projection des modalités, représentation barycentrique.

Analyse factorielle des données mixtes avec R (AFDM). Analyse factorielle sur variables actives quantitatives ET qualitatives. Utilisation de différents packages (ade4, FactoMineR, PCAMixData).

Classification automatique sous R (CAH et K-MEANS). Classification ascendante hiérarchique, méthode des centres mobiles. Typologie. Clustering. Description des classes. Aide à la détection du nombre adéquat de groupes. Complémentarité ACP et classification. Package fpc.

Ressources bibliographiques faisant autorité

R (Programming Language) Ce qu'on dit de R sur wikipédia.

The R journal (Le journal de R). Une mine d’or sur les nouveautés du logiciel R : packages, développements, bug fixes, fonctionnalités à venir, cas d’utilisation, etc. Les articles sont centrés sur R bien évidemment, mais ils donnent un excellent aperçu des préoccupations contemporaines des statisticiens et des informaticiens dans le domaine du traitement de données (analyse de données, data mining, big data, appelez ça comme vous voulez). J’ai découvert par exemple qu’il était facile de créer et d’exporter des graphiques dynamiques dans des pages web (en utilisant une API Google) à partir de données en provenance de R (via un package spécifique) (cf. Using the Google Visualisation API with R").

Autres ressources bibliographiques accessibles sur le net (tutoriels, aide-mémoire, supports de cours, etc.)

Introduction à R

R pour les débutants, de Emmanuel Paradis. Assez courte, en français, ce document présente rapidement le logiciel R en mettant l'accent sur les opérations sur les vecteurs et les objets, et les fonctionnalités graphiques, qui sont très nombreuses il faut le reconnaître. La programmation est survolée très rapidement.

An introduction to R, de Venables, Smith et l'équipe de développement de R. En anglais, ce document décrit, de manière assez succincte, les principales fonctionnalités du logiciel, la manipulation des données et des objets, l'accès aux fichiers, les procédures graphiques. Un chapitre est consacré à la programmation, sous l'angle de l'écriture de ses propres fonctions en R. Lecture facile.

The R Datasets Package. Description des jeux de données qui accompagnent le logiciel R. Ils sont utilisés pour illustrer les techniques. Pour nous, ils nous permettent de reproduire les exemples sans avoir à chercher les données sur le web. Ils sont accessibles via la commande data(...). La plupart sont parfaitement documentés.

Aide mémoire R

Quick-R, de Robert I. Kabacoff. En anglais, un tour d'horizon rapide mais très complet des principales procédures de R : manipulation des données, les principales techniques statistiques, les commandes graphiques... Très sobre.

Aide mémoire R - Le langage, d'Aymeric Duclert. L'objectif de cet aide-mémoire est de donner un rapide coup d'oeil de quelques fonctionnalités disponibles sous R, illustré de quelques exemples d'usage simple. Le but est surtout de faire gagner du temps dans la réalisation de scripts R.

R reference card, de Tom Short. En anglais, sur 4 pages, la listes des principales fonctions de R regroupées par thèmes : accès aux données, création de vecteurs, transformation de variables, fonctions mathématiques, manipulation des chaînes de caractères, création de graphiques, modélisation, etc. S'il y a un document qu'il faut avoir constamment sous la main, tout du moins dans la phase d'apprentissage du langage, c'est bien celui-ci.

R: A Language and Environment for Statistical Computing - Reference index, de The R Core Development team. En anglais, énorme, il s'agit du fichier d'aide sous forme PDF imprimable (plus de 2500 pages !). Il référence toutes les fonctions dans les packages les plus connus (27 librairies recensées). La meilleure utilisation est de procéder par " rechercher " pour obtenir la description de la méthode qui nous intéresse. Attention, certaines techniques sont disponibles sous des appellations différentes dans plusieurs packages. Il se peut que le paramétrage ne soit pas exactement le même.

Le document fait plus de 12Mo, mieux vaut le charger en local pour le consulter plutôt que de l'ouvrir directement en ligne.

Programmation sous R

An introduction to R. Très intéressant surtout pour les structures de données, parfaitement décomposés : vecteurs, type factor, tableau, matrice, liste, data frame...

Programming in R, de Girke. En anglais, cette page web recense la grande majorité des éléments importants à savoir pour programmer correctement avec R. La particularité du site est qu'un nombre important d'exemples corrigés permet de s'exercer, et accessoirement de mesurer à quel point la programmation sous R peut être performante. Il s'agit essentiellement d'exemples en bioinformatique mais la transposition dans d'autres domaines est facile.

Programming with R, de Falcon, Ihaka et Gentleman. Très similaire, dans l'esprit, à celui de Lobry, ces slides présentent les éléments importants de la programmation statistique sous R.

Programming in R, de Zoonekynd. Une description rapide des principales caractéristiques du langage. Nous nous intéressons avant tout à la première partie consacrée aux structures de données et aux constructions algorithmiques que permet le langage de programmation.

Ouvrages en ligne - Tour d'horizon des méthodes stat.

An Introduction to R: Software for Statistical Modelling & Computing, de Kuhnert et Venables. En anglais, Ce document s'attache à décrire les principales commandes et fonctions de R à travers des applications. Il est subdivisé en chapitres consacrés à différents thèmes du traitement statistique des données : exploration graphique, régression linéaire, régression logistique, arbres de décision, etc. Les exemples sont abondamment commentés et illustrés (code R, sorties associées, graphiques produits, etc.). Raffinement suprême, le texte est disponible dans une archive comprenant les scripts R et les données utilisées.

Cookbook for R, de Winston Chang. En anglais, cet ouvrage présente la pratique de R. La progression est classique, on la retrouve dans quasiment tous les ouvrages d'introduction à R : les bases de R, les nombres, les châines de caractères, ..., la manipulation des données, les analyses statistiques. Une très bonne référence, gratuite qui plus est.

An introduction to psychometric theory with applications in R, de William Revelle. De l'auteur du package "psych", bien connu des statisticiens. Il développe les aspects théoriques de plusieurs méthodes statistiques (régression, analyse factorielle, clustering, etc.), qu'il met directement en application avec les procédures du package qu'il a développé, qui est bien documenté d'ailleurs (c'est assez rare pour le souligner). Un travail absolument remarquable avec de nombreux exemples. Pour enfoncer le clou, l'auteur a mis en ligne des supports pour une formation à R sur 5 jours : il intègre plusiurs méthodes statistiques (anova, modèles linéaires, analyse mutivariée, etc.) et la programmation avec le langage R. Le contenu théorique - rédigé - de chaque journée et les slides associés sont en ligne. Bref, avant de payer à prix d'or des formations pour un logiciel libre, tout un chacun devrait jeter un petit coup d'oeil sur ces supports. L'auto-formation, c'est très bien aussi.

Statistics Using R with Biological Examples, de Seefeld et Linder . En anglais, ce document fait un large tour d'horizon du logiciel R (plus de 300 pages) en découpant la présentation selon les thèmes statistiques abordés. Cet ouvrage, parce que c'en est bien un, décrit autant le pourquoi et le comment des méthodes que leur mise en œuvre avec R. Comme le titre l'indique, les exemples proviennent en priorité de la biologie. Les chapitres 2 à 5 sont les plus intéressants pour nous.

Analysis of epidemiological data using R and Epicalc, de Chongsuvivatwong . En anglais, ce document décrit la mise en oeuvre de R dans le domaine de l'épidémiologie (plus de 300 pages). A noter en particulier les chapitres consacrés à la régression logistique binaire, polytomique, polytomique ordinale, et la régression de poisson.

Statistics with R, de Zoonekynd . En anglais, ce site web présente les fonctions de R par thèmes statistiques. Une particularité importante, le document est sous licence Common Creatives, nous pouvons le compléter, le reprendre, etc., en respectant la licence bien entendu. Le code R de toutes les illustrations est téléchargeable.

RDataMining.com : R and Data Mining, de Yanchang Zhao. En anglais, ce site met en ligne un exemplaire PDF de l'ouvrage "R and Data Mining: Examples and Case Studies". Les codes sources et données peuvent être téléchargés. Le document PDF n'intègre pas la description complète des études de cas malheureusement.

Little book of R for Multivariate Analysis, de Avril Coghlan. En anglais, ce site présente très succinctement la mise en oeuvre de l'analyse multivariée / analyse de données (principalement l'ACP - Analyse en Composantes Principales et l'AFD - Analyse Factorielle Discriminante) avec R. L'ouvrage, téléchargeable en PDF, vaut surtout par sa pédagogie et la progressivité des notions présentées au lecteur. Les nombreux exemples sont très largement commentés.

Introductory Statistics with R, de Peter Dalgaard. Un ouvrage d'introduction à la fois à la statistique et à R, comme il y en a tant. Les deux premiers chapitres sont consacrés aux structures de données sous R et à leur manipulation. Les chapitres suivants abordent tour à tour les différents thèmes de la statistique et leur traitement avec R. Entres autres : tests de comparaisons de populations paramétriques et non-paramétriques, la régression et la corrélation, les tables de contingence, la puissance de tests, la régression logistique, les modèles de survie, la régression de poisson. Cet ouvrage nous donne avant tout un aperçu de ce que l'on peut faire sous R.

Des fiches TD - Comment faire avec R

Forum des utilisateurs de R, en français.

Enseignements de Statistique en biologie, du Pôle Bioinformatique Lyonnais (Lyon 1). Un site extraordinaire, avec des fiches TD pour tout ce qui est en rapport, de près ou de loin, à l'analyse statistique des données. Chaque fiche comprend le thème, les données utilisées, les commandes R, une description des résultats et de leurs interprétations. Le thème central est la biologie, mais la transposition dans d'autres domaines est aisée. Vraiment un travail considérable et de très grande qualité. Bravo.

Portails - Blogs - Collection de liens

Statistique et économétrie avec R : ressources utiles. Maintenue par Jean-Charles Briquet-Laugier.

R tutorials from Universities around the world. Maintenue par Pairach Piboonrungroj.

R-bloggers. R news and tutorials contributed by (365) R bloggers.

r4stats.com de Bob Muenchen. This site’s mission is to analyze the world of analytics, and to help people learn to use R. R is free, open source, analytic software that is similar to the “big three” commercial packages: SAS, SPSS and Stata. Je crois que tout est dit.

SAS and R. Examples of tasks replicated in SAS and R.

Data Analysis Visually Enforced, de Gaston Shanchez. Voir, entres autres, les tutoriels comparant les packages dédiés à l'analyse factorielle (analyse en composantes principales, analyse factorielle des correspondances, analyse des correspondances multiples.


Ricco Rakotomalala