DU Bii - module 3: R and stats


Session 2: practical on figures

Thursday 4th of March, 2021

teachers: Claire Vandiedonck & Magali Berland; helpers: Antoine Bridier-Nahmias, Yves Clément, Bruno Toupance, Jacques van Helden

Content of this tutorial:


Before going further

Caution:
1. Create a new directory "Rsession2" in your home with a right click in the left-hand panel of the lab.
2. Save a backup copy of this notebook in this folder : in the left-hand panel, right-click on this file and select "Duplicate" and add your name, e.g: "tutorial_functions_vandiedonck.ipynb" and move it to the proper folder
You can also make backups during the analysis. Don't forget to save your notebook regularly.

Set your working directory and check it:

Warning: you are strongly advised to run the cells in the indicated order. If you want to rerun cells above, you can just restart the kernel to start at 1 again.
About jupyter notebooks:
- To add a new cell, click on the "+" icon in the toolbar above your notebook
- You can "click and drag" to move a cell up or down
- You choose the type of cell in the toolbar above your notebook:
- 'Code' to enter command lines to be executed
- 'Markdown' cells to add text, that can be formatted with some characters
- To execute a 'Code' cell, press SHIFT+ENTER or click on the "play" icon
- To display a 'Markdown' cell, press SHIFT+ENTER or click on the "play" icon
- To modify a 'Markdown'cell, double-click on it

To make nice html reports with markdown: html visualization tool 1 or html visualization tool 2, to draw nice tables, and the Ultimate guide.
Further reading on JupyterLab notebooks: Jupyter Lab documentation.

=> About this jupyter notebook

This a jupyter notebook in R, meaning that the commands you will enter or run in Code cells are directly understood by the server in the R language.
You could run the same commands in a Terminal or in RStudio.

In this tutorial, you will run one cell at a time.

Do not hesitate to try other commands by adding other cells.

Exercice 1: Personnaliser un graphique


1. Graphique initial

Représentez trois points en positions (x, y) : (1, 2), (2, 2) et (3, 3).

Ajoutez le titre Mon graphique avec l’argument main.

Sauvegardez ce graphique en format .jpeg sous le nom initial_graph.jpeg avec la fonction jpeg() suivie de dev.off()

2. Personnalisation du graphique

2.1. Modification de paramètres dans la fonction primaire plot()

Recommencez ce graphique en personnalisant l’affichage avec les options ou fonctions suivantes pas à pas (faites un nouveau graphique à chaque étape en ajoutant le nouveau paramètre):

puis recommencez en spécifiant une forme différente pour chaque point :

   - le 1er sous forme d’une croix (comme un +)
   - le 2ème sous forme d’un triangle pointé vers le bas vide
   - le 3ème sous forme d’un losange plein

2.2. Utilisation de fonctions graphiques secondaires

2.3. Légende

Ajoutez une légende avec la fonction legend() dans le coin en haut à droite et aidez-vous des arguments :

`col`, `pt.bg`, `pt.lwd`  et `pt.cex`: pour respecter les couleurs, formes des points que vous mettrez à la taille 1.5
`legend` : pour nommer vos points A, B, C et D
`title` : pour donner un nom Mes 4 points à la légende
`horiz` : pour positionner les points côte à côte plutôt que les uns en dessous des autres

2.4 Version finale sauvegardée

Tip : fonctions recommandées pour l'exercice:

jpeg()
pdf()
dev.off()
plot()
palette()
grep()
points()
abline()
legend()
title()

=> Pour aller plus loin:

Jouez avec l'affichage des axes:

Exercice 2: représentations graphiques de données qualitatives


Importez dans R le fichier motorisation.txt qui est sur la page du cours ou dans dans: /shared/procjets/dubii2021/trainers/module3/data.

Générez un camembert de la répartition des différentes motorisations et choisissez vous-mêmes des couleurs.

Générez également un diagramme en bâtons avec les proportions (fréquences relatives) des différentes motorisations colorées comme dans le camembert.

Disposez à présent les deux graphes côte à côte sur un même graphique. Essayez dans une premier temps de faire chaque graphique independamment avec les bonnes commandes avant de les afficher sur une même fenêtre graphique

Note: lorsque vous utilisez Rstudio, une erreur peur se produire si votre fenetre graphique est trop petite, compte tenu des marges et de la taille de votre ecran-> pensez alors a redimensionner la fenetre graphique avant de lancer vos commandes graphiques

Tip :fonctions recommandées : read.table(), table(), pie(), barplot() par()avec l’argument mfrow

