Mathématice, intégration des Tice dans l'enseignement des mathématiques  
Sommaire > N°56 - En cours d’élaboration - Les nouveautés de MathémaTICE > R au lycée : plus qu’un logiciel de statistiques

R au lycée : plus qu’un logiciel de statistiques !
Moteur de recherche
Mis en ligne le 9 juin 2017, par Patrick Raffinat

Cet article peut être librement diffusé à l’identique dans la limite d’une utilisation non commerciale suivant la licence CC-by-nc-nd.

A) Introduction

De part mon expérience d’enseignant en IUT (spécialité Statistique et Informatique Décisionnelle), je doute que le logiciel R soit souvent utilisé au lycée : nos étudiants n’en ont même jamais entendu parler à leur arrivée à l’IUT, alors que c’est un logiciel majeur en statistiques et que la réforme de 2009 a mis l’accent sur l’enseignement des statistiques au lycée. C’est dommage, d’autant que les lycéens pourraient ainsi découvrir que le travail d’un statisticien ne se limite pas à appliquer des modèles mathématiques et à interpréter les résultats obtenus :

  • en amont, il faut récupérer et transformer des données qui peuvent provenir de tableurs, de bases de données…
  • en aval, il faut produire des rapports (statiques ou dynamiques) à l’aide de logiciels de plus en plus sophistiqués.

Pour sensibiliser les élèves à ces aspects, il n’y a pas besoin de les former à R, ce dont les enseignants de lycée n’ont d’ailleurs généralement pas le temps. C’est pourquoi D. Le Fur propose sur le site « Les maths libres » des scripts R ou des pages web prêts à l’emploi. Par exemple, il propose des pages web interactives permettant de manipuler la loi binomiale :

D. Le Fur utilise la librairie Shiny, une des 12000 librairies R recensées (voir wikipedia). Cela témoigne de la vitalité de ce logiciel libre qui s’est considérablement étoffé depuis sa naissance en 1993. Au départ, R était avant tout un outil destiné à des universitaires souhaitant échapper aux logiciels payants pour leurs enseignements ou leurs travaux de recherche. Maintenant, c’est devenu un logiciel très prisé par le monde professionnel.

La première partie de cet article sera consacrée à la librairie R2HTML, qui permet la création de pages web statiques sans avoir à connaître le langage Html. J’encouragerai les enseignants de lycée à fournir quelques programmes R à leurs élèves, puis à leur demander d’y apporter quelques petites modifications et de les exécuter afin de produire un fichier Html à visualiser avec un navigateur web. Ce type d’activité peut être proposé aussi bien dans un enseignement de mathématique que dans une option informatique (ISN, ICN). Dans la seconde hypothèse, je suggèrerai d’aller au-delà en examinant le contenu du fichier Html obtenu, en modifiant les paramètres de la feuille de styles utilisée par la librairie R2HTML...

La seconde partie de l’article sera consacrée à la récupération et à la transformation de données. C’est un thème moins « vendeur » que la création de pages web, mais fondamental pour les différents métiers liés aux statistiques et à l’informatique décisionnelle. Une façon simple et rapide d’aborder le sujet est de montrer comment automatiser la production de statistiques sur des données provenant d’un tableur. En ICN, on peut aller au-delà en s’intéressant aussi à l’analyse de données provenant de bases de données.

Enfin, la troisième partie de l’article montrera que R est également performant en cartographie, un des thèmes de l’ICN en première et en terminale. Elle répondra aussi à une question que doivent se poser de nombreux élèves : pourquoi s’embêter à taper du code alors qu’il est si facile, avec certains logiciels, de cliquer ici ou là ?

B) Installation et environnement de travail

Il existe une version en ligne, R-Fiddle, qui permet de faire des simulations et de produire des graphiques de base :

