Cours de programmation sous 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. En particulier, il nous sera possible de créer de nouvelles fonctions de traitement de données avec le langage R.

Au fil des années, R sera de plus en plus incontournable dans le traitement exploratoire et statistique des données. Voir le très intéressant article du New York Times à ce sujet (Janvier 2009). Voir également les sondages annuels publiés par le site KDnuggets à propos des logiciels utilisés par les data miner (2013, 2012, 2011, 2010, etc.), à propos des traitements réalisés à l'aide de R par les data miners (2011), à propos des langages de programmation utilisés pour le traitement de données (2013, 2012, 2011), au point que la question du remplacement de SAS par R est maintenant posée par les spécialistes ("Switching from SAS to WPS, R, ...", Kdnuggets Polls, Aug. 2010 ; "Will 2015 be the Beginning of the End for SAS and SPSS?", R-bloggers, May 2012).

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 et de data mining. Je profite de l’expérience ainsi acquise pour mettre R en contrepoint du tandem "Excel (tableur) + Tanagra" dans mon cours de data mining et régression logistique de M2.

Ce cours est dispensé en M2 Statistique et Informatique.

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...

Tinn-R - Description de l'éditeur de code Tinn-R, un outil polyvalent, très léger. Idéal pour débuter la programmation sous R. Solutions pour les principaux écueils.

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.

Slides pour le cours de Programmation R en M2 Statistique et Informatique

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.

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.

Effectuez vos études statistiques avec R, de Philippe Juien. Excellent cours d'introduction à R. Pour nous, voir en particulier les chapitres consacrés aux vecteurs, matrices, listes, data frame...

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...

Quelques tutoriels pour le data mining, les statistiques et l'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).

R et Tanagra. Comparer la mise en oeuvre et les résultats de différentes techniques statistiques sous R et Tanagra (régression logistique, régression PLS, arbres de décision CART, support vector machine, validation croisée, etc.). Si les commandes diffèrent, les résultats sont les mêmes. C'est ce qui importe. Ceci est vrai pour la grande majorité des logiciels libres.

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 reference card, de Robison-Cox. En anglais, sur 2 pages, la listes des principales fonctions de R regroupées par thèmes. Par rapport à celui de T.Short, son principal intérêt est qu'il tient sur 2 pages.

Simplified help pages for R commands, de Stem et Tendril Une organisation bien commande pour présenter une grande majorité des commandes de R. Il est un peu plus élaboré que le simple fichier d'aide. Accès en ligne uniquement. On peut néanmoins charger le PDF pour chaque thème statistique abordé.

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

Programmation statistique avec R - Les bases du langage, de Lobry. Ces slides en français présentent la programmation sous R. Elle correspond à un cours de programmation à destination des statisticiens, ayant de bonnes bases en programmation, mais non-informaticiens et ne désirant pas s'investir outre mesure dans le développement.

Cours d'introduction à la programmation en R, de Jérémie Mary. Présente R comme un langage de programmation exclusivement. Dans l'esprit de ce que nous faisons dans la première partie de notre cours.

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.

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.

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.

Analyse multivariée avec R, de A. Bouchier. En français, documents utilisés lors des cours de statistiques diffusés dans le cadre de la FP-INRA (analyse en composantes principales - ACP ; analyse factorielle des correspondances - ACM ; analyse factorielle des correspondances multiples - AFCM ou ACM ; classification ascendante hiérarchique - CAH ; et d'autres domaines encore - accès aux bases de données, etc.).

Resources to help you learn and use R. En anglais, descriptions et données. On peut faire le parallèle avec d'autres logiciels telles que SAS, STATA et SPSS. Très intéressant pour identifier ce qui est important dans les sorties des logiciels.

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 – Université Lyon 2