Avant de lire ce fichier et de l'assigner dans un objet R, ouvrez le avec un editeur de texte pour voir s'il y a une en-tete, combien il contient de lignes, de colonnes et quel est leur separateur (espace, tabulation, virgule, point virgule, etc...) Ici motorisation.txt est un fichier texte de 22 lignes, avec une seule colonne (donc vous pouvez garder le separateur de champs "espace" par defaut dans la commande read.table qui suit), et sans en-tete (donc il faut le specifier avec l'argument header sinon votre premiere valeur serait lue comme un nom de colonne par defaut)

Toujours verifier ensuite la structure des objets importés et se demander si elle est conforme a ce que vous souhaitez!

On ajoute un nome à la variable V1 pour plus de lisibilité:

Si je choisis mes couleurs:

N’hesitez pas à decomposer la commande ci-dessus élement par élement pour bien la comprendre en tapant successivement:

Alternativement: vous pouviez utiliser la commande pie() sans utiliser de tableau de contingence en donnant comme argument x un vecteur avec les comptes de chaque valeur comme ci-dessous

Vous pouvez ajouter l'argument clocwise=T pour changer l'orientation des parts Ici, j'ai ecrit labels=c("Diesel","Electrique", "Essence", "Hybride") mais on aurait pu ecrire egalement labels = names(table(motorisation$type_de_motorisation)) ou labels = sort(unique(motorisation$type_de_motorisation) car unique() retourne chaque occurence/valeur possible de la variable et la fonction sort() les trie par ordre alphanumerique

Enfin, si vous voulez afficher les parts du camembert par ordre croissant, vous pouvez appliquer la fonction sort() sur la valeur obtenue par la commande (table(motorisation$type_de_motorisation))`.

Il s'agit bien d'un barplot (diagramme en batons) adapté a des donnees qualitatives ou quantitatives discrètes et non d'un histogramme adapté a des variables continues

N’hesitez pas à aggrandir votre fenetre d’affichage pour voir les noms sous les batons si vous êtes sur rstudio…ou reduisez leur taille en utilisant l’argument cex.names:

Il est aussi possible d’utiliser barplot avec une matrice comme argument x. Dans ce cas, par defaut avec l’argument beside=F, les élements du diagramme en baton seront empilés.

Si vous voulez les afficher du plus grand au plus petit effectif, ajouter sort() en precisant decreasing=T

=> Version finale pour aller plus loin en integrant des alternatives décrites pour chaque figure et avec les bonnes règles d’affichage du script R:

Vous noterez qu’il est préférable de visualiser les donnees qualitatives, comme ici le type de motorisation, au moyen d’un diagramme en bâtons. Cela vous ai rappele en ‘Note’ dans la fenetre d’aide de la fonction pie!


Exercice 3: représentation graphique de la distribution d’une variable quantitative continue

Tirez aléatoirement un ensemble de 100 nombres compatibles avec une distribution normale de moyenne 10 et d’écart type 5.

Sauvegardez-les dans un objet R.

Tip : fonction recommandée : norm()

Tracez la représentation histogramme des valeurs obtenues.

Tip :fonction recommandée : hist()

Changez le nombre d’intervalles de l’histogramme : environ 5, 50 et 100.

Tip :fonction recommandée : hist() avec l'argument breaks

Tracez également une boite à moustache horizontale de ces data.

Tip :fonction recommandée : boxplot()

Affichez les 3 histogrammes et le boxplot les uns en dessous des autres dans une même fenêtre graphique.

Tip :fonction recommandée : par() avec l'argument mfrow

Je ne vous détaille pas ici chaque graphique, je les empile tout de suite:


Exercice 4: représentations graphiques de données quantitatives

Copiez dans votre environnement le fichier airquality.png disponible avec la commande suivante:

Ouvrez cette image dans le lab en double cliquant dessus.

Récupérez le jeu de données airquality disponible sous R.

Créez les graphes de la figure ci-dessus avec ce jeu de données.

Tip :fonctions recommandées : data(), par() avec les arguments mfrow et mar, plot(), lines(), boxplot(), abline(), lm(), title()

For the boxplots, you could also have generated a factor with names to each level:

IMPORTANT NOTE ON NAMES OF VARIABLES: Here for boxplot as for most R functions, you may enter the name of the dataframe for once with the argument data, and then just put the name of the variables without repeating the name of the dataframe:

Alternatively, you may use attach() to access to the variables of the dataset directly by their name, then enter your commands, and then detach() once finsihed. I don't recommand this last method as we often forget to detach.



Success: Well done! You now know how to create a function and to avoid classical pitfalls.
Caution:
Don't forget to save you notebook and export a copy as an html file as well
- Open "File" in the Menu
- Select "Export Notebook As"
- Export notebook as HTML
- You can then open it in your browser even without being connected to the IFB Jupyter hub!