Mais, pour pouvoir utiliser des librairies comme R2HTML, il faut installer R localement. Dans son article Quelques activités avec R du N°35, H. Raymondaud précise qu’il a ensuite téléchargé l’environnement graphique RStudio pour faciliter l’utilisation de R. Cela n’est pas indispensable, comme je l’illustre sur un cours en ligne que j’ai rédigé il y a quelques années quand RStudio n’existait pas encore. Ce cours s’appelle « Interfaces utilisateur et rapports statistiques avec R et Sas » et est disponible sur IUTEnLigne, le campus numérique des IUT (voir lien).

Dans les deux cas, il y a une précaution à prendre : vérifier que les librairies utilisées (ici R2HTML et sqldf) sont effectivement installées : en effet, pour des raisons pratiques évidentes, les 12000 librairies R ne sont pas toutes téléchargées lors de l’installation de R. Heureusement, l’installation de librairies supplémentaires est très facile à effectuer via RStudio (bouton Install de l’onglet « Packages ») ou sans RStudio (voir IUTEnLigne).

Il faut aussi savoir qu’une librairie installée sur le disque dur n’est en général pas téléchargée en mémoire centrale lors du démarrage d’une session R : c’est pourquoi il y aura des instructions « library(R2HTML) » ou « library(sqldf) » dans mes programmes.

C) Pages web statiques : la librairie R2HTML

Introduction

Dans le N°52 de MathémaTICE (voir « Blockly, calcul formel et statistiques »), j’ai présenté une extension de Blockly permettant de faire de la programmation visuelle dans un cadre statistique : les blocs sont traduits en R, puis envoyés à un serveur qui les exécute. Il n’est pas nécessaire d’examiner le code R pour utiliser cet outil, mais cela peut être un moyen de familiariser les élèves à R.

Ce n’est pas l’approche que je choisirai ici : je supposerai que quelques « bouts de code R » seront donnés aux élèves pour qu’ils les testent et les adaptent. Une des raisons de ce choix est que l’extension R de Blockly n’a pas été suffisamment développée pour produire toutes les instructions R dont j’ai besoin.

Exemples du N°52

Dans un document annexe du N°52, j’ai produit plusieurs rapports Html en partant d’un programme Blockly, puis en récupérant un code R dont l’exécution produisait un fichier Html. Les codes R et Html de trois exemples sont disponibles dans ce fichier zippé.

Rapport 1

Les trois fichiers relatifs au premier rapport sont :

  • rapport1.R : le fichier R initial.
  • rapport1.html : le fichier Html obtenu en exécutant le programme R, à visualiser avec un navigateur.
  • R2HTML.css : la feuille de styles utilisée (par les trois rapports), dont il est aisé pour un novice de modifier le contenu afin de changer l’apparence du rapport … ce qui devrait plaire à vos élèves !

Comme chacun des exemples que je traiterai, le fichier rapport1.R a la forme suivante :

La procédure « HTMLInitFile » précise le nom du fichier qui sera créé (ici « rapport1.html ») dans le répertoire courant [1]. Examinons maintenant le coeur du rapport :

La procédure « HTML.title » permet de créer le titre principal du rapport, ainsi que les titres de ses deux parties. Cela se traduit par des balises <h1> et <h2> dans le fichier « rapport1.html ». La procédure « HTML » est ici utilisée pour afficher un vecteur ( HTML(t) ) et une statistique ( HTML(moy) ).

Rapport 2

Le second rapport (fichiers rapport2.R et rapport2.html) est une variante du premier rapport, permettant d’améliorer l’affichage du vecteur t qu’on transforme en une matrice à une ligne : HTML(t) est alors remplacé en HTML(rbind(t)). Dans le fichier rapport2.html, cela se traduit par l’introduction de balises <table>, <tr>, <td>.

Il ne me semble pas spécialement opportun de traiter cet exemple avec des lycéens, à moins qu’ils ne déplorent que la mise en forme du rapport 1 soit trop primaire.

Rapport 3

Le troisième rapport (fichiers rapport3.R, rapport3.html, graph1.PNG et graph2.PNG) illustre comment ajouter deux graphiques dans un rapport. Ce sont des histogrammes, mais le principe reste le même pour les autres types de graphiques où l’instruction créant le graphique (ici hist) doit être accompagnée de 3 autres instructions :

