Académique Documents
Professionnel Documents
Culture Documents
(dure : 2 jours)
Andr Bouchier
2006-2011, Andr Bouchier (4 Novembre 2011) http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Le document Formation au logiciel R by A.Bouchier est mis disposition selon les termes de la licence Creative Commons Paternit-Pas d'Utilisation Commerciale-Partage des Conditions Initiales l'Identique 2.0 France.
1-Qu'est ce que R
R : logiciel multiplateforme R : systme statistique et graphique R : un logiciel et un langage R : logiciel libre R : un logiciel gratuit R : un logiciel au dveloppement trs actif
2-Installer le logiciel
Obtenir le logiciel (version Windows) http://cran.r-project.org/bin/windows/base/R-2.14.0-win.exe Installer le logiciel Lancez le programme R-2.14.0-win.exe, puis suivez les instructions affiches lcran.
3- Prise en main
Taper Ctrl L pour nettoyer la fentre Rconsole Faire des oprations : 5+9 10^2 2^0.5 sqrt(2)
Utiliser la flche (clavier) pour faire dfiler les commandes dj tapes La souris permet de slectionner (de copier-coller) les lignes dans Rconsole Utiliser les parenthses 4+9*2-1 = 21 (4+9)*2-1 = 25 (4+9)*(2-1) = 13
5-Quelques oprations
Arithmtique + - * / ^ (puissance) Logique > < <= >= == (gal) != (diffrent) & (et) | (ou) ! (non) xor (ou exclusif) exemple 8^(1/3) = racine cubique de 8 Attention aux parenthses ! 8^1/3 = 2.666667 8^(1/3) = 2
dir("~/rgis", pattern=".shp")
[1] "FRA.shp"
8-L'environnement de travail
Les donnes cres au cours d'une session peuvent tre sauvegardes. Les fichiers de donnes R portent l'extension .Rdata La commande sauver l'environnement de travail copie toutes les donnes en mmoire dans un fichier lextension .Rdata la fermeture, R vous propose de sauvegarder l'environnement de travail.
11-Objets en mmoire
La fonction ls() permet de lister les objets en mmoire ls() Plus de dtails avec ls.str() ls.str() print(ls.str(), max.level = 0) Effacer des objets en mmoire rm(a,b) Effacer tous les objets en mmoire rm(list=ls())
Exercice : en utilisant la fonction subset(), slectionnez les vhicules dont la consommation est infrieure 6l/100 et la puissance fiscale gale = 4 CV
19-Exercice
Reprsentez graphiquement l'ensemble des relations x-y des donnes quantitatives du data.frame iris Extraire les donnes de la varit virginica. Quelles sont les moyennes des variables pour cette varit ( fonction mean() )
Species FALSE
Squence simple z<-2:12 Attention, avec x<-10 comparez 1:x-1 et 1:(x-1) On peut utiliser la fonction seq() pour modifier l'incrment seq(1, 9, 0.5) La fonction seq() peut calculer les lments de la srie seq(length=8, from=1, to=5)
[1] 1.000000 1.571429 2.142857 2.714286 3.285714 3.857143 4.428571 5.000000
23-Demander de laide
En savoir plus sur une fonction ?mean ?median ?IQR Comment importe-t-on des fichiers textes ? ?read.table
Deuxime solution : Tinn-R (uniquement pour Windows) disponible cette adresse http://www.sciviews.org/Tinn-R/ avec coloration syntaxique et copie-coller direct vers R
26-Exercices
En utilisant l'diteur de script de R : importez le fichier texte voit2005.txt combien de lignes et de variables possde-t-il ? Quelles sont les moyennes des variables Longueur, Largeur et Surface du data.frame voit2005 ? Combien de vhicules ont une cylindre plus petite que 1000 cm3 ? Quel est l'cart-type de la variable Longueur ? Quelle est sa mdiane, sa moyenne, son IQR ?
exercice : lire le fichier produit.txt. Attention, il contient des donnes manquantes. 1.Quelle est la moyenne de la variable PRODUIT ? 2.Combien de lignes contiennent des donnes manquantes ?
En vous aidant de l'aide fournie par R, crez un tableau : 1.contenant tous les dpartements prsents dans les 2 data.frame 2.ne contenant que les dpartements contenus dans le data.frame "diplome"
maliste<-c(2,3,5,6,7,9,10,11) # liste des donnes quantitatives summary(bledur[ , maliste]) Un paramtre statistique pour chaque niveau dune variable qualitative : aggregate(bledur[,maliste], list("variete"=bledur$VRTC), mean)
aggregate(bledur[,maliste], list("variete"=bledur$VRTC, "zone"=bledur$ZON), mean)
1 2 3 4 5 6 7 8 9 variete zone RDT PLM ARG LIM SAB PGM MST AZP 1 1 11.40 103.40 38.52 41.50 19.98 38.00 35.82 3.36 2 1 8.45 128.40 27.69 52.46 20.85 39.52 28.64 3.45 3 1 13.66 87.00 27.05 53.30 19.65 42.65 35.36 3.16 1 2 9.93 101.00 21.22 32.96 45.82 39.87 31.63 3.18 2 2 12.76 139.50 24.25 33.20 42.55 32.00 37.97 3.66 3 2 13.07 117.50 20.95 39.60 39.45 43.80 31.17 2.91 1 3 11.29 137.25 17.10 18.54 64.36 40.58 33.99 3.27 2 3 8.61 160.78 20.44 29.43 50.12 30.77 28.42 2.87 3 3 15.10 117.00 31.10 47.70 21.20 30.70 41.30 3.84
Histogram of bledur$RDT
Frequency 5 0
10
15
10
15
20
25
bledur$RDT
38-Boites pattes
Boite simple boxplot(bledur$RDT) Une boite par niveau de facteur boxplot(split(bledur$RDT,bledur$ZON)) ou boxplot(bledur$RDT~bledur$ZON) # rsultat identique Pour rendre le graphique plus lisible, ajouter un titre title("Rendement", sub="Donnes INRA", ylab= "Effectifs", xlab= "zones gographiques") Reprsenter les individus rug(bledur$RDT, side=2) Exporter le graphique sous diffrents formats. Menus File/Save as/
39-Les camemberts
Les varits cultives
Les donnes doivent tre prpares pie(bledur$VRT) # mauvais pie(summary(as.factor(bledur$VRT))) # correct Attention l'ordre d'apparition des niveaux de facteur summary(as.factor(bledur$VRT)) On ajoute un nom "explicite" pour chaque secteur nom<-c("Var1","Var2","Var3","Var4","Var5","Var6") pie(summary(as.factor(bledur$VRT)), label=nom) On ajoute un titre principal titre<-"Les varits cultives" pie(summary(as.factor(bledur$VRT)), label=nom, main=titre)
Var2 Var3 Var6 Var5 Var4 Var1
Laide de R nous dit : Pie charts are a very bad way of displaying information. The eye is good at judging linear measures and bad at judging relative areas.
Montpellier 4 Novembre 2011 Initiation au logiciel statistique R
exercice : les points et les numros se superposent. Comment rendre les numros plus lisibles ? (?plot et ?text)
Montpellier 4 Novembre 2011 Initiation au logiciel statistique R
43-Les corrlations
Choisir les donnes quantitatives maliste<-c(2,3,5,6,7,9,10,11) Un tableau des corrlations cor(bledur[,maliste]) Prcisions sur les coefficients de corrlation cor.test(bledur$LIM,bledur$SAB, method = "pearson") cor.test(bledur$LIM,bledur$SAB, method = "kendall")
Pearson's product-moment correlation data: bledur$LIM and bledur$SAB t = -15.5096, df = 48, p-value < 2.2e-16 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: -0.9499646 -0.8509641 sample estimates: cor -0.9130445
Montpellier 4 Novembre 2011 Initiation au logiciel statistique R
44-Graphique : exemple
Poids du cerveau / poids du corps
Human
1200 Poids du cerveau 600 800 1000
400
Chimp
Gorilla
200
Poids du corps
46-Graphiques : exercice
Les donnes
Bodywt<-c( 10, 207, 62, 6.8, 52.2) Brainwt<-c(115, 406, 1320, 179, 440) Noms<-c("Potar monkey", "Gorilla", "Human", "Rhesus Monkey", "Chimp") Couleur de fond du graphique par(bg="aliceblue", col="red") Le titre et les labels titre<-"Poids du cerveau / poids du corps" labelX<-"Poids du corps" labelY<-"Poids du cerveau" Le graphique (pch=type de point) plot(Bodywt, Brainwt, xlim=c(5,250), main=titre, xlab=labelX, ylab=labelY, pch=16) text(Bodywt, Brainwt, labels=Noms, adj=0) Les couleurs disponibles : colors() exercice : Comment rendre ce graphique le plus laid possible ? Modifiez les couleurs, les tailles de caractres, ...
Montpellier 4 Novembre 2011 Initiation au logiciel statistique R
20
bledur$PLM
10
250
10 bledur$RDT
15
20
Histogram of bledur$RDT
15 1
10
2 3 0
6 5 4
5 0
10
15
20
25
bledur$RDT
Remarque : Les fonctions split.screen() ou layout() peuvent aussi tre aussi utilises
pour dcouper la fentre graphique
Montpellier 4 Novembre 2011 Initiation au logiciel statistique R
S'il y a un identifiant de lignes, on obtient un dcalage des noms de colonnes dans le tableur : write.table(iris,"clipboard", sep="\t", dec=",", row.names=T, col.names=T)
"Sepal.Length" "1" "2" "3" "4" "5" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" 5,1 3,5 1,4 4,9 3 1,4 4,7 3,2 1,3 4,6 3,1 1,5 5 3,6 1,4 0,2 0,2 0,2 0,2 0,2 "setosa" "setosa" "setosa" "setosa" "setosa"
Une solution : crer une nouvelle colonne contenant l'identifiant numeros<-row.names(iris) don<- data.frame(numeros, iris) write.table(don,"clipboard", sep="\t", dec=",", row.names=F, col.names=T)
"numeros" "1" "2" "3" "4" "5" "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" 5,1 3,5 1,4 0,2 4,9 3 1,4 0,2 4,7 3,2 1,3 0,2 4,6 3,1 1,5 0,2 5 3,6 1,4 0,2 "Species" "setosa" "setosa" "setosa" "setosa" "setosa"
Attention, certaines bibliothques ne fonctionnent que sous GNU/Linux, d'autres ne sont utilisables que sous MS-Windows
Montpellier 4 Novembre 2011 Initiation au logiciel statistique R
A73 LifeSciences 4489 PhysicalSciences 4101 SocialSciences 3354 BehavioralSciences 2444 Engineering 3338 Mathematics 1222
> iris.liste[[4]][1,]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species "Min. :4.300 " "Min. :2.000 " "Min. :1.000 " "Min. :0.100 " "setosa :50 "
57-Rgression linaire
Rappel : lecture des donnes bledur.txt bledur<-read.table(file.choose(), header=T, na.string="M", dec=",", sep=" ") Le modle modele<-lm(RDT~MST,data=bledur) Les rsultats Une reprsentation graphique plot(bledur$MST,bledur$RDT) abline(modele, lwd=2, col="red") title("Rgression linaire")
15 20
Rgression linaire
summary(modele)
bledur$RDT
10
20
30
40 bledur$MST
50
60
-10
-5
20
30
40 bledur$MST
50
60
bledur$RDT
10
15
20
30
40 bledur$MST
50
60
bledur$RDT
10
15
20
30
40 bledur$MST
50
60
Analyse de la variance
160 variable mesure 80 100 120 140
2 les blocs
dnorm(t, mean=mean(expe.aov$residuals), sd= sd(expe.aov$residuals) ) } Les rsidus curve(f, add=T, col="blue", lwd=3, lty=2)
0.020 Density 0.000 -40 0.005 0.010 0.015
-20
20
40
trait 6 5 7 1 2 4 3 8 9 0
80
2 bloc
mean of mesure
bloc 2 1 3
80
5 trait
NOTE: n is number in *each* group Remarque : le Package samplesize fournit des fonctions de calcul de taille d'chantillons.
Montpellier 4 Novembre 2011 Initiation au logiciel statistique R
69-Recodage de variables
Utilisation de la fonction recode() de la bibliothque "car" # utilisation du data.frame bledur ; variable quantitative recode(bledur$RDT, " lo:5 = 1 ; 5:10 = 2 ; 10:15 = 3 ; 15:hi = 4 ; else = NA " ) # utilisation du data.frame bledur ; variable qualitative recode(iris$Species, " c('setosa', 'versicolor') = 'V1' ; else = 'V2' " )
Montpellier 4 Novembre 2011 Initiation au logiciel statistique R
Brea d
0 1 2 3 4 5 6 7 8
Burger
Frequency
Frequency 20 22 24 26 28 30 32
80
90
100
110
Milk
0 1 2 3 4 5 6 7 8
Oranges
Frequency
Frequency 50 55 60 65 70 75 80 85
0 70
80
90
100
110
120
130
140
Tomatoes
35
40
45
50
55
60
65
Impression d'un rsum des rsultats summary(z) Histogramme des valeurs propres plot(z, main="Eboulis des valeurs propres") Le plan principal (individus + cercle de corrlation) biplot(z) abline(h=0,v=0)
-60 -40 -20 0 Dallas
Variances
20
0
50
100
40
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
Oranges 0.0
San Diego Cleveland Houston San Francisco Seattle Milwaukee Buffalo St. Louis Minneapolis Detroit Los Angeles Pittsburgh Chicago Kansas City
0.2
Bread Cincinnati Milk Tomatoes BurgerPhiladelphia Boston Honolulu -20 -60 0.0 Comp.1 0.2 -40
-0.2
-0.4
New York
-0.4
-0.2
20
40
76-Utilisation de la fonction
Sauvegarder la fonction sauvegarder la fonction dans un fichier : grapheXY.R (attention l'extension) Charger la fonction pour lutiliser, lire le fichier contenant vos fonctions avec le menu File/Source R code ou insrer cette instruction dans votre script source("emplacement sur le disque/grapheXY.R") Utiliser la fonction grapheXY(LIM, ARG, bledur)