S’il y a un problème temporaire d’accès à RBlockly via mes pages professionnelles, essayez cette solution de secours.
A) Introduction
Dans le N°56 de MathémaTICE (voir lien), j’ai montré que R peut non seulement être utilisé en mathématiques pour illustrer la partie statistique du programme officiel, mais aussi dans les options informatiques (ICN, ISN).
Je complète cet article en présentant une librairie, RMarkdown, qui permet de créer simplement des documents (HTML, PDF, MS Word [1] …) dans lesquels on peut incorporer et exécuter du code R. Par exemple (voir section B), RMarkdown permet de produire un document affichant avec des listes à puces diverses statistiques calculées avec R, incorporant un graphique engendré par un code R...
RMarkdown peut donc se révéler très pratique pour des enseignants souhaitant créer des polycopiés ou des feuilles d’exercices en statistiques. Mais c’est dans une autre direction que j’orienterai cet article, en combinant RMarkdown et programmation visuelle dans une extension statistique de Blockly qui permet :
de récupérer des jeux de données disponibles sur le web en indiquant leur URL.
de produire des rapports RMarkdown et de les visualiser : le code R déduit du programme Blockly est envoyé au serveur OpenCPU qui l’exécute, puis renvoie le résultat pour qu’il soit affiché dans une fenêtre interne de l’extension Blockly.
...
L’extension, que je nommerai RBlockly, est disponible sur mes pages professionnelles consacrées à Blockly (voir lien). Elle est également hébergée par l’IREM de la Réunion (voir lien).
La librairie RMarkdown permet de créer simplement des documents (HTML, PDF, MS Word...) dans lesquels on peut incorporer et exécuter du code R. Dans cette section, je montrerai comment procéder pour réaliser le document suivant :
Le code ayant permis de réaliser ce premier rapport est beaucoup plus simple qu’on ne pourrait le penser a priori, comme le montre ce premier extrait :
Il comporte un titre de niveau 1 (précédé d’un #), un titre de niveau 2 (précédé de deux #), un titre mis en gras (entouré de deux *), un lien internet et un code R qui sera exécuté. L’option echo=TRUE précise que ce code sera affiché dans le rapport. Les valeurs des trois variables ainsi créées (taille, de1 et de2) peuvent être intégrées directement dans le rapport, ce que montre ce deuxième extrait :
On peut également intégrer des graphiques dans le rapport, avec des options pour fixer leur taille :
La façon la plus simple de tester cet exemple, dont le code source est disponible dans le fichier ci-dessus, est de coller le code dans l’éditeur d’une application web mettant en valeur les possibilités du serveur OpenCPU [2] :
Mais pour produire des documents au format MS Word, une installation locale de R est nécessaire. Il est recommandé d’installer également le logiciel RStudio [3], un environnement multiplateforme facilitant la saisie du code, son exécution, la visualisation des résultats…
Le choix de « Knit to HTML » permet de créer un rapport Html dont le contenu est visualisé dans l’onglet « Viewer ». Le fichier Html est stocké dans le même dossier que le fichier initial (« demo_rstudio.Rmd ») et a pour nom « demo_rstudio.html ».
Le choix de « Knit to Word » crée un fichier MS Word nommé ici « demo_rstudio.docx », fichier qui peut être lu par Libre Office pour les allergiques aux produits Microsoft.
Pendant que j’étudiais les possibilités de RMarkdown, je me suis rendu compte qu’on pouvait incorporer dans les documents non seulement du code R, mais aussi du code Python. Et comme l’Education Nationale préconise ce langage pour la rentrée 2017-2018, je reprends en partie l’exemple venant d’être traité avec R :
Dans le N°52 de MathémaTICE (voir lien), j’ai présenté un prototype d’extension statistique de Blockly montrant la faisabilité de l’approche, mais devant être complété pour espérer inciter des enseignants à l’utiliser en classe, d’autant plus que R n’est pas (doux euphémisme) un logiciel d’usage courant au lycée.
Compte-tenu de ce contexte peu favorable, je me suis longuement demandé s’il était pertinent de consacrer du temps à développer le prototype. Le facteur déclenchant pour passer à l’action a été la découverte d’OpenCPU, un serveur R bien plus complet que celui que j’utilise dans le prototype (Rweb), et l’existence d’une bibliothèque Javascript permettant de communiquer avec ce serveur pour produire des rapports RMarkdown.
Dans le prototype, les données étudiées étaient soit le résultat d’une simulation, soit directement entrées dans des tableaux. Cela est certes suffisant pour en illustrer les fonctionnalités statistiques, mais il était regrettable de ne pas pouvoir analyser de vrais jeux de données, d’autant plus que la saisie de longs tableaux de données est fastidieuse (illustration).
Je n’ai pas trouvé de solution pour lire des fichiers de données sur le poste utilisateur, mais j’ai défini plusieurs blocs permettant de récupérer des données en ligne :
il y a un bloc permettant de lire des fichiers textes, qu’il faut compléter en donnant l’URL du fichier et, éventuellement, d’autres paramètres de la fonction R « read.table » : par exemple, les données peuvent être séparées par un autre caractère qu’une tabulation, l’option par défaut.
il y a un bloc permettant de lire une feuille Google Sheet, qu’il faut compléter en donnant son URL.
J’ai aussi ajouté quelques fonctionnalités statistiques. Par exemple, on peut croiser deux variables dans un graphique.
Comme on ne fixe pas l’URL dans le bloc d’importation, c’est un jeu de données étudié dans un cours disponible sur IUTEnLigne [4] qui est téléchargé. Il est relatif à la médecine du travail et comporte 1943 individus, 4 variables quantitatives (taille, poids, age et taux de cholestérol) et 3 variables qualitatives (docteur, société et activité physique).
Un exemple de démonstration peut être téléchargé avec le bouton « Démo » de RBlockly. Il est détaillé dans ce pdf :
présentation détaillée de l’exemple de démonstration
Les données sont entrées directement :
Ensuite, deux nouvelles variables statistiques (moyenne pondérée et avis) sont introduites (illustration), et un diagramme en barre de l’avis est créé.
Au lycée, l’apprentissage de R n’est pas un objectif, comme il l’est par exemple dans mon département d’IUT (filière « Statistiques et Informatique Décisionnelle »). Mais il me semble important de montrer aux lycéens quelques exemples de code et de leur demander ensuite de faire des adaptations : par exemple, le pdf explique comment procéder pour colorier les barres du diagramme.
D) Conclusion
Une manière de susciter la curiosité de lycéens en option ICN est de présenter RMarkdown comme étant un langage du web orienté statistiques, ce qui est certes réducteur mais une réalité puisqu’à l’arrivée on peut récupérer un fichier Html [5].
Une manière de convaincre au moins quelques enseignants de mathématiques d’utiliser R pour enseigner les statistiques au lycée peut-elle être de passer par la programmation par blocs avec RBlockly ?
Le facteur de Mafate est un jeu de logique présenté par son concepteur, F. Barbé, dans le N°55 : voir lien. Il est destiné à des élèves du cycle 1 au cycle 4, qui doivent placer des tours et des escaliers dans le bon ordre, sachant que la première et la dernière tour sont imposées.
Quel lien avec cet article ? Il n’y en a pas vraiment, si ce n’est que j’ai écrit un rapport RMarkdown pour résoudre ce casse-tête et en afficher les solutions, ce que vous pouvez tester en cliquant sur ce lien. Au début du programme R, vous pouvez changer la tour de départ, la liste des tours ou la liste des escaliers :