(knit)R + AMC pour des questionnaires à valeurs numériques différentes

Added by Sylvain M almost 3 years ago

Bonjour,

J'espère que cette contribution est originale. Je n'ai encore pas rencontré de personnes ayant développé le type de méthode que je décris, mais il est possible, voir vraisemblable que d'autres que moi ont développé des stratégies comparables.

R est un langage de statistique qui peut être utilisé, en combinaison avec LaTeX pour générer automatiquement des documents (rapports scientifiques, etc.).

J'ai utilisé R depuis longtemps pour créer des versions variables de questions pour AMC: Les valeurs génériques, figures, etc. étaient changées avant de créer le questionnaire de façon à ne as donner deux semestres de suite les mêmes valeurs numériques dans les questions.

J'ai récemment perfectionné l'idée pour créer des groupes de questions répliquées avec des jeux de données différents: On dispose de n jeux de données 1..n et plusieurs questions à poser A,B,C... On peut constituer un groupe par question contenant la même question appliquée aux n jeux de données: {A1,A2,A3...An}...{C1,C2,C3,...,Cn}. En utilisant un mode cyclique pour les groupes et en tirant les questions une par une, on peut créer n versions du questionnaire. En combinant des parties de questionnaires avec des nombres de jeux de données différents, on peut créer tant de combinaisons que chaque questionnaire entier devient quasiment unique à l'échelle d'un examen.

Afin d'illustrer mon propos, je fournis un ensemble de fichiers pour mettre en œuvre cette stratégie ainsi que quatre questionnaires créés sur ce principe. Cet exemple est bâti sur l'un des exemples d'AMC.

  • Le fichier de base est nommé minimum_knitr.rnw. Il doit être compilé avec la commande knit de R pour générer un fichier minimum_knitr.tex qui sert à la fabrication du questionnaire. On peut éventuellement utiliser le script knit.sh joint en lançant dans un terminal:
    knit.sh minimum_knitr
    

    Attention, le script prend bien comme argument le nom du fichier .rnw sans l'extension.
  • knit va lire le code R dans le fichier et lancer des morceaux de code contenus dans le fichier sources_amc/r-scripts/main_script.R Ce programme va lui-même compiler trois questions au format rnw: simple.rnw, multiple.rnw et numeric.rmw en utilisant une boucle qui génère des questions avec 4 jeux de données tirés au hasard. L'ensemble des fichiers générés par le code R contenu dans les questions (fichiers .tex et fichiers .pdf) est stocké dans le répertoire sources_amc/r-generated. Dams le fichier principal minimum_knitr.rnw knit introduit des commande LaTeX pour ajouter les questions, les images, les morceaux de code R formatés, etc.
  • Il faut ensuite lancer AMC et utiliser le fichier minimum_knitr.tex comme base pour la réalisation du questionnaire. Avant de mettre à jour les fichiers avec AMC il faut copier le dossier sources_amc dans le répertoire du projet.

On peut créer des questionnaires en utilisant les nombreuses possibilités fournies par le logiciel R. Il suffit pour cela de créer des nouvelles questions au format .rnw, relativement simple à maîtriser.

Trois inconvénients de cette méthode sont les suivants:
  1. les questions appartenant au même groupe et que l'on aimerait voir figurer ensemble dans une colonne du rapport sous libreoffice sont considérées comme des questions différentes. Cela crée des rapports pleins de cases sans rien. Il serait intéressant de proposer que, lorsqu'on ne restitue qu'une seule question de chaque groupe, le rapport d'AMC présente les questions regroupées par groupe.
  2. Le catalogue de question devient potentiellement très grand et pdflatex ne suffit plus, il faut compiler avec des outils plus performants (xelatex).
  3. Modifier le barème à posteriori est un peu un calvaire puisqu'il faut aller modifier les n fichiers .tex correspondant aux n questions du groupe... C'est intéressant de maîtriser sed et les expressions régulières. Il pourrait être intéressant d'avoir un moyen de définir un barème pour un groupe.

-- Pour en savoir plus sur R, c'est [ici](https://www.r-project.org/)
-- pour en savoir plus sur knitr, c'est [là](https://yihui.org/knitr/)

J'espère que ceci sera profitable à tous.

Sylvain M.