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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.