Initiation à R (TP)

Download Report

Transcript Initiation à R (TP)

Introduction à l’utilisation du
logiciel R
- Statistiques descriptives -
L3 BE
BioNum
M. Jacquot
UMR Chrono-Environnement
R est un système d’analyse statistique et graphique
créé par R. Ihaka et R. Gentleman1
• Logiciel gratuit et langage qualifié de dialecte du langage S. Il est
téléchargeable dans sa version 2.9.2. depuis :
http://www.r-project.org/
• Également disponible sous forme commercialisée S-Plus
• Développé par une communauté de statisticiens rassemblés dans le R
Development Core Team
• Distribué pour Windows, Linux, Unix, Macintosh
1
Ikaha Ross, Gentleman Robert. 1996. R: a language for data analysis and graphics. J. Comput. Graph. Stat., 5: 299-314.
http://www.r-project.org/
Liens pour télécharger
(gratuitement) R, des
packages, de la doc,
etc…
Moteur de recherche
Documentation
• Avec R, vous disposez d’un logiciel puissant aux possibilités quasi-illimitées.
• Il peut être couplé à d’autres systèmes d’analyse de données (système d’analyse
spatiale GRASS …)
Représentation graphique des données
Analyse des structures spatiales
• Le principal inconvénient est un manque de convivialité dans l’utilisation puisque son
utilisation implique la programmation de chaque commande en langage S. Seule la
pratique peut vous permettre de vous familiariser avec R.
Pour vous guider, vous disposez de nombreux sites d’aide et d’exemples sur internet, par
exemple :
http://zoonek2.free.fr/UNIX/48_R/all.html
http://pbil.univ-lyon1.fr/R/enseignement.html
En cas de difficultés, il est possible d’adresser vos questions à la R help list
http://stat.ethz.ch/R-manual/
De nombreux tutoriels sont également disponibles sur internet, par exemple :
« R pour les débutants », Emmanuel
Paradis
http://cran.rproject.org/doc/contrib/Paradisrdebuts_fr.pdf
« An introduction to R », Venables et
al (en anglais)
http://cran.rproject.org/doc/manuals/R-intro.pdf
D’autres sont disponibles sur le site de R-project : http://cran.r-project.org (cliquer sur
« Manuals » dans la sous-partie « Documentation »)
Bienvenue dans R…
Conseil : travaillez avec Tinn-R
1. D’abord ouvrir Tinn-R, ouvrir un script et l’enregistrer
2. A partir de l’interface Tinn-R, ouvrir R et sélectionner le fichier de travail dans R
Bienvenue dans R…
• Il est indispensable avant tout travail dans R, de spécifier le
dossier de travail dans lequel se trouve le (ou les) fichier(s) de
données à analyser :
File → Change Dir… → sélectionner le dossier*
Ou pour la version française :
Fichier → Changer le répertoire courant… → sélectionner le
dossier*
• Pour vérifier que vous travaillez bien dans le bon dossier, vous
pouvez contrôler votre working directory par la commande :
getwd()
* procédure pour PC. Quelques subtiles différences pour Macintosh
Pour obtenir l’aide sur une commande :
?nom_de_la_commande
Pour utiliser une commande :
nom_de_la_commande(argument1,argument2,…)
N.B. certains arguments sont définis par défaut pour une fonction donnée.
Opération
pi
Racine carrée
Multiplication, division, addition, soustraction
Arrondir
Moyenne, médiane, variance
Obtenir pour chaque variable d’un tableau : quartiles et
moyenne
Ecart-type
Etendue d’une série de valeurs
Appliquer une même fonction (FUN) à toutes les catégories
Y d’une variable X
Importer des données d’un tableau
Créer une matrice
Commande sous R
pi
sqrt
*, /, +, -
round
mean, median, var
summary
sd
range
tapply (X,Y,FUN)
read.delim, read.table
matrix
Effectuer un modèle linéaire
lm(x~y*z)
Représenter un nuage de points
plot(y~x)
Tracer une droite de régression correspondant à un modèle
linéaire (lm)
abline(lm)
Fabriquer un graphique en « boîte à moustache »
Options graphiques (propriétés de la fenêtre, des polices des
axes,…)
boxplot(x~y)
par
Différents types d’objets dans R :
• vecteurs (vector)
myvector=1
myvector
[1] 1
• matrices (matrix)
> mymatrix
[,1] [,2] [,3] [,4]
[1,]
1
1
2
2
[2,]
3
4
5
6
[3,]
6
6
6
7
• tableaux de données (data.frame)
> mytab
Echantillon Masse
1
53 0.0273
2
353 0.0586
• listes (list): collection d’objets
Exercice 1
1. Calculez sous R la racine carrée de : pi multiplié par l’âge de
l’enseignant divisé par le nombre d’étudiants dans la salle.
2. Arrondissez la valeur obtenue à 1 décimale.
Exercice 1
1. Calculez sous R la racine carrée de : pi multiplié par l’âge de l’enseignant
divisé par le nombre d’étudiants dans la salle.
Si l’enseignant a 23 ans et qu’il y a 18 étudiants dans la salle :
sqrt((pi*23)/18)
[1] 2.003561
2. Arrondissez la valeur obtenue à 1 décimale.
round(sqrt((pi*23)/18),1)
[1] 2.003561
OU
calcul=sqrt((pi*23)/18)#on crée ici un objet de
type vecteur
round(calcul,1)
[1] 2.003561
Exercice 2
1. Importez sous R le jeu de données appelé « Donneesmanchot ».
Présentation des données dans
excel pour une exploitation dans
R
• Chaque variable doit être présentée en colonne
Noms de
colonnes
Variable
explicative
Variable
mesurée
• Pas de colonne vide à
gauche
• Pas de ligne vide audessus
1. Pas d’espace
2. Pas d’accent
3. Pas de caractères
spéciaux
Privilégier les points
comme séparateur de
décimale
• Uniquement le tableau
de données!
Enregistrer le fichier de
données en format
texte
(séparateur:tabulation)
(*.txt) pour Microsoft
Office
texte (*.csv) pour Open
Office
Exercice 2
1. Importez sous R le jeu de données appelé « Donneesmanchot ».
bdd_1=read.delim("Donneesmanchot.csv")
bdd_1 #permet de visualiser le dataframe créé
class(bdd_1)
[1] "data.frame" #nous donne la nature de l’objet
is.factor(bdd_1$annee)
[1] TRUE # nous dit si oui (TRUE) ou non (FALSE)
notre variable est un facteur.
N.B. Notre variable peut être numérique (numeric) ou catégorielle
(factor).
Exercice 2
2. Trouvez les moyennes, écart-types, minima, maxima et variances des
concentrations en mercure des 3 groupes.
tapply(bdd_1$Concentration,bdd_1$annee,mean)
2000
2001
museum
2.109222 1.909746 2.657152
tapply(bdd_1$Concentration,bdd_1$annee,sd)
2000
2001
museum
0.8337022 0.7671264 0.8604982
tapply(bdd_1$Concentration,bdd_1$annee,range)
$`2000`
[1] 0.4973822 3.9056604
$`2001`
[1] 0.1156069 2.7457627
$museum
[1] 1.646562 4.292169
Exercice 2
3. Représentez les concentrations 2001 en fonction des concentrations 2000. Tracer
la droite de régression des concentrations 2001 en fonction des concentrations
2000 en vert. Donnez un titre pertinent et complet aux axes des abscisses et des
ordonnées. Donnez un titre pertinent à votre graphique.
#Il faut d’abord isoler les données qui nous intéressent dans des vecteurs.
Attention à la donnée manquante en 2001 qui nous contraint à éliminer la
concentration de la plume du même individu en 2000.
Hg_01=bdd_1[11:40,6]#on
sélectionne
dans
bdd_1
les
lignes 11 à 40 de la colonne 6
Hg_00=bdd_1[41:71,6]
Hg_00=Hg_00[-4]#on sélectionne toutes les
concentrations de Hg en 2000 exceptée celle en 4e place ds le
vecteur Hg_00 qui correspond à l’individu à éliminer.
#Puis on passe à la représentation graphique
plot(Hg_01~Hg_00,pch=19,xlab="[Hg] en 2000"
,ylab="[Hg] en 2001",main="Concentrations de Hg
dans les plumes de manchot empereur de 2001 en
fonction de celles de 2000")
lmHg=lm(Hg_01~Hg_00)
abline(lmHg,col="green")
Exercice 2
4. Représentez les concentrations 2000, 2001 et Museum dans un graphique en boîte
à moustache. Donnez un titre pertinent au graphique et aux axes des abscisses et
des ordonnées
boxplot(bdd_1$Concentration~bdd_1$annee,xlab="année"
,ylab="Concentrations en Hg",main="[Hg] dans les
plumes
de
manchot
empereur
suivant
l'année
d'échantillonnage")
Exercice 2
Exercice 2
5. Agencez les 2 graphiques côte à côte sous R. Lorsque ce double graphique est
fait, importez-le dans Word.
par(mfrow=c(1,2))#permet de scinder la fenêtre
graphique en 2 parties dans le sens de la longueur
plot(Hg_01~Hg_00,pch=19,xlab="[Hg] en 2000"
,ylab="[Hg] en 2001",main="Concentrations de Hg
dans les plumes de manchot empereur de 2001 en
fonction de celles de 2000",cex.main=1)
lmHg=lm(Hg_01~Hg_00)
abline(lmHg,col="green")
boxplot(bdd_1$Concentration~bdd_1$annee,xlab="anné
e",ylab="Concentrations en Hg",main="[Hg] dans les
plumes de manchot empereur suivant l'année
d'échantillonnage",cex.main=1)
Exercice 2
Pour importer le graphique dans word :
- Cliquez sur la fenêtre graphique et faites Ctrl+C pour sauver en JPEG (Ctrl+W en
metafile) puis Ctrl+V dans word
- Sur la fenêtre graphique : Fichier→ Sauver comme → choisir le format
Vous sauvez ainsi un fichier image à copier dans word
Exercice 3
1.Créez une matrice comportant les données suivantes. Les densités de
Chevêches d’Athéna (en couple/km²) ont été étudiées dans 2 secteurs s1 et
s2 de 1994 à 2000 inclus. Les densités du secteur 1 sont : 0,27 ; 0,28 ;
0,25 ; 0,27 ; 0,25 ; 0,15 et 0,13. Celles du secteur 2 sont 0,17 ; 0,17 ; 0,19 ;
0,13 ; 0,10 ; 0,11 et 0,09.
2.Représentez ces données sous forme d’une matrice.
3.Représentez graphiquement l’évolution des densités de Chevêches
d’Athéna en fonction du temps pour les 2 secteurs.
Exemple de réalisation d’une matrice
m = matrix(c(47,6,23,14,52,2,14,7), ncol=2)
m
[1,]
[2,]
[3,]
[4,]
[,1] [,2]
47
52
6
2
23
14
14
7
Ordre de remplissage par
défaut d’une matrice dans R
En ajoutant byrow=T, on inverse l’ordre de remplissage :
m = matrix(c(47,6,23,14,52,2,14,7), ncol=2,
byrow=T)
m
[1,]
[2,]
[3,]
[4,]
[,1] [,2]
47
6
23
14
52
2
14
7
Exercice 3
1. Créez une matrice comportant les données suivantes. Les densités
de Chevêches d’Athéna (en couple/km²) ont été étudiées dans 2
secteurs s1 et s2 de 1994 à 2000 inclus. Les densités du secteur 1
sont : 0,27 ; 0,28 ; 0,25 ; 0,27 ; 0,25 ; 0,15 et 0,13. Celles du secteur 2
sont 0,17 ; 0,17 ; 0,19 ; 0,13 ; 0,10 ; 0,11 et 0,09.
m = matrix (c(0.27,0.28,0.25,0.27,0.25,0.15,
0.13,0.17,0.17,0.19,0.13,0.10,0.11,0.09),
ncol=7, byrow=T)
m
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 0.27 0.28 0.25 0.27 0.25 0.15 0.13
[2,] 0.17 0.17 0.19 0.13 0.10 0.11 0.09
Pour donner des titres de ligne et de colonne :
m = matrix (c(0.27,0.28,0.25,0.27,0.25,0.15,
0.13,0.17,0.17,0.19,0.13,0.10,0.11,0.09),
ncol=7, byrow=T, dimnames=list(c("s1","s2"),
seq(1994,2000,1)))
m
1994 1995 1996 1997 1998 1999 2000
s1 0.27 0.28 0.25 0.27 0.25 0.15 0.13
s2 0.17 0.17 0.19 0.13 0.10 0.11 0.09
dimnames(m)
[[1]]
[1] "s1" "s2"
[[2]]
[1] "1994" "1995" "1996" "1997" "1998" "1999" "2000"
3. Représentez graphiquement l’évolution des densités de Chevêches
d’Athéna en fonction du temps pour les 2 secteurs.
par(mfrow=c(1,2))
plot(m[1,] ~ dimnames(m)[[2]], xlab="Année du
relevé", ylab="Densité (couple/km²)",
col="red", main = "Densités de Chevêches
d’Athéna en fonction du temps dans le site 1",
cex=1.5, lwd=2, pch=8)
plot(m[2,] ~ dimnames(m)[[2]],xlab="Année du
relevé", ylab="Densité (couple/km²)",
col="green", main = "Densités de Chevêches
d’Athéna en fonction du temps dans le site 2",
cex=1.5, lwd=2, pch=9)
On obtient les deux figures suivantes dans la même fenêtre :
Pour avoir les deux sites sur la même figure :
par(mfrow=c(1,1))
plot(m[1,] ~dimnames(m)[[2]],
xlab="Année du relevé",
ylab="Densité
(couple/km²)", col="red",
main = "Densités de
Chevêches d’Athéna en
fonction du temps",
cex=1.5, lwd=2, pch=8)
points(m[2,]~dimnames(m)[[2
]],col="green", cex=1.5,
lwd=2, pch=9)
Exercice 4
1. Importez sous R le jeu de données appelé « arbres ».
# Pour afficher le tableau de données
bdd_2 = read.delim(“arbres.txt")
bdd_2
2. Calculez les moyennes, écart-types et variances des diamètres, des
volumes et des hauteurs.
3. Arrondissez ces valeurs à 2 chiffres après la virgule.
#exemple pour le diametre. Utiliser la fonction remplacer
(Ctrl+R) pour faire pareil pour le volume et la hauteur.
m_d=mean(bdd_2$diametre)
s_d=sd(bdd_2$diametre)
v_d=var(bdd_2$diametre)
rm_d=round(m_d,2)
rs_d=round(s_d,2)
rv_d=round(v_d,2)
Exercice 4
4. Représentez ces valeurs dans une matrice.
#on crée la matrice :
m2=matrix(c(rm_d,rs_d,rv_d,rm_v,rs_v,rv_v,rm_h,rs_
h,rv_h),ncol=3,dimnames=list(c("moyenne","sd","var
"), c("diametre","volume","hauteur")))
#on la visualise :
m2
diametre volume hauteur
moyenne
1.10 30.17
76.00
sd
0.26 16.44
6.37
var
0.07 270.20
40.60
Exercice 4
2.3.4. Autre solution pour les questions 2 à 4
valeur=c(bdd_2$diametre,bdd_2$volume,bdd_2$hauteur) #on stocke les
valeurs ds un vecteur
parametre=c(rep("diametre",31),rep("volume",31),rep("hauteur",
31)) #on crée un vecteur avec le nom des paramètres correspondant
tab=data.frame(valeur,parametre)#on fusionne les 2 vecteurs en 1 dataframe
moy=tapply(valeur,parametre,mean)#on applique tapply ; les résultats sont alors
stockés ds un vecteur
arr_mo=round(moy,2)#on peut appliquer round aux 3 valeurs contenues dans le
vecteur
ecartyp=tapply(valeur,parametre,sd)
arr_ecart=round(ecartyp,2)
vari=tapply(valeur,parametre,var)
arr_vari=round(vari,2)
m3=matrix (c(arr_mo,arr_ecart,arr_vari),ncol=3, byrow=T,
dimnames=list(c("moyenne","sd","var"),c("diametre","hauteur«
,"volume")))
m3
Exercice 4
5. Sur le jeu de données initial, enlevez les données qu’on juge extrêmes, c'est-à-dire
les données d’arbre(s) dont la hauteur est supérieure à 80 m.
bdd_2extrem=bdd_2[bdd_2$hauteur<80,]
summary(bdd_2extrem) #permet de vérifier rapidement
le maximum des variables de l’objet
6. Sur ce nouveau jeu de données, représentez graphiquement le volume et
le diamètre en fonction de la hauteur. Représentez sur un même graphique
les 2 graphiques précédents plus un graphique représentant le volume en
fonction du diamètre.
par(mfrow=c(1,3))
plot(volume~hauteur,data=bdd_2extrem,pch=19,
cex.axis=1.5,cex.lab=1.5)
plot(diametre~hauteur,data=bdd_2extrem,pch=19,
cex.axis=1.5,cex.lab=1.5)
plot(diametre~volume,data=bdd_2extrem,pch=19,
cex.axis=1.5,cex.lab=1.5)
#on peut tout résumer en 1 seul graphique 3D avec la
fonction cloud incluse dans le package lattice :
library(lattice)
cloud(diametre~volume+hauteur,data=bdd_2extrem)
Sauver votre travail
Dans R
1
Dans Tinn R
sauver votre
script
2.2.
2.1.
Sauver votre environnement de
travail cad tous les objets créés
au cours de votre travail.
Sauver
votre historique de
commande.