Le fichier créé s’appellera ici « graph1.PNG ». Dans le fichier rapport3.html, il sera intégré grâce à une balise <img>.

Application

Dans la section B, j’ai présenté un code R simulant 1000 jets de 2 dés. Il est aisé de l’étendre afin de produire des rapports web (voir résultat) :

IUTEnLigne

Deux exemples sont développés dans mon cours sur IUTEnLigne, dans le chapitre intitulé « rapports statistiques ».

Le premier exemple (voir résultat et fichier R) fait quelques statistiques descriptives sur des données (5 individus) entrées directement dans le fichier R. Il ne faut donc pas chercher à interpréter les résultats d’un point de vue statistique.

Le second exemple (voir résultat et fichier R) est plus significatif. Les données proviennent d’un fichier texte medecine.txt [2] comprenant 1943 individus, que m’a fourni un collègue statisticien. Il est même possible de le lire avec R sans qu’il soit nécessaire de le télécharger sur le disque dur :

La procédure « read.table » précise ici que les données du fichier sont séparées par des tabulations (‘\t’), que les nombres utilisent une virgule comme séparateur décimal et que la première ligne du fichier contient le nom des variables (header=TRUE).

Ces exemples peuvent être proposés à des lycéens, puisque je n’y ai intégré que des statistiques descriptives de base. Mais je conseille néanmoins d’alléger les rapports à produire afin de limiter le nombre de commandes R à enseigner.

D) Bases de données et langage SQL

Introduction

Un statisticien doit, avant de se livrer à une analyse statistique, récupérer et transformer des données provenant de tableurs, de bases de données… L’importance de ce travail préalable, souvent méconnu ou minimisé, est souligné par F. Letué dans « Allier statistique et informatique : quelles filières après le bac ? ».

En tant qu’enseignant dans un département « Statistiques et informatique décisionnelle », je verrais d’un bon œil que tous les lycéens en soient informés par leurs enseignants de mathématiques au lycée : des futurs étudiants en perspective, ça n’est pas à négliger ! Mais il me semble qu’on peut faire bien plus en ICN :

  • dans l’enseignement d’ICN de seconde, un des modules proposés porte sur la gestion et l’exploitation de grandes quantités de données.
  • dans l’enseignement d’ICN de première et de terminale , savoir interroger une base de données fait partie des compétences à acquérir (voir partie « repères » en annexe du programme officiel).

R propose des librairies permettant de se connecter à des bases de données distantes, à utiliser en fonction du SGBD (système de gestion de bases de données) qui gère ces bases de données : par exemple, la librairie ROracle (respectivement RMySql…) permet d’accéder à une base de données Oracle (respectivement MySql…). Ensuite, une fois la connexion établie, l’utilisateur n’a plus à se préoccuper du type de SGBD : il peut en effet faire des requêtes en langage SQL, un langage normalisé reconnu par la majorité des SGBD.
Je ne développerai pas ce sujet [3] dans l’article car, d’un point de vue pratique, il nécessite que les élèves disposent d’une base de données distante à laquelle ils puissent se connecter. Mais j’illustrerai néanmoins l’intérêt pratique du langage SQL pour manipuler des données dans un cadre statistique : en effet, R propose une librairie (nommée sqldf) qui permet d’appliquer SQL à des tableaux de données au format R.

SQL et R

Dans la partie « bases de données et langage SQL » de mon cours disponible sur IUTEnLigne, j’ai créé deux tableaux de données R avant de leur appliquer différentes commandes SQL avec la librairie sqldf. Les données sont entrées explicitement dans le code R fourni sur IUTEnLigne. Mais, sans que cela ne change rien sur les commandes SQL, elles peuvent aussi provenir de deux feuilles de calcul d’un classeur :

Dans ce cas, il faut procéder de la façon suivante (voir détails) :

  • exporter, depuis le classeur, les feuilles de calcul dans deux fichiers texte au format csv.
  • créer les tables « etud » et « notes », depuis R, en important les fichiers textes avec la procédure « read.table ».

Quelle que soit la façon dont les deux tables ont été créées, on peut ensuite les fusionner et les transformer avec des commandes R classiques ou avec des requêtes SQL via la librairie sqldf. Mais, lorsque j’enseigne les bases de données à mes étudiants d’IUT, j’insiste sur le point suivant : « n’établissez pas un cloisonnement entre les matières informatique et statistique, car le SQL enseigné dans mon cours de bases de données (informatique) peut aussi servir quand vous faites un projet ou un stage de statistiques avec R » .

Sur IUTEnLigne, je donne plusieurs exemples de requêtes SQL. La plus utile ici est celle qui rassemble les tables « etud » et « notes » : elle permet par exemple ensuite de faire un graphique ou une régression linéaire avec la variable « age » (provenant de la table « etud ») et la variable « math » (provenant de la table « notes »).

Evidemment, R n’impose pas la connaissance de SQL pour faire la jointure de tables et propose une solution alternative, en l’occurrence la fonction "merge" qui sera d’ailleurs utilisée dans la section suivante pour faire de la cartographie.

E) Cartographie

Introduction

J’avais prévu en rester là pour cet article, mais en lisant attentivement le programme d’ICN de première/terminale, j’ai constaté qu’un des projets proposés est « visualisation des données : exemple avec des données géolocalisées ». Et dans les activités guidées préparatoires, la cartographie est mise en avant.

La cartographie, je trouve, permet d’atteindre un objectif majeur de l’ICN : « faire appréhender l’importance de l’informatique aussi bien dans les sciences que dans les lettres, les langues, les arts, les sciences humaines et sociales ». Elle est pluridisciplinaire, accessible à tous et, cerise sur le gâteau, permet de montrer à des élèves non scientifiques pourquoi ils peuvent être amenés à écrire un peu de code dans leur futur métier. Je reprends ici une partie de l’argumentation donnée par L. Beauguitte et T. Giraud dans « Cartographier avec le logiciel R » :

Pourquoi utiliser R et s’embêter à taper du code alors qu’il est si facile, avec certains logiciels de cartographie, de cliquer à droite, à gauche ?

Tout d’abord pour gagner du temps (mais si, mais si). Une fois les fonctions de base maîtrisées, il suffit de préparer des modèles de scripts où seuls les noms des fichiers en entrée (et les titres des cartes) devront être modifiés.

Autre argument : en intégrant les fonctions de représentation cartographique à la suite des fonctions de statistiques on limite au maximum les ruptures logicielles (du type, je mets en forme mes données avec un tableur X, je fais mes traitements statistiques avec un logiciel de statistique Y, je retourne dans un tableur pour créer un fichier à cartographier, je cartographie avec un logiciel dédié Z puis je mets en page avec un logiciel de traitement de textes XYZ…).

...

Dans l’onglet « Martinique », je reviens sur cet article dont j’ai testé les deux scripts R qui utilisent un fond de carte de la Martinique, ainsi qu’un extrait du recensement de la population 2009.

Dans l’onglet « Visualisation des données », je m’intéresserai à la réalisation de cartes à partir de Google Maps, OpenStreetMap...

Martinique

Dans leur billet, L. Beauguitte et T. Giraud fournissent un fichier zippé (télécharger) contenant :

  • le fond de carte IGN des communes de la Martinique.
  • l’extrait du recensement de la population 2009 (fichier data.csv).
  • le script intitulé carto_choro.R, qui permet de réaliser une carte choroplète (voir résultat ci-dessus).
  • le script intitulé carto_prop.R, qui permet de réaliser une carte en « cercles proportionnels ».

Après avoir installé plusieurs librairies de cartographie, j’ai pu sans problème exécuter les scripts R dans RStudio. La seule adaptation que j’ai faite a été de modifier l’instruction setwd, afin de préciser dans quel dossier étaient stockés les différents fichiers [4].

Les différentes commandes R utilisées sont commentées, mais il n’est pas nécessaire d’en comprendre le sens exact : une compréhension « grossière » suffit pour que les élèves puissent apporter quelques adaptations aux cartes ainsi créées. D’ailleurs, plutôt que de chercher à modifier les scripts R, je suggère plutôt de changer le contenu du fichier de données (data.csv), et même le fond de carte (voir http://professionnels.ign.fr/geofla) .

Visualisation des données

Dans « Visualisation des données avec R », JX Jollois montre que R est un logiciel très performant pour visualiser des données en statistiques.

La partie dédiée à la cartographie explique comment réaliser des cartes à partir de Google Maps, OpenStreetMap... J’ai ainsi découvert l’existence de la librairie leaflet, ce qui m’a incité à chercher sur internet des exemples d’utilisation dont pourraient s’inspirer des lycéens. J’en ai trouvé plusieurs sur ce lien, dont celui-ci :

Pour réaliser cet exemple, il suffit :

  • de créer un tableau de données dont les variables sont ville, latitude, longitude et population.
  • d’intégrer ce tableau dans un script R très court qui, ici, ajoute même une dose d’interactivité : lorsqu’on clique sur une ville, sa population est affichée.

Bien évidemment, s’il y avait plus de villes, il serait préférable d’entrer les données dans un tableur, puis de les exporter (au format csv) pour les importer dans R. Je rappelle que j’avais expliqué comment y parvenir dans ce pdf de la section D.

F) Conclusion et perspectives

Pourquoi ai-je intitulé cet article « R au lycée, plus qu’un logiciel de statistiques » ?

Le plus que n’est bien sûr pas à prendre au pied de la lettre : R est un logiciel de statistiques certes très complet, mais pas autre chose qu’un logiciel de statistiques. Avec ce titre un peu accrocheur, je veux en fait souligner que le travail d’un statisticien ne se limite pas à appliquer des modèles mathématiques et à interpréter des résultats : donc, un logiciel de statistiques doit aussi faciliter la production de rapports (statiques ou dynamiques), et proposer des fonctionnalités permettant de récupérer et de transformer des données.

Le plus que (au lycée) souligne que R peut non seulement être utilisé en cours de mathématiques pour illustrer la partie statistique du programme officiel, mais aussi en ICN dont on peut agrémenter les thèmes informatiques (HTML, bases de données…) en les reliant à des problématiques statistiques.

Et puis, le plus qu’un logiciel de statistiques fait aussi référence à l’éthique des logiciels libres dont R est un succès éclatant : il est même devenu très prisé par le monde professionnel en statistiques et en informatique décisionnelle, ce qui n’est pas un mince exploit [5].

Dans le N° 58 de MathémaTICE, je complèterai cet article en présentant une librairie, RMarkdown, qui permet de créer simplement des documents (HTML, PDF, MS Word [6] …) dans lesquels on peut incorporer et exécuter du code R. Je combinerai également RMarkdown et programmation visuelle, afin de perfectionner le prototype d’extension R de Blockly présenté dans le N°52.

Epilogue : débat interne à propos de l’ICN

Avant que l’article ne soit officiellement mis en ligne, il a suscité un débat interne sur l’ICN (en première/terminale) au sein du comité de rédaction de MathémaTICE. Je le reproduis partiellement, car il me semble que cette discussion peut être profitable aux lecteurs.

J’enseigne ICN en 1ère (c’est d’ailleurs pour ça que je m’intéresse à SQL), et les statistiques ne sont pas vraiment une partie importante du programme : il s’agit essentiellement de former les élèves à la pédagogie de projet dans une activité de création numérique.

J’avoue que j’ai été surpris de voir dans le programme officiel de 1ère/terminale les exemples de projets suivants, en particulier le second :

  • visualisation graphique de données : exemple avec des données géolocalisées
  • réalisation d’une enquête et analyse statistique

Mes élèves auraient vite été démotivés si je ne leur avais pas laissé choisir (et demander !) ce qu’ils voulaient faire. L’avantage de cette liberté est que j’ai pu voir à quel point ils préfèrent CSS à tout langage de programmation quel qu’il soit...

Ce qui motive les élèves, à mon avis, c’est surtout d’obtenir de « belles réalisations » sans avoir à beaucoup programmer : c’est aussi possible en R, ce que je montre dans l’article. J’y préconise l’adaptation de bouts de code existants (en changeant les données, en améliorant les graphiques grâce à l’examen des options...), pas de faire de la programmation avec des boucles ou des sous-programmes : en d’autres termes, je privilégie R comme "langage de commandes" et pas comme "langage de programmation".

Cette liberté m’a aussi permis de voir à quel point les élèves préfèrent la programmation de jeux à toute autre programmation.

En consultant le programme ICN de 1ère/terminale, je n’ai pas vu la programmation de jeux comme thématique proposée. En plus, certains élèves risquent de regretter a posteriori leur choix lorsqu’ils découvriront que la programmation d’un jeu peut être très technique...

Ce n’est pas au prof d’ICN de choisir les centres d’intérêt des élèves, car il n’est qu’encadrant pour les projets !

Il est certes important de ne pas brider la créativité des élèves, mais il est aussi souhaitable que les thématiques choisies soient compatibles avec les compétences des encadrants ! Il me semble qu’on peut aboutir à un compromis satisfaisant pour tout le monde si un enseignant oriente ses élèves vers quelques thématiques, sans fixer de feuille de route trop précise ensuite.

Et puis, si on se contente de suivre les élèves, de nombreux domaines leur resteront inconnus et fermés... Par exemple, je trouve que mettre en avant la cartographie (sans l’imposer) dans les thèmes proposés peut être une excellente suggestion pour des élèves non scientifiques car elle permet de leur montrer pourquoi ils peuvent être amenés à écrire un peu de code dans leur futur métier. De plus, cette thématique illustre bien l’intérêt du numérique, est propice à la créativité et est interdisciplinaire.

En conclusion à cette discussion, je ne prétends pas qu’il faille obligatoirement utiliser R en ICN, mais montre simplement aux enseignants quel parti ils peuvent en tirer : à eux de choisir ensuite... Un des rôles de MathémaTICE consiste à prendre du recul et à ouvrir des pistes, ce que je fais dans cet article.


notes

[1Si vous ne savez pas quel est votre répertoire de travail, tapez getwd() dans votre environnement R, à moins que vous ne préfériez changer de répertoire de travail ( setwd("votre_choix") ).

[2Ce fichier a été obtenu en exportant des données provenant d’un tableur, procédé couramment utilisé en statistiques.

[3Les lecteurs intéressés par le sujet peuvent consulter un document intitulé « Accéder à une base de données avec R », écrit par R. Baudoin (voir lien).

[4A titre indicatif, voici comment j’ai fixé mon répertoire de travail : setwd("C :/Users/raffinat/Documents/cartographier_avec_R/donnees"). J’ai pris le soin de renommer le dossier « données » en « donnees », certains logiciels n’aimant par les accents. Je n’ai pas vérifié si c’est le cas pour R, mais c’est ce que je conseille à mes étudiants pour éviter toute mauvaise surprise.

[5Microsoft fait l’éloge de R dans https://www.microsoft.com/fr-fr/cloud-platform/r-server et précise que son outil R-server est « entièrement compatible avec les scripts R, les fonctions et les packages CRAN (comprehensive R archive network) » : Microsoft revendiquant sa compatibilité avec R, c’est vraiment une marque de reconnaissance pour ce logiciel libre !

[6Les allergiques à Word, dont je fais partie, peuvent ensuite ouvrir les fichiers avec LibreOffice...

Documents associés à l'article
  Sql et R   |   (PDF - 124 ko)
  fichiers pour cartographier la Martinique   |   (Zip - 14.2 ko)
Réagir à cet article
Vous souhaitez compléter cet article pour un numéro futur, réagir à son contenu, demander des précisions à l'auteur ou au comité de rédaction...
À lire aussi ici
MathémaTICE est un projet
en collaboration avec
Suivre la vie du site Flux RSS 2.0  |  Espace de rédaction  |  Nous contacter  |  Site réalisé avec: SPIP  |  N° ISSN 2109-9197