Introduction aux statistiques et à l'utilisation du logiciel R Master 2 GPSA 1 Michel Visalli - michel.visalli@dijon.inra.fr
Sommaire Présentation du logiciel... 3 A propos de R?... 3 Installation... 3 Environnement (RGUI)... 3 Fenêtre principale... 3 Répertoire de travail... 3 Session... 3 Package... 4 RCommander... 4 Script... 5 Language... 5 Types de données... 5 Règles d'écriture... 6 Exercice... 6 Statistiques descriptives... 8 Mise en place du jeu de données... 8 Résumés numériques... 9 Résumés graphiques... 9 Graphe indexé... 9 Histogramme... 9 Diagramme tiges et feuilles... 10 Boites à moustache (boxplot)... 10 Graphe quantile-quantile... 10 Nuage de points... 10 Matrice des nuages de points... 10 Graphe XY conditionnel... 10 Graphe des moyennes... 10 Graphe en bande... 10 Utilisation du package SensoMineR... 10 Introduction aux tests statistiques... 11
Présentation du logiciel A propos de R? R est un langage de programmation multi-plateformes (Windows, Linux, MacOS X) et un environnement mathématique utilisé pour le traitement de données et l'analyse statistique. R est enrichi par des packages, qui permettent de couvrir un très large champ de méthodes statistiques (notamment la sensométrie). R est un logiciel libre (accès au code source) et gratuit. Installation Télécharger le logiciel depuis le site : http://cran.r-project.org/ (choisir la version en fonction du système d'exploitation). Remarque : plusieurs versions de R peuvent co-exister sur un même ordinateur. Environnement (RGUI) Fenêtre principale Barre de menu Barre d'outils Console Répertoire de travail R lit et écrit les données dans un répertoire de travail (par défaut, dans le répertoire Mes Documents, utiliser la commande getwd() pour savoir où il se situe). Pour changer de répertoire de travail, dans la barre de menu, sélectionner Fichier > Changer le répertoire courant (ou taper dans la console la commande setwd()). Session Les données créées au cours d'une session sont temporaires (jusqu'à la fermeture de R), et sont stockées dans un fichier.rdata dans le répertoire de travail. Pour sauvegarder (charger) une session, dans la barre de menu, sélectionner Fichier > Sauver (Charger) l'environnement de travail (ou utiliser les commandes save() et load()). 3
Les commandes utilisées au cours d'une session sont temporaires, et sont stockées dans un fichier.rhistory dans le répertoire de travail. Pour sauvegarder (charger) l'historique des commandes, dans la barre de menu, sélectionner Fichier > Sauver (Charger) historique des commandes (ou utiliser les commandes savehistory() et loadhistory()). Lorsque l'on quitte le logiciel, celui-ci demande si on veut sauvegarde les données et l'historique des commandes. Package RBase est constitué d'un certain nombre de fonctions. On peut enrichir les fonctions de base de R grâce à des packages écrits par différents contributeurs. Pour installer un package, dans la barre de menu, sélectionner Packages > Installer le(s) packages..., puis sélectionner un miroir dans la liste (par exemple, France (Toulouse)). Sélectionner ensuite le package voulu parmi la liste, et valider en cliquant sur OK. Pour un installer un package sans passer par le site officiel, sélectionner Packages > Installer le(s) packages depuis des fichiers zip..., puis sélectionner le fichier sur l'ordinateur. Pour mettre à jour les packages déjà chargés, dans la barre de menu, sélectionner Packages > Mettre à jour les packages..., et valider en cliquant sur OK. Une fois installé, pour utiliser le package le temps de la session, il faut le charger : dans la barre de menu, sélectionner Packages > Charger le package..., sélectionner le package voulu, et valider en cliquant sur OK (ou saisir la commande library(nom_du_package) dans la console). RCommander Rcmdr est une interface graphique qui permet d utiliser R sans se soucier de (la plupart) des commandes de base. Pour installer Rcmdr, dans la barre de menu, sélectionner Packages > Installer le(s) packages..., puis sélectionner un miroir dans la liste (par exemple, France (Toulouse)). Sélectionner ensuite le package Rcmdr parmi la liste, et valider en cliquant sur OK. Charger le package Rcmdr en saisissant library(rcmdr) dans la console. A ce stade, R peut demander à installer des packages supplémentaires. La fenêtre de l interface graphique Rcmdr s ouvre :
Les commandes lancées par les actions sur R Commander s'affichent dans la Fenêtre de script, alors que les résultats de ces commandes s'affichent dans la fenêtre de sortie. Script Les commandes utilisées peuvent être utilisées pour créer un nouveau script (une suite de commandes R). Le script permet, comme le fichier RHistory, de sauvegarder une suite de commandes R en vue de pouvoir les exécuter à nouveau. Pour exécuter une commande depuis un script, sélectionner la ligne et cliquer sur Soumettre ou CTRL + R. Pour exécuter l'ensemble du script, sélectionner toutes les lignes et cliquer sur Soumettre, ou saisir dans la fenêtre de script : source("script.r"). Language Types de données Constantes pi Inf NA (valeur manquante) NaN (Not A Number, ex 1/0) NULL TRUE FALSE Opérateurs Arithmétiques (renvoie un nombre) Addition : 10+3 Soustraction : 10-3 Multiplication : 10*3 Division : 10/3 Puissance : 10^3 Division entière : 10%%3 Reste de la division : 10%/%3 De comparaison (renvoie un booléen - TRUE / FALSE) Inférieur : < Supérieur : > Inférieur ou égal : <= Supérieur ou égal : >= Egal: == Différent!= Assignation (affecte une valeur à une variable) <- ou = Indexation (accède à une valeur particulière d'un objet) [ $ 5
Logique (renvoie un booléen - TRUE / FALSE) Objets Et : & Non :! Ou : Vecteur (vector) : un vecteur numérique, logique ou de alphanumérique (ex : les notes d'un juge, les réponses à un questionnaire, les codes des juges). Fonctions R associées : class(), mode(), nlevels(), levels(). Facteur (factor) : un vecteur qui peut prendre sa valeur dans un ensemble fini de modalités (ex : le sexe d'un juge). Fonctions R associées : class(), mode(), length(). Matrice (matrix) : une matrice de n lignes et p colonnes valeurs de même type (ex : les notes de l'ensemble du panel). Fonctions R associées : class(), mode(), dim(), length(). Tableau de données (data.frame) : un tableau composé de vecteurs de même dimension, mais qui peuvent avoir des types différents (ex : un tableau avec les codes des juges et leurs notes). Fonctions R associées : class(), mode(), dim(), str(). Liste (list) : une structure qui peut contenir simultanément les différents types d'objets précédents. Fonctions Un appel à une fonction renvoie un résultat. Pour appeler une fonction, saisir son nom un ou plusieurs arguments entre parenthèses, ex : log(10). On peut passer les arguments d'une fonction : en les nommant, ex : log(x=4, base=2) en respectant l'ordre, ex : log(4,2) en panachant, ex : log(4, base=2) Pour obtenir de l'aide sur une fonction, dans la barre de menu, sélectionner Aide > Aide html. L'aide s'affichera alors dans un navigateur. Dans la console, utiliser les commandes help.search(), help(), example() et vignette(). Règles d'écriture Les lignes commençant par le caractère # sont des commentaires (elles ne sont pas exécutées) R ne tient pas compte des espaces entre les éléments d'une commande. R fait la différence entre les majuscules et les minuscules. Le nom d'un objet doit commencer par une lettre. Certains caractères ne sont pas autorisés pour nommer les variables. Sont utilisables les lettres (majuscule, minuscule), les chiffres, le tiret bas et le point. Certains noms sont réservés pour R et ne doivent pas être utilisés : Inf, NA, NaN, NULL, TRUE, FALSE... Le caractère point-virgule peut être utilisé pour séparer plusieurs commandes sur une même ligne. Exercice Changer le répertoire de travail (RCommander : Menu Fichier > Changer le répertoire de travail). Installer les packages SensoMineR et FactoMineR (RGUI : Menu Packages > Installer le(s) package(s)). Installer si nécessaire RCommander, puis lancer le en saisissant la commande suivante : library(rcmdr)
Dans la fenêtre de script RCommander, saisir le commentaire suivant : # TD1 - Prise en main de R puis valider en cliquant sur entrée ou en cliquant sur le bouton Soumettre. Sauvegarder le script (Fichier > Sauver le script sous) sous le nom TD1.R Dans la fenêtre de script RCommander, saisir les vecteurs de notes des juges comme suit : notes_juge1 = c(7,6,4) notes_juge2 = c(5,3,4) notes_juge3 = c(6,5,6) is.vector(notes_juge1) Concaténer les vecteurs notes en une matrice comme suit : notes_panel = rbind(notes_juge1, notes_juge2) is.matrix(notes_panel) Obtenir la taille de la matrice : dim(notes_panel) Obtenir de l'aide sur la fonction dim : help(dim) ou?dim Définir les noms de colonne et de lignes de la matrice : colnames(notes_panel) = c("p1", "P2", "P3") rownames(notes_panel) = c("j1", "J2", "J3") Obtenir les notes pour le produit P1 : notes_panel[,1] ou notes_panel$p1 Obtenir les notes pour le juge J1 : notes_panel[1,] ou notes_panel$j1 Obtenir la note du juge J1 pour le produit P2 : notes_panel[1,2] Obtenir la matrice logique des notes supérieures à 6 : notes_panel>6 Rappeler la dernière commande : appuyer sur la flèche haut. Manipuler les données depuis le menu RCommander : sous la barre de menu, cliquer sur la case rouge "Pas de données", et choisir dans la liste déroulante le jeu de données notes_panel qui deviendra le jeu de données actif. Visualiser les données en cliquant sur le bouton Visualiser. Cliquer sur le bouton Editer, puis modifier la 2e note du 3e sujet. Ajouter un 4e sujet. Ajouter une nouvelle variable MoyenneJuge (Données > Gérer les variables dans le jeu de données actif > Calculer une nouvelle variable, Nom de la nouvelle variable = MoyenneJuge, Expression à calculer = (P1 + P2 + P3)/3). Exporter les données à partir du menu Données > Jeu de données actif > Exporter le jeu de données actif. 7
Enregistrer dans le répertoire courant les données modifiées en tant que fichier séparé par des points-virgules (test_td1.csv). Sauvegarder le script (Fichier > Sauver le script) l'environnement (Fichier > Sauver l'environnement R), puis quitter R (Fichier > Sortir > Fermer Commander et R). Vérifier que le répertoire courant contient bien un fichier.rhistory et un fichier.rdata. Lancer R à nouveau, puis rappeler l'environnement (Fichier > Charger l'environnement de travail). Lancer R Commander. Rappeler le script TD1.R (Fichier > Ouvrir un script, puis Soumettre ou saisir source("td.r") dans la fenêtre de script RCommander). Statistiques descriptives Les statistiques descriptives ont pour but de représenter les données sous une forme la plus synthétique possible, grâce : à des résumés numériques à des représentations graphiques Cette première phase d analyse est souvent effectuée descripteur par descripteur : on parle d analyse univariée. Elle va permettre de repérer des données suspectes, de détecter l existence de sous-groupes, de vérifier la symétrie des données, Mise en place du jeu de données Le jeu de données "vins.txt" concerne 3 vins, notés 2 fois par 49 juges sur des critères descriptifs (familiarité, arômes, harmonie, équilibre, persistance, puissance) et hédonique (liking). Le sexe du juge est également indiqué. Importer le jeu de données à partir du fichier "vins.txt" (Données > Importer des données > depuis un fichier texte..., Nom du tableau de données = vins, Séparateur de champs = Tabulations, Séparateur décimal = Point. Vérifier que "vins" est bien le jeu de données actif. Les données sont-elles appariées? Le panel est-il équilibré? Qu'est ce qu une variable qualitative (facteur)? Quelles variables du jeu de données peuvent être considérées comme des facteurs? Convertir ces données en facteurs (Données > Gérer les variables dans le jeu de données actif > Convertir des variables numériques en facteurs, Niveaux = Utiliser les nombres).
Résumés numériques Qu'est ce qu une variable quantitative? Quelles sont les variables quantitatives du jeu de données? Décrire le jeu de données (Statistiques > Résumés > Jeu de données actif). Résumer les données numériques (Statistiques > Résumés > Statistiques descriptives). Quelle variable a obtenu la plus haute note moyenne? Le plus grand écart-type? Que représente les quantiles? Résumer les données de Liking par juge, produit, sexe, répétition (Statistiques > Résumés > Statistiques descriptives, puis Résumer par groupe). Quelle juge a décerné la plus haute note sur l'ensemble des produits? Quel juge a mis le plus de variabilité dans ses notes? Quel produit a été préféré? La répétition a-t-elle eu une influence sur la note moyenne? Les hommes donnent-ils de meilleures notes aux vins? Les affirmations précédentes sontelles statistiquement significatives? Aggréger les données de Liking par produit et répétition (Données > Jeu de données actif > Aggréger les données dans le jeu de données actif, Variables à aggréger = Liking, Aggrégation par = Produit + Répétition, Statistique = Moyenne). Un nouveau jeu de données "AggregatedData" a été créé, avec les notes moyennes de préférence des produits par répétition. Y-a-t'il un effet de la répétition sur la préférence des produits? Qu'est ce que le coefficient de variation? Ecrire dans la fenêtre de script une fonction qui calcule le CV, puis l'appliquer à la note de Liking de P1 comme suit : CoefVar = function(x) { cv = sd(x) / mean(x); return(cv); } CoefVar(vins$Liking[vins$Produit=="P1"]) Qu'est ce que l'étendue? Ecrire dans la fenêtre de script une fonction qui calcule l'étendue, puis l'appliquer à la note de Liking de P1 comme suit : Etendue = function(x) { et = max(x) / min(x); return(et); } by(vins$liking,vins$juge, Etendue) Qu'est-ce que la médiane? Calculer la médiane des note de Liking par produit pour comme suit : by(vins$liking,vins$produit, median) Comparer les médianes aux moyennes. Quel est l'avantage de la médiane par rapport à la moyenne? Résumés graphiques Graphe indexé Sélectionner les notes de Liking du vin P1 (Données > Jeu de données actif > Sous-ensemble, Variables : Liking, Expression de sélection : Produit == "P1", Nom du nouveau tableau de données = LikingP1) : Obtenir un aperçu global des notes de Liking du vin P1 (Graphes> Graphe indexé). Histogramme Tracer l histogramme des notes de Liking de P1 (Graphes > Histogramme, Variable = Liking, Nombre de classes = auto, Echelle des axes = Pourcentages). Décrire la distribution. 9
Enregistrer le graphique (clic-droit sur l'histogramme, puis Sauver comme... ou Graphes > Sauver le graphe > comme... ) dans le répertoire de travail. Modifier le graphique. Changer le titre, les axes, les limites, la taille des caractères en modifiant dans la fenêtre de script la dernière fonction utilisée : Hist(LikingP1$Aromes, scale="frequency", breaks="sturges", col="darkgray", main="nouveau titre", xlab="axe des X", ylab="axe des Y", ylim=c(0,20), xlim=c(0,12), cex=1.2) On peut également modifier le graphique en utilisant les fonctions R : points(), text(), lines(), abline(), axis(), legend(), title(), mtext(),... Diagramme tiges et feuilles Tracer le diagramme tiges et feuilles (Graphe > Graphe tige et feuille, Variable = Liking, Style de division des tiges = Chiffre de tiges répétés). Comment interpréter ce graphique? Boites à moustache (boxplot) Sélectionner à nouveau "Vins" comme jeu de données actif. Tracer la boite à moustache des notes de Liking par produit (Graphe > Boite de dispersion, Variable = Liking, Identifier les extrêmes à la souris, Graphe par groupe - Produit). Comment interpréter ce graphique? Que remarque-t-on? Identifier le sujet et corriger la valeur en la remplaçant par NA. Graphe quantile-quantile Tracer le graphe quantile-quantile des notes d'aromes (Graphe > Graphe quantile-quantile, Variable = Aromes, Distribution normale, Identifier les extrêmes à la souris). Que remarque-t-on? Nuage de points Tracer le nuages des points des notes de Liking en fonction d'aromes (Graphe > Nuage de points, Variable x = Liking, Variable y= Aromes). Décrire le résultat obtenu. Matrice des nuages de points Tracer la matrice des nuages des points des notes (Graphe > Matrice de nuages de points, Variable = toutes, Sur la diagonale = Histogramme). Décrire le résultat obtenu. Graphe XY conditionnel Tracer le graphe XY conditionnel (Graphe > Graphe XY conditionnel, Variable explicatives = toutes sauf Liking, Variables réponses = Liking, Groupe = Produit). Décrire le résultat obtenu. Graphe des moyennes Tracer le graphe des moyennes (Graphe > Graphe des moyennes, Facteur = Produit, Variable réponse = Liking, Barres d'erreur = Erreurs standard). Essayer les autres barres d'erreur. Que remarque-t-on? Graphe en bande Tracer le graphe en bande (Graphe > Graphe en bande, Facteur = Produit, Variable réponse = Liking, Barres d'erreur = Erreurs standard). Utilisation du package SensoMineR Le package SensoMineR propose des fonctions supplémentaires. Installer le plugin SensoMineR (RcmdrPlugin.SensoMineR), puis le charger dans RCommander (Outils > Charger des plugins Rcmdr > RcmdrPlugin.SensoMineR). RCommander va alors redémarrer. Tracer la boite à moustache des variables par produit (SensoMineR > CharacterizationProduct > BoxPlot by product, Variables = toutes, Variable of interest = Produit). Faire la même chose par sexe, juge, répétition.
Tracer l'histogramme des variables par descripteur (SensoMineR > functions > Histogram by descriptors, Descriptors = tous). A quoi correspondent les 2 courbes sur les histogrammes? Fermer le jeu de données "vins", importer le fichier "gateaux_chocolats.csv" et caractériser au mieux les données. Introduction aux tests statistiques Afin d'effectuer une épreuve de discrimination de deux produits alimentaires, on met en place un jury de 12 personnes, aptes à juger dans le domaine, afin de vérifier qu il est difficile, voire presque impossible, de différencier du point de vue de l acidité deux yaourts P1 et P2. Dans l épreuve triangulaire, on propose au jury d'écarter d'un lot de trois éléments celui qui leur paraît différent des deux autres. Quelle est la probabilité de détecter le produit différent des deux autres? Qu est ce que l hypothèse nulle H0? Préciser H0 et H1 dans le cas particulier du test de différence. Compléter le tableau suivant avec les termes : risque de première espèce alpha, risque de deuxième espèce beta, puissance : H0 acceptée H1 acceptée H0 vraie H1 vraie Préciser le modèle statistique du test de différence. Déterminer la région critique (zone de rejet de H0) qui permet de prendre la décision pour le test, au risque alpha = 0.05, puis 0.10. Tracer le graphique de la distribution binomiale : Distributions > Distributions discrètes > Distribution binomiale > Graphe de la distribution binomiale, Nombre d'essais = 12, Probabilité de succès = 0.33. Qu est ce que la p-value? Comment s interprète-telle? Déterminer la p-value de l exemple précédent, en supposant que 8 des juges aient correctement identifié l'échantillon différent. 11