TP sur les statistiques descriptives avec le logiciel r

TP sur les statistiques descriptives avec le logiciel r
Statistiques descriptives avec le logiciel R
Introduction : Ce T.P. a pour but de vous faire assimiler les representations numeriques et graphiques des statistiques descriptives univariee et bivariee.
Objectif de ce T.P. :
Manipuler les donnees. Faire des graphiques.
Consignes pour ce T.P. :
Suivre pas a pas les etapes et voir ce qui se passe. Ne pas hesiter a utiliser l'aide en ligne de R.
Vous ne comprendrez peut-^etre pas tous les details mais la meilleure chose a faire est de taper le code et de voir le resultat produit. Soyez curieux et n'hesitez pas a le modi er pour voir L ce qu'il se passe .
Quelques remarques
Le symbole # signi e le debut d'un commentaire.
Lorsque vous travaillez sous R, il peut ^etre interessant de conserver les resultats et les graphiques de vos analyses. Le plus simple, dans un premier temps, est de les enregistrer dans un document word a l'aide du copier = coller. Pour ce
faire, aller dans le menu L File ou L Fichier , selectionner L Copy to the clip-board L as a Bitmap . Noter que les graphes peuvent ^etre reduits ou agrandis sans deformation.
Statistique descriptive univariee
Exercice 1 Fichier de donnees : europe.csv
Nous vous demandons dans cet exercice de tracer une bo^te a moustaches. Pour cela, il faut que vous telechargiez sur le site de Frederic Bertrand le chier de donnees source correspondant, puis que vous tapiez les lignes de commande suivantes :
# Ici il faut indiquer le chemin d'acces au fichier sur le disque de stockage. Par exemple, pour Frederic Bertrand c'est :
> Chemin <- "C:nnDocuments and SettingsnnBertrandnnBureaunn"
# Lit le fichier. Vous determinerez en particulier le r^ole des
options L dec , L sep et L quote .
> europe <- read.table(paste(Chemin,"europe.csv",sep=""),dec=".", + sep=";",quote="n"",header=T)
# Verification du bon deroulement de l'importation et statistiques descriptives
> head(europe)
> str(europe)
> summary(europe)
> range(europe$Duree.heures.)
> sd(europe$Duree.heures.)
# Quelques representations graphiques > plot(europe)
> boxplot(europe$Duree.heures.,ylab="Duree (heures)") > points(1,mean(europe$Duree.heures.),pch=2)
pch est une option graphique qui de nit le symbole qui represente les observations.
# Sauvegarde de la bo^te a moustaches au format .pdf
> pdf(file = paste(Chemin,"boxplot.pdf",sep=""),
+ width = 6, height = 6, onefile = TRUE, family = "Helvetica",
+ title = "Europe boxplot", paper = "special")
> boxplot(europe$Duree.heures.,ylab="Duree (heures)")
> points(1,mean(europe$Duree.heures.),pch=2)
> dev.off()
# Sauvegarde de la bo^te a moustaches au format .ps
> postscript(file = paste(Chemin,"boxplot.eps",sep=""),
+ width = 6, height = 6, onefile = TRUE, family = "Helvetica",
+ title = "Europe boxplot", horizontal = FALSE, paper = "special") > boxplot(europe$Duree.heures.,ylab="Duree (heures)")
> points(1,mean(europe$Duree.heures.),pch=2) > dev.off()
Exercice 2 Fichier de donnees : iris.
Le logiciel R est un ensemble de bibliotheques de fonctions appelees L packages . Chaque bibliotheque contient des jeux de donnees. Pour conna^tre par exemple les jeux de donnees contenus dans le package base, ecrire l'instruction suivante :
> data(package = "base").
Le resultat appara^t dans une fen^etre R data sets. En voici un extrait :
Data sets in package 'datasets':
AirPassengers........... | Monthly Airline | Passenger Numbers 1949-1960 |
BJsales................. | Sales Data with | Leading Indicator |
BJsales.lead (BJsales).. | Sales Data with | Leading Indicator |
BOD..................... | Biochemical Oxygen Demand | |
iris.................... | Edgar Anderson's Iris Data |
- Noter la presence du chier iris. Les donnees de ce chier sont celebres. Elles ont et collectees par Edgar Anderson 1. Le chier donne les mesures en centimetres des variables suivantes :
- longueur du sepale (Sepal.Length),
- largeur du sepale (Sepal.Width),
- longueur du petale (Petal.Length) et
- largeur du petale (Petal.Width)
pour trois especes d'iris :
- Iris setosa,
- Iris versicolor et
- Iris virginica.
Sir R.A. Fisher 2 a utilise ces donnees pour construire des combinaisons lineaires des variables permettant de separer au mieux les trois especes d'iris.
- Pour analyser le chier iris, il faut le charger. Quelle est l'instruction qu'il faut taper pour charger ce chier ?
- Taper une a une chacune des instructions ci-dessous et noter le resultat obtenu si possible. Attention, le logiciel R n'est pas indi erent aux majuscules et aux minuscules, comme nous l'avons deja souligne dans le T.P. 1.
>iris
>dim(iris)
>names(iris)
Quelle(s) di erence(s) faites-vous avec la commande > str(iris) ? Tapez les commandes suivantes :
>iris$Petal.Length >iris$Species
Qu'observez-vous ?
La derniere colonne du chier iris contient le nom des especes reparties en trois categories : setosa, versicolor et virginica. Pour acceder a celle-ci, il faut utiliser l'instruction iris$Species, comme vous venez de le constater a la question precedente. On dit alors que la derniere colonne contient une variable qualitative a trois modalites appeles L levels par le logiciel. La fonction L le-vels appliquee a la colonne iris$Species donne les modalites de la variable.
En e et, il su t de taper :
> levels(iris$Species)
Pour resumer l'information contenue dans cette variable, on utilise l'instruc-tion :
> summary(iris$Species)
Quel est le resultat qui s'a che ?
- E. Anderson (1935) The irises of the Gaspe Peninsula, Bulletin of the American Iris Society, 59, 2-5
- R.A. Fisher, (1936) The use of multiple measurements in taxonomic problems. Annals of Eugenics, 7, Part II, 179-188
Cette information peut ^etre obtenue en construisant un tableau (table) comp-tabilisant le nombre d'individus par modalite. Pour ce faire, taper l'instruction suivante :
> table(iris$Species)
Comparer avec le resultat obtenu a la question precedente.
- Le logiciel R permet de realiser des graphiques. Lorsqu'une instruction gra-
phique est lancee, une nouvelle fen^etre L device est ouverte. Les representa-tions graphiques liees aux variables qualitatives sont la representation en sec-teurs ou camembert (pie) et la representation en b^atons (barplot). Taper les lignes de commande suivantes :
>pie(table(iris$Species)) >barplot(table(iris$Species))
- Il existe un parametre permettant de decouper la fen^etre graphique : par(mfrow=c(nl,nc)) ou par(mfcol=c(nl,nc)).
nl de nit le nombre de graphiques en lignes et nc de nit le nombre de gra-phiques en colonnes.
mfrow signi e que l'ordre d'entree des graphiques s'e ectue selon les lignes et mfcol signi e que l'ordre d'entree des graphiques s'e ectue selon les colonnes.
Supposons que nous voulions representer six graphiques dans une fen^etre en deux lignes et trois colonnes. La premiere instruction conduit a entrer les graphiques selon l'ordre :
1 | 2 | 3 |
4 | 5 | 6 |
La seconde instruction conduit a entrer les graphiques selon l'ordre :
1 | 3 | 5 |
2 | 4 | 6 |
Deux botanistes se sont egalement interesses aux iris et ont collect les especes suivantes :
> collection1<-rep(c("setosa","versicolor","virginica"), +c(15,19,12))
> collection2<-rep(c("setosa","versicolor","virginica"), +c(22,27,17))
En utilisant la fonction par(mfrow=c(2,2)),
- Construire les camemberts lies a ces deux nouvelles distributions. Com-menter.
- Construire les representations en b^atons de ces deux nouvelles distribu-tions. Commenter.
- Discuter des avantages et des inconvenients de ces deux types de repr - sentations.
- La troisieme colonne du chier iris contient la longueur du petale. Il s'agit d'une variable mesuree quali ee alors de variable quantitative. Pour resumer l'information contenue dans cette variable, nous utilisons la fonction summary. Taper la ligne de commande suivante :
>summary(iris$Petal.Length)
Quel resultat obtenez-vous ?
Min: 1stQu: Median Mean 3rdQu: Max:
1:000 1:600 4:350 3:758 5:100 6:900
La plus petite (Min.) longueur de petale est egale a 1:000 cm tandis que la plus grande (Max.) est egale a 6:900 cm. La moyenne (Mean) represente la somme des valeurs de la distribution divisee par le nombre total d'iris. Elle est egale a 3:758 cm. Si l'ensemble des 150 longueurs de petale sont classees par ordre croissant, 1stQu., Median et 3rdQu. sont les trois valeurs qui permettent de couper la distribution en quatre parties egales. Nous rappelons que nous les appelons respectivement premier quartile, mediane (ou deuxieme quartile) et troisieme quartile.
Essayons de retrouver ces six valeurs de parametres. Taper les lignes de com-mande suivantes :
> min(iris$Petal.Length)
> max(iris$Petal.Length)
> mean(iris$Petal.Length)
Pour calculer la moyenne nous aurions pu proceder autrement. Taper les lignes de commande suivantes :
> sum(iris$Petal.Length)
> length(iris$Petal.Length)
> sum(iris$Petal.Length)/length(iris$Petal.Length)
Obtenez-vous le m^eme resultat que precedemment ?
Maintenant occupons-nous de retrouver les valeurs des trois quartiles. Pour cela, taper la ligne de commande suivante :
> sort(iris$Petal.Length)
Que se passe-t-il ?
Puis continuer par taper les lignes de commandes suivantes :
> ordLpetal <- sort(iris$Petal.Length)
> ordLpetal # commenter le resultat
> sum(ordLpetal)/length(ordLpetal)
> ordLpetal[38]
> (ordLpetal[75]+ordLpetal[76])/2
> ordLpetal[113]
- Une des representations adequate est l'histogramme (hist). Regardez l'aide de hist(). Puis, taper la ligne de commande suivante :
> hist(iris$Petal.Length,col=grey(0.6),main="Histogramme")
main est l'option qui permet d'a cher un titre dans un graphique.
- Realiser le m^eme type d'analyse sur chacune des trois autres variables quan-titatives : largeur du petale, longueur du sepale et largeur du sepale. Notez que vous n'avez pas toutes les instructions a reecrire en utilisant le systeme de
eches du clavier. " et # vous permettent de retrouver les fonctions que vous avez utilisees. et ! vous permettent de vous deplacer dans la fonction et donc, dans changer certains parametres.
Exercice 3 Donnees brutes ou groupement en classes.
Parfois, lorsque nous etudions une serie statistique sur un caractere quantitatif qui comporte un grand nombre de valeurs, nous preferons alors regrouper p ar classes puis ensuite remplacer chaque classe par son milieu. Mais les resultats en sont legerement modi es, ce que vous pouvez imaginer. D'ailleurs certains auteurs suggerent des corrections par exemple en ce qui concerne la variance, comme la cor-rection de Sheppard, comme le declarent Couty, Debord et Fredon dans leur livre L Mini manuel de probabilites et statistique , Dunod. D'ailleurs de ce livre, nous allons extraire le jeu de donnees qui va nous permettre de faire cet exercice.
Nous considerons une serie statistique de 60 taux d'hemoglobine dans le sang (g=L) mesures chez des adultes presumes en bonne sante :
Femmes | 105 | 110 | 112 | 112 | 118 | 119 | 120 | 120 | 125 | 126 |
127 | 128 | 130 | 132 | 133 | 134 | 135 | 138 | 138 | 138 | |
138 | 142 | 145 | 148 | 148 | 150 | 151 | 154 | 154 | 158 | |
Hommes | 141 | 144 | 146 | 148 | 149 | 150 | 150 | 151 | 153 | 153 |
153 | 154 | 155 | 156 | 156 | 160 | 160 | 160 | 163 | 164 | |
164 | 165 | 166 | 168 | 168 | 170 | 172 | 172 | 176 | 179 |
1. Nous considerons le groupement en classes suivant :
]104; 114]; ]114; 124]; ]124; 134]; ]134; 144]; ]144; 154]; ]154; 164];
]164; 174]; ]174; 184]:
Pour chacune des deux series : femmes et hommes, determiner les e ectifs et les frequences de chaque classe.
- E ectuer une representation graphique adaptee des deux distributions grou-pees en classe de la question 1.
- Calculer les moyennes des trois distributions initiales : ensemble, femmes, hommes.
- Calculer les moyennes des trois distributions (ensemble, femmes, hommes) apres le regroupement en classes de la question 1., en remplacant chaque classe par son milieu.
- Calculer les medianes des trois distributions initiales : ensemble, femmes, hommes.
Calculer l'ecart interquartile pour chacune des trois distributions initiales : ensemble, femmes, hommes.
- Calculer les variances et les ecart-types des trois distributions initiales : en-semble, femmes, hommes.
- Calculer les variances et les ecart-types des trois distributions apres le re-groupement en classes de la question 1., en remplacant chaque classe par son milieu.
- Pour la distribution des femmes, calculer les moments jusqu'a l'ordre 4 puis deduire les moments centres jusqu'a l'ordre 4 puis les parametres de caracte-ristique de forme de Fisher.
Statistique descriptive bivariee
Exercice 4 Suite de l'exercice 2.
Nous allons reprendre les donnees de l'exercice 2 et le continuer. Voici la suite de l'enonc .
- Une fois realisee les graphiques pour chaque variable prise separemment, l'etu-de peut porter sur la relation entre deux variables. Nous parlons alors de croisement de deux variables ou d'etude bivariee. La representation graphique liant deux variables quantitatives est le nuage de points.
Representons par exemple la longueur et la largeur du petale pour les 150 iris contenus dans le chier de donnees. Pour cela, executer la ligne de commentaire suivante :
>plot(iris$Petal.Length, iris$Petal.Width,
+ xlab="Longueur du petale", ylab="Largeur du petale",
+ main="Nuage de points", pch=20)
Faire un commentaire.
Dans cette representation graphique, plusieurs individus peuvent ^etre situes sur un m^eme point. La fonction sunflowerplot permet de visualiser ces su-perpositions. Taper la ligne de commande suivante :
> sunflowerplot(iris$Petal.Length, iris$Petal.Width,
+ xlab="Longueur du petale", ylab="Largeur du petale",
+ main="Nuage de points", pch=20)
- Realiser l'etude du croisement de deux variables quantitatives de votre choix. Il est clair que le sens biologique de l'etude ne doit pas ^etre neglig .
- La representation graphique permettant de lier une variable qualitative et une variable quantitative est la bo^te a moustaches (boxplot). Representons par exemple la longueur des petales en fonction de l'espece. Pour cela, taper la ligne de commande suivante :
> boxplot(iris$Petal.Length iris$Species,col=grey(0.6))
Commenter.
Choisir une autre variable quantitative, croiser-la avec la variable espece d'iris et commenter.
Le nuage de points comme les bo^tes a moustaches montrent que les donnees morphologiques des iris semblent liees a l'espece. Il pourrait donc ^etre interessant de realiser des graphiques di erents pour chacune des modalites Iris setosa, Iris Versicolor et Iris Virginica ou de superposer l'information espece dans le gra-phique des nuages de points. Nous vous proposons ici quelques developpements. Libre a vous, de les refaire ou d'en trouver d'autres...
Taper alors les lignes de commande suivantes :
# Trace des histogrammes des longueurs des petales de l'ensemble des iris, des iris setosa, des iris versicolor et
des iris virginica > par(mfrow=c(2,2)) > br0=seq(0,8,le=20)
> hist(iris$Petal.Length, main="Ensemble des 150 iris", + xlab="Longueur du petale", br=br0)
> hist(iris$Petal.Length[iris$Species=="setosa"], main="Setosa", + xlab="Longueur du petale", br=br0)
> hist(iris$Petal.Length[iris$Species=="versicolor"],
+ main="Versicolor", xlab="Longueur du petale", br=br0) > hist(iris$Petal.Length[iris$Species=="virginica"],
+ main="Virginica", xlab="Longueur du petale", br=br0)
# Trace des nuages des points de la largeur du petale en fonc-tion de la longueur du petales de l'ensemble des iris,
des iris setosa, des iris versicolor et des iris virginica > par(mfrow=c(2,2))
> plot(iris$Petal.Length, iris$Petal.Width,
+ xlab="Longueur du petale", ylab="Largeur du petale", + main="Nuage de points", pch=20)
> plot(iris$Petal.Length[iris$Species=="setosa"], + iris$Petal.Width[iris$Species=="setosa"],
+ xlim=c(1,6.9), ylim=c(0.1,2.5), xlab="",ylab="", + main="iris setosa", pch=20)
> plot(iris$Petal.Length[iris$Species=="versicolor"], + iris$Petal.Width[iris$Species=="versicolor"],
+ xlim=c(1,6.9), ylim=c(0.1,2.5), xlab="", ylab="", + main="iris versicolor", pch=20)
> plot(iris$Petal.Length[iris$Species=="virginica"], + iris$Petal.Width[iris$Species=="virginica"],
+ xlim=c(1,6.9), ylim=c(0.1,2.5), xlab="", ylab="", + main="iris virginica", pch=20)
- Et pour nir...Taper la ligne de commande suivante :
# Representation graphique de toutes les possibilites de variables par variables
2010/2011
> pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])
Qu'observez-vous ?
La fonction pairs reproduit tous les graphiques variables par variables possibles sur une seule fenêtre graphique et bg est une option graphique pour de nir la couleur.