Prise en main du logiciel R - reymarlioz
Transcription
Prise en main du logiciel R - reymarlioz
Prise en main du logiciel R Thomas Rey Avril 2007 R est un logiciel libre permettant d’effectuer des calculs et de tracer des graphiques à partir de données statistiques. On peut le télécharger gratuitement sur internet à l’adresse suivante : http ://www.R-project.org. Contrairement à un tableur, pour effectuer des calculs, il faut écrire des « lignes de commandes » dans une « console ». Ceci peut paraître effrayant au premier abord, mais on apprécie rapidement ce mode de fonctionnement inhabituel1 . Au démarrage de R, vous obtenez une fenêtre comme dans la figure 1 : vous pouvez alors commencer à donner des ordres au logiciel. Fig. 1 – Fenêtre de démarrage 1 Saisir des données 1.1 Saisie directe Pour saisir des données, on n’utilise pas une feuille de calculs comme dans un tableur. Chaque série statistique (liste de nombre par exemple) sera rentrée dans une variable2 appelée « vecteur ». Un élève veut saisir les notes obtenues en devoir au cours des deux premiers trimestres dans le vecteur notes. Il écrit dans la fenêtre3 du logiciel : 1 Pour les adeptes des « cliquodromes ». C’est-à-dire une ou plusieurs lettres, par exemple notes ou age ou . . .. 3 Qu’on appelle « console » 2 1 notes<-c(5,10,12,14.5,8) (le c signifie « création »). Suite à une contestation n’ayant pas lieu d’être, le professeur retire 1 point au cinquième devoir. Pour modifier cette cinquième note, l’élève écrit dans la console : notes[5]<-7 ou encore notes[5]<-notes[5]-1. On vérifie en écrivant : notes. Pour ajouter une note à la série, on écrit notes<-c(notes,13) Pour ramener toutes les notes sur 10, il suffit de diviser le vecteur par 2 : notes<-notes/2 Pour chaque devoir, le professeur attribue une note de soin et rédaction sur 2 points. On saisit les six notes dans le vecteur soin : soin<-c(1,0.5,2,1.5,1,2) On obtient la note totale sur 12 en additionnant les notes sur 10 et sur 2 : notesdef<-notes+soin. On vérifie en écrivant notesdef On peut aussi modifier certaines valeurs d’un vecteur dans un tableau en entrant la commande : data.entry(notesdef). On obtient alors une fenêtre du type4 de la figure 2. On peut alors supprimer, ajouter ou modifier des valeurs. Fig. 2 – Fenêtre de modification des données 1.2 Lecture dans un fichier Il est parfois plus commode de saisir les données dans un fichier à l’aide d’un éditeur de texte. On peut utiliser l’éditeur de son choix5 ou celui fourni dans le logiciel R dans le menu Fichier, choisir Nouveau document. Vous ouvrez donc un fichier et saisissez vos valeurs séparées par des « ; ». Enregistrez sous mesdonnees.dat par exemple. Pour connaitre le répertoire dans lequel travaille le logiciel R, écrivez dans la console : getwd() qui signifie « obtenir le répertoire de travail (working directory) ». On peut changer ce répertoire de travail par la commande : setwd("C:Mes documents/data") par exemple6 . Pour mettre dans la variable mydata les données saisies dans le fichier, il suffit alors d’écrire la commande : mydata<-scan("mesdonnes.dat",sep=";") Ce type de saisie des données est pratique lorsqu’on récupère les données à partir d’un autre logiciel (mesures de physique, données récupérées sur internet,. . .) 4 dépendant du système d’exploitation de votre ordinateur. Wordpad est un éditeur de texte fourni dans windows 6 Le menu « Divers » permet aussi de sélectionner le répertoire de travail en cliquant ! 5 2 2 Statistiques à une variable 2.1 Sans les effectifs On considère qu’on a une série statistiques de n valeurs numériques stockées dans une variable mydata Voici quelques commandes permettant d’obtenir certains paramètres : Commande length(mydata) min(mydata) max(mydata) sum(mydata) mean(mydata) median(mydata) var(mydata) sd(mydata) quantile(mydata,.25,type=1) quantile(mydata,.75,type=1) quantile(mydata,.1,type=1) quantile(mydata,.9,type=1) summary(mydata) Remarque : en fait, pour obtenir le « vrai7 q Paramètre obtenu Nombre de valeurs dans la série Valeur minimale de la série Valeur maximale de la série Somme de toutes les valeurs de la série Moyenne de la série Médiane de la série Variance de la série Écart-type de la série Premier quartile Troisième quartile Premier décile Neuvième décile Donne les principaux paramètres » écart-type il faut multiplier sd(mydata) par n−1 . n Le logiciel donne ici l’écart-type estimé d’une population à partir d’un échantillon de la population. Pour remédier à cela, on peut créer la fonction ecarttype comme ceci : ecarttype<-function(S) + {sd(S)*sqrt((length(S)-1)/length(S))} (Le « + » du début de ligne n’est pas à recopier) Puis on l’appelle en écrivant la commande : ecarttype(mydata) 2.2 Avec les effectifs Dans le cas d’une série statistique donnée sous forme d’un tableau d’effectifs : Notes Effectifs 2 3 5 1 8 4 12 7 15 9 On place dans une variable valeurs les valeurs du caractère de la série et dans une variable effectifs les effectifs correspondants. On créé alors une nouvelle série appelée par exemple mydata à l’aide de la commande : mydata<-rep(valeurs,effectifs) On obtient alors une série où chaque valeur apparait autant de fois que son effectif l’indique. On peut alors appliquer toutes les commandes vues dans la partie 2.1. v u p u X 7 Celui dont vous avez la définition dans votre cours de première : σ = t N1 ni (xi − x)2 i=1 3 2.3 Graphiques 2.3.1 Histogramme On reprend la série mydata de la partie 2.2. On écrit la commande suivante (sur une seule ligne) : hist(mydata,col=250,density=30,main=paste("Histogramme de la série"), xlab=paste("Notes"),ylab=paste("Effectifs")) où : col=250 définit la couleur, density=30 définit le pourcentage de remplissage des rectangles, xlab=paste("Notes") définit la légende sous l’axe horizontal,. . . Cet histogramme est présenté sur la figure 2.3.1. Répartition des sauts 8 effectif 6 0 0 2 2 4 4 Effectifs 6 10 12 8 14 Histogramme de la série 2 4 6 8 10 12 14 16 0 Notes 2 4 6 8 saut en m Fig. 3 – Histogrammes Pour connaître le détail de tous les paramètres possibles, il suffit d’écrire dans la console la commande help(hist). Ceci est d’ailleurs vrai pour toutes les commandes. Autre exemple : On donne ci-dessous les résultats à une épreuve de saut en longueur de 30 candidats : 5.45 3.65 7.05 4.65 5.40 4.85 4.25 4.70 6.50 6.30 7.10 2.55 3.95 4.70 5.15 6.80 5.25 4.90 5.00 4.95 5.75 4.80 6.15 4.60 4.35 7.45 6.25 4.45 4.45 5.00 On souhaite effectuer un regroupement en classes afin de dresser un histogramme à pas constant. Après avoir saisi les données dans le vecteur saut, on définit les classes dans un vecteur classes. classes<-c(0,1,2,3,4,5,6,7,8,9) Pour obtenir l’histogramme (voir figure ), on écrit la commande : hist(saut, classes, col=gray(seq(0,1,length=8)), main="Répartition des sauts" , xlab="saut en m", ylab="effectif") gray(seq(0,1,length=8)) permet de colorier chaque rectangle en une nuance de gris différente entre le noir (gray(0)) et le blanc (gray(1)). 2.3.2 Diagrammes circulaires ou en bâtons Voici un tableau précisant le montant des exportations de la France par régions du monde destinataires (en milliards d’euros courants en 2005). (Source : http ://www.insee.fr) Destinataires Montant UE - zone euro 181 UE - hors zone euro 52 OCDE (hors UE) 56 Reste du monde 68 4 On créé les vecteurs contenant les données : destin<-c("UE-euro","UE-autres","OCDE","Reste") montants<-c(181,52,56,68) On trace le diagramme circulaire : pie(montants,destin,col=gray(seq(0,1,length=4)), main="Exportations françaises") On obtient tout aussi facilement un diagramme en barres : barplot(montants,legend=destin,col=gray(seq(0,1,length=4)) ,main="Exportations françaises",ylim=c(0,200)) Les résultats obtenus sont présentés sur la figure 4. Exportations françaises 200 Exportations françaises UE−euro UE−autres OCDE Reste 100 150 UE−euro UE−autres 50 Reste 0 OCDE Fig. 4 – Diagrammes circulaires ou en bâtons 2.3.3 Boites à moustaches On reprend la série statistique saut étudiée dans la partie 2.3.1. La boîte à moustaches « traditionnelle » est obtenue par la commande boxplot(saut) : les moustaches sont alors les valeurs extrêmes de la série. Ceci ne correspond pas à la définition vue en classe où les moustaches sont les premier et neuvième déciles. C’est par contre la boîte à moustaches obtenue à l’aide de votre calculatrice. Pour tracer les boîtes à moustaches « à la française », on peut faire appel à des fonctions créées par J.P. Gerbal, (un prof de maths) mises en ligne sur son site (http ://mathazay.free.fr/spip). Voici la marche à suivre : – Télécharger8 le fichier sauveR ou le recopier (voir la fin de ce document). – Le charger dans la console R par la commande load("sauveR"). – Écrire la commande bxp(fbam(saut)) Les résultats sont présentés sur la figure 5. 3 Statistiques à deux variables 3.1 Les données et paramètres Dans cette partie on considère une série statistique à deux variables x et y. Pour obtenir toutes les valeurs dans un seul tableau noté z, on peut écrire la commande z<-data.frame(x,y) La série x est alors obtenue par la commande z[,1] (On demande la première colonne). La série y est alors obtenue par la commande z[,2] (On demande la deuxième colonne). La 3e valeur de la série x est obtenue par la commande z[3,1] (3e ligne et 1re colonne). 8 Il sera dans la rubrique « Pour tous » du site http ://reymarlioz.free.fr 5 Boxplot traditionnelle Boxplot française 7 ● ● 5 4 6 5 4 6 7 ● 3 3 ● ● Fig. 5 – Boîtes à moustaches La covariance de la série est obtenue par la commande cov(x,y) avec la même différence que pour le calcul de l’écart-type d’une série à une variable : pour obtenir le même résultat qu’avec la définition du cours, il faut multiplier ce résultat par n−1 . n On peut donc définir une nouvelle fonction nommée cova par : cova<-function(S,T) +{cov(S,T)*(length(S)-1)/length(S)} (le « + » du début de ligne n’est pas à recopier) Pour obtenir la « vraie » covariance, on appelle alors la commande cova(x,y). 3.2 Les graphiques On construit le nuage de points par la commande plot(x,y) ou plot(z). On peut placer le point moyen par la commande points(mean(x),mean(y),col="red") La droite de régression9 est obtenue par la commande abline(lm(y~x)). Exemple : Le tableau suivant donne un indice de consommation électrique de chauffage en fonction de la température extérieure : Température extérieure xi en ◦ C Consommation yi −5 152 −3 144 −1 120 +2 116 +5 100 +7 80 +10 60 +13 48 Le nuage de points, le point moyen et la droite des moindres carrés sont tracés sur la figure 6 par les commandes suivantes : plot(temp,chauf,xlab="Température extérieure",ylab="Indice de consommation électrique") points(mean(temp),mean(chauf),col="red") abline(lm(chauf~temp),col="red") title("Consommation et température") 4 Simulation Pour effectuer une simulation quelconque, on a besoin de nombres aléatoires. La fonction permettant d’obtenir de tels nombres est sample(). Voici quelques exemples d’utilisation de cette fonction : sample(1:10) renvoie un nombre aléatoire entier compris entre 1 et 10 inclus. Si x est un vecteur et n un entier : – la commande sample(x) renvoie une permutation de x c’est à dire que les composants du vecteur x sont « mélangés » dans un ordre aléatoire. 9 Appelée aussi droite des moindres carrés 6 Consommation et température 120 140 ● ● 100 ● ● 80 ● ● 60 Indice de consommation électrique ● ● ● −5 0 5 10 Température extérieure Fig. 6 – Statistiques à deux variables Par exemple on a 20 chevaux numérotés de 1 à 20. Une simulation d’arrivée de course est obtenue par la commande : chevaux<-seq(1,20);sample(chevaux) ; – la commande sample(x,n) (où n est inférieur ou égal à la dimension de x) renvoie un arrangement de n termes pris dans x. C’est à dire qu’on obtient un vecteur de n composants du vecteur x sans que celles-ci puissent être répétées. Par exemple x<-seq(1:49);sample(x,6) renvoie un tirage de six numéros parmi 49 (tirage de loto sans complémentaire) ; – la commande sample(x,n,replace=T) effectue la même chose mais « avec remise » ; c’est à dire qu’une même valeur peut apparaître plusieurs fois. Par exemple on simule trois lancers d’une pièce de monnaie en notant « pile » ou « face » par la commande : piece<-c("pile","face");sample(piece,3,replace=T). 4.1 Lancer de deux dés On souhaite connaître la répartition des sommes obtenues en additionnant les chiffres présents sur la face supérieure de deux dés à six faces non truqués. On commence par « créer » notre dé : dé=seq(1,6) Pour simuler un jet de deux dés, et afficher la somme, la commande est : sample(dé,1)+sample(dé,1) On souhaite réitérer cette expérience 50 fois. Les différentes sommes vont être stockées dans un vecteur appelé résultat qu’on va « vider » par la commande résultats<-c(). Pour répéter plusieurs fois la même expérience, on utilise la commande for dont la structure est « classique » pour qui a déjà entendu parler d’un langage de programmation : for(i in 1:50){résultats<-c(résultats,sample(dé,1)+sample(dé,1))} Cette ligne peut se traduire par : « pour i variant de 1 à 50, ajoute dans le vecteur résultats la somme du tirage aléatoire de deux dés ». On peut alors afficher les résultats obtenus par la commande résultats. Ces données ne sont pas simples à exploiter, pour les regrouper par classe, on peut utiliser la commande table(résultats). Pour effectuer plusieurs fois de suite la même expérience de 50 lancers, on peut même écrire toutes ces commandes séparées par des ; sur une seule ligne ; ainsi pour répeter l’expérience, il 7 suffit alors de « remonter » d’une ligne avec la flèche du haut du clavier et appuyer à nouveau sur Entrée : résultats<-c();for(i in 1:50){résultats<-c(résultats,sample(dé,1)+ sample(dé,1))};résultats;table(résultats) On peut même obtenir l’histogramme de la série par la commande : hist(résultats,seq(2,12),col=gray(seq(.3,1,length=11))) Ou le diagramme en bâtons par : plot(table(résultats)) 5 Compléments 8 Table des matières 1 Saisir des données 1.1 Saisie directe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Lecture dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 Statistiques à une variable 2.1 Sans les effectifs . . . . . . . . 2.2 Avec les effectifs . . . . . . . . 2.3 Graphiques . . . . . . . . . . 2.3.1 Histogramme . . . . . 2.3.2 Diagrammes circulaires 2.3.3 Boites à moustaches . . . . . . . 3 3 3 4 4 4 5 3 Statistiques à deux variables 3.1 Les données et paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Les graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 4 Simulation 4.1 Lancer de deux dés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 5 Compléments 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ou en bâtons . . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .