Vous êtes ici : Accueil > Salle du prof > Il est libre Math > Utiliser R en statistiques
Par : mathazay
Publié : 13 février 2006

Utiliser R en statistiques

Voici un court mémento pour une utilisation professionnelle, en classe ou non, de R, logiciel de statistiques libre, gratuit et multiplateforme.

Bien évidemment, il ne permet pas de résoudre la contradiction [1] des définitions des programmes entre médiane et quantiles, mais au moins offre la possibilité d’en connaître facilement les diverses valeurs ;-)

  1. Demandez le programme
  2. Une série à une variable avec R
  3. Ajustement affine avec la méthode des moindres carrés
  4. Une double série chronologique et sa représentation graphique
  5. Boîte à moustaches et latex
  6. Faire bonne impression

Demandez le programme

Un rappel : pour les séries à une variable discrète, nous avons deux définitions au programme officiel.

- Pour la médiane, c’est la valeur centrale de la série. Si elle n’existe pas (effectif total pair), on prend la moyenne des deux valeurs centrales.
- Pour les quantiles (quartiles, déciles, percentiles...), c’est la première valeur pour laquelle on atteint ou dépasse le quantile à déterminer ; si par exemple 10% de l’effectif total nous donne 26,2 alors le premier décile d1 sera la 27ème valeur ; si 25% de l’effectif total nous donne 26, nous retiendrons la 26ème valeur comme premier quartile Q1.
- Donc, sauf pour la médiane, il n’est pas question d’interpolation : le premier quartile n’est pas la médiane d’avant la médiane, pas plus que le troisième quartile n’est la médiane d’après la médiane. Dans l’autre sens, la médiane n’est pas le cinquième décile ou le cinquantième percentile.
- Les calculs de quantiles ne se font que sur des séries discrètes (normalement, on relève des mesures puis on les regroupe en classe, on dispose donc de la série d’origine).

Conséquence des choix officiels : il n’est pas possible de faire appel à des logiciels automatiques (calculatrice, ordinateur...), qui tous suivent une règle unique, pour obtenir la conformité simultanée de tous les calculs ou leur représentation dans une boîte à moustaches. Pour créer avec R une "bam" conforme au programme : lire Les utilisateurs de Latex peuvent utiliser des macros ayant pour paramètres les valeurs précalculées.

- Pour les boîtes à moustaches (whiskers plot), l’auteure du programme préconise la boîte [min - points isolés - 1er décile - 1er quartile - médiane - 3ème quartile - 9ème décile - points isolés - max]. R (par défaut) ou les calculatrices représentent une boîte courte [min - 1er quartile - médiane - 3ème quartile - max] comme la plupart des usagers. Les boîtes plus complètes servent surtout à mettre en évidence les points isolés pour éventuellement élaguer la série de valeurs douteuses ou aberrantes (outliers). Il existe d’autres variantes des boîtes à moustaches : du 5ème percentile au 95ème percentile (points isolés extérieurs), de (Q1 - 1,5 x Iq) à (Q3 +1,5 x Iq) [2]. Pour créer avec R une "bam" conforme au programme : lire

Un document de l’inspection générale « clarifie » la situation didactique et pédagogique...

Une série à une variable avec R

La boîte à moustaches
- po<-c(35,36,37,38,39,40,41,42,43,44,45,46,47) # la série des pointures
- ef<-c(1,8,9,37,38,21,14,15,22,8,9,3,1) # la série des effectifs
- serie<-rep(po,ef) # la série complète, rep duplique les valeurs selon les effectifs
- serie # pour voir la série
- summary(serie) # les principaux indicateurs
- quantile(serie) # les quantiles en version standard
- quantile(serie,type=1) # les quantiles en version 1... il y en a 9
- quantile(serie,seq(0,1,by=0.1),type=1) # les déciles en version 1
- boxplot(serie,axes=FALSE,type=1,horizontal=TRUE) # la boite à moustaches horizontale
- box() # on lui donne son encadrement
- axis(1,35:47) # on lui donne l’axe horizontal (1) gradué de 35 à 47
- sr<-c(serie,30,31,50) # on complète la série avec des valeurs extrêmes ou aberrantes
- sort(sr) # un tri croissant de la nouvelle série
- boxplot(serie,sr,outline=T) # deux boites et affichage des points extrêmes
Bam avec points isolés
- sqrt(mean(rep(po^2,ef))-mean(serie)^2) # pour obtenir l’écart-type, et non sd(serie)
Histogramme à classe égales
- hist(serie,axes=F) # un histogramme à classes égales
- axis(1,35:47)
- axis(2)
L'histogramme à classes inégales
- hist(serie, br=c(35,38,42,47), axes=F, main="Histogramme", ylab="densité", xlab="pointures")
- axis(1,35:47)
- axis(2) # pour un histogramme à classe inégales avec des étiquettes contrôlées

Ajustement affine avec la méthode des moindres carrés

L'ajustement affine
Les lignes à taper dans R [3] :
- age<-c(1,2,3,4,5) # x-série
- cout<-c(13.3,14.2,16.1,18.9,23.6) # y-série
- Maf<-lsfit(age,cout) # matrice d’ajustement : lsfit
- names(Maf) # ce que contient cette matrice
- Maf$residuals # par exemple les résidus
- MafEst<-Maf$coefficients[1]+Maf$coefficients[2]*age # la série des estimations
- par(mfrow=c(1,2),ask=T) # découpage de la fenêtre graphique en 1 ligne et 2 colonnes, c’est pas obligatoire, évidemment
- plot(age,cout,pch=21,bg="yellow",ylim=c(12,24)) ; abline(Maf$coefficients,col="green") ; title("Nuage et Ajustement Affine") # la première partie de la représentation graphique
- plot(age,Maf$residuals,type="h",col="red", ylim=c(-1.5,1.5)) ; abline(h=0) ; title("Residus Age") # l’affichage des résidus

Pour un ajustement avec changement de variable, il suffit d’appliquer le dit changement sur la série choisie puis d’effectuer l’ajustement et enfin le changement inverse si nécessaire :

- Mln<-lsfit(age,log(cout)) # ajustement sur la série des log népériens : ln(cout)=a*age+b ; attention, certains logiciels écrivent toujours log le logarithme népérien.

Série chronologique double [4]

Série chrono double
- x<-c(1,2,3,5,8,13) # la première série
- y<-c(5,2,8,6,15,7) # la seconde
- double<-matrix(c(x,y),nr=6,nc=2) # l’assemblage des deux
- chrono<-ts(double,start=1998) # le chronomètre
- ts.plot(chrono,type="b",xlab="années") # la représentation graphique avec points et traits de liaison (both)

Bonne impression


Pour terminer, la commande d’exportation en pdf :
- pdf("pie.pdf",width=7,height=7) # nom du fichier : pie.pdf, dimensions 7 pouces au carré
- cand<-c("A","B","C","D","E","F") # les noms des candidats
- angl<-c(43.2,57.6,43.2,64.8,104.4,46.8) # leur pourcentage
- pie(angl,label=cand,col=rainbow(10)) # le diagramme en disque
- dev.off() # l’impression du fichier

Boîte à moustaches et latex

Boîte en latex
La macro d’Éric Depardieu, voir son site, est en pièce jointe. Il faut effectuer quelques réglages de valeurs, pour l’axe horizontal en particulier.

La page est codée en windows-latin1. S’il y a un problème de codage, il est possible de la recoder avec les logiciels ad-hoc (mon capitaine :o)

Documents joints

Notes

[1Contradiction didactique : l’élève est amené à faire des confusions et risque d’en être pénalisé à l’évaluation par des collègues soucieux d’exactitude. Ce n’est évidemment pas l’intention des responsables de ce programme.

[2Iq : interquartile (Q3-Q1)

[3Partiellement repris d’un document de Hubert RAYMONDAUD ; LEGTA Louis GIRAUD à SERRES et de recherches sur des listes d’utilisateurs de R

[4Merci Jérôme Caré