Upload
ngokhue
View
214
Download
0
Embed Size (px)
Citation preview
PlanTests statistiques
GraphesGraphes avancés
INTRODUCTION AU LOGICIEL R3. Tests statistiques et graphes
Anne Dubois, Julie Bertrand, Emmanuelle Comets
INSERM UMR738
E. Comets (UMR738) Introduction à R - Novembre 2009 1 / 65
PlanTests statistiques
GraphesGraphes avancés
Plan
Tests statistiquesMoyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
GraphesGraphes simplesEléments des graphesLes différents types de graphesSauvegarde
Graphes avancésLibrairies graphiques avancéesggplot2
E. Comets (UMR738) Introduction à R - Novembre 2009 2 / 65
PlanTests statistiques
GraphesGraphes avancés
Remise en jambe : un exercice
1 Simulez deux vecteurs vec1 et vec2 contenant 20 réalisationsd’une loi normale de moyennes respectivement 70 et 25, et devariances 10 et 4
2 Simulez un deuxième vecteur vec3 contenant 20 réalisationsd’une loi uniforme sur l’intervalle [0; 5]
transformez vec3 pour qu’il contienne des valeurs entières
3 Créez un dataframe contenant les 3 vecteurs dans 3 colonnes, etnommez-les "poids", "age" et "douleur" respectivement
4 Calculez les moyennes et les variances des deux variablescontinues
E. Comets (UMR738) Introduction à R - Novembre 2009 3 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Plan
Tests statistiquesMoyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
GraphesGraphes simplesEléments des graphesLes différents types de graphesSauvegarde
Graphes avancésLibrairies graphiques avancéesggplot2
E. Comets (UMR738) Introduction à R - Novembre 2009 4 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Test de la moyenne
Les tests usuels pour une moyenne ou une comparaison de moyennesont :
• le test t pour des variables normales : t.test(x) out.test(x,y)
• le test de Wilcoxon, non-paramétrique, pour des petitséchantillons ou des variables non normales :wilcox.test(x) ou wilcox.test(x,y)
Pour un test apparié on utilise l’option "paired=T"
> x <- rnorm(50,0,1)> y <- rnorm(50,-0.27,0.4)> w <- x + rnorm(50,0,0.1)> t.test(x,y)
Pour ces deux tests on peut spécifier l’hypothèse alternative enutilisant l’argument mu=.
E. Comets (UMR738) Introduction à R - Novembre 2009 5 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Application du test t
Comparaison de moyennes entre 2 groupes :
> t.test(x,y)Welch Two Sample t-test
t = 2.6064, df = 63.131, p-value = 0.01140alternative hypothesis: true difference in means != 095 percent confidence interval:
0.0967519 0.7325692
Comparaison de moyennes sur données appariées :
> t.test(x,w,paired=T)Paired t-test
t = 0.246, df = 49, p-value = 0.806795 percent confidence interval:
-0.02543856 0.03253569
Il est possible d’obtenir un intervalle de confiance sur l’estimation de lamoyenne en spécifiant conf.int=T, et l’option alternative ("two.sided","less", "greater") permet de spécifier l’hypothèse alternative.
E. Comets (UMR738) Introduction à R - Novembre 2009 6 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Test de Wilcoxon
Pour une seule variable ou deux variables appariées, wilcox.testproduit un test des signes de Wilcoxon (sur x ou sur (x-y)).
Pour deux variables non appariées, le test correspond au test deMann-Whitney aussi appelé test des rangs de Wilcoxon.
L’option exact=T est utilisée pour demander un calcul exact de lap-value.
E. Comets (UMR738) Introduction à R - Novembre 2009 7 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Utilisation avec un dataframe
On utilise la base energy contenue dans la librairie ISwR :
> library(ISwR)> attach(energy)
On teste une différence de dépense énergétique entre obèses etnon-obèses :
> t.test(expend~stature)
qui revient à tester :
> t.test(expend[stature=="lean"],expend[stature=="ob ese"])
Cela correspond en SAS à :
proc ttest data=energy;class stature;var expend;run;
E. Comets (UMR738) Introduction à R - Novembre 2009 8 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Exercice
1 En reprenant la base que vous avez créée en début de cours,testez l’égalité des moyennes entre les sujets ayant un grade dedouleur inférieur ou supérieur à 2.
2 En utilisant le test de Wilcoxon, comparez les moyennes dans les2 échantillons pour les cas suivants
A=c(0,1,2), B=c(100,150,5000)A=c(0,1,2), B=c(100,150,5000,6000)A=c(0,1,2,3,4), B=c(100,150,5000,6000)Qu’en concluez-vous?
3 Faites la même chose qu’en 2 en utilisant un test t.
E. Comets (UMR738) Introduction à R - Novembre 2009 9 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Comparaison des variances (1)
Par défaut, on suppose que la variance entre les 2 groupes estdifférente (ce qui n’est pas le cas en SAS). Il est préférable d’effectuerun test d’homogénéité des variances :
> var.test(expend~stature)F test to compare two variances
F = 0.7844, num df = 12, denom df = 8, p-value = 0.6797alt. hypothesis: true ratio of variances is not equal to 1
On ne rejette pas l’hypothèse d’égalité des variances :
> t.test(expend~stature,var.equal=T)
E. Comets (UMR738) Introduction à R - Novembre 2009 10 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Comparaison des variances (2)
Le test de Fisher porte stricto sensu sur des variables normales.D’autres tests d’homogénéité des variances sont disponibles sous R.En particulier le test de Bartlett est plus robuste en cas d’écarts à lanormalité
> bartlett.test(expend~stature)
Bartlett test of homogeneity of variances
data: expend by statureBartlett’s K-squared = 0.1362, df = 1, p-value = 0.712
Il existe également des tests non-paramétriques (Fligner-Killeen,Ansari-Bradley et Mood) d’homogénéité de la variance.
E. Comets (UMR738) Introduction à R - Novembre 2009 11 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Récupération des résultats
On peut stocker le résultat du test dans un objet :
test <- t.test(x,y)> names(test)[1] "statistic" "parameter" "p.value" "conf.int" "estima te"[6] "null.value" "alternative" "method" "data.name"
On peut aussi utiliser attributes(test).
Si on souhaite conserver la statistique de test, l’IC 95% et la p-value :
> res <- c(test$statistic,test$conf.int,test$p.value)> names(res) <- c("stat","Lim0.025","Lim0.975","p.valu e")> res
stat Lim0.025 Lim0.975 p.value2.60640690 0.09675190 0.73256922 0.01140137
E. Comets (UMR738) Introduction à R - Novembre 2009 12 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Corrélations
La syntaxe pour calculer la corrélation et la tester est :
> cor.test(x,y,method="methode")
où methode peut être :
• Pearson (par défaut)
• Spearman (non paramétrique)
• Kendall (non paramétrique)
> cor.test(x,y,method="spearman")Spearman’s rank correlation rho
...S = 15460, p-value = 0.07103alternative hypothesis: true rho is not equal to 0sample estimates: rho
0.2576230
Par défaut retire les valeurs manquantes.E. Comets (UMR738) Introduction à R - Novembre 2009 13 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Analyse de variance (1)
Pour comparer simultanément les moyennes de plusieurs variables,on pratique une ANOVA.On utilise le jeu de données red.cell.folate. On souhaite tester unedifférente en folates selon le type de ventilation (N2O+O2 pendant 24h,N2O+O2 pendant l’opération, seulement O2 pendant 24h) :
> attach(red.cell.folate)> anova(lm(folate~ventilation))Analysis of Variance Table
Response: folateDf Sum Sq Mean Sq F value Pr(>F)
ventilation 2 15516 7758 3.7113 0.04359 *Residuals 19 39716 2090---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ ...
E. Comets (UMR738) Introduction à R - Novembre 2009 14 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Analyse de variance (2)
Comme une différence significative entre les 3 types de ventilation aété mise en évidence, on peut faire un test 2 à 2 entre les types deventilation :
> pairwise.t.test(folate,ventilation,p.adj="fdr")
data: folate and ventilation
N2O+O2,24h N2O+O2,opN2O+O2,op 0.042 -O2,24h 0.232 0.408
Note: ce test inclut une correction pour tests multiples.Autre possibilité : TukeyHSD (sur un objet de type aov)
E. Comets (UMR738) Introduction à R - Novembre 2009 15 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
ANOVA non paramétrique
Le test de Kruskal Wallis (kruskal.test) est la forme non paramétriquede l’ANOVA :
> kruskal.test(folate~ventilation)Kruskal-Wallis rank sum test
data: folate by ventilationKruskal-Wallis chi-squared = 4.1852, df = 2,p-value = 0.1234
E. Comets (UMR738) Introduction à R - Novembre 2009 16 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Exercice
1 La base airquality est un jeu de données de R contenant desmesures de qualité de l’air réalisées sur plusieurs mois.
visualiser la base
2 Comparer la concentration d’ozone entre les mois de mai etd’août.
en utilisant un test ten utilisant un test non paramétrique
3 La concentration d’ozone est-elle comparable pour les différentsmois (utiliser un test global)?
avec une anova (utiliser as.factor() et lm)en utilisant un test non paramétrique
E. Comets (UMR738) Introduction à R - Novembre 2009 17 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Variables discrètes : test du χ2 (1)
Cas classique : on cherche à savoir si le fait de présenter unecaractéristique particulière (exemple : le fait de fumer) a une influencesur la réponse à un traitement. On a donc deux vecteurs avec pourchaque sujet, 1 s’il fume et 0 sinon, et sa réponse au traitementconsidéré. Le tableau de contingence se construit avec la commandetable(x,y) :
> fumeur <- rbinom(50,1,0.4)> reponse <- rbinom(50,1,0.4)> table(fumeur,reponse)
reponsefumeur 0 1
0 18 161 11 5
E. Comets (UMR738) Introduction à R - Novembre 2009 18 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Test du χ2 (2)
Pour effectuer le test d’une relation entre le fait de fumer et la réponseau traitement, on utilise la fonction chisq.test. Deux syntaxes sontpossibles :
• forme vectorielle chisq.test(x,y)
> chisq.test(fumeur,reponse)
Pearson’s Chi-squared test with Yates’ continuity correct ion
data: fumeur and reponseX-squared = 0.5616, df = 1, p-value = 0.4536
• forme matricielle chisq.test(tab), en utilisant le tableau decontingence tab
> chisq.test(table(fumeur,reponse))...
E. Comets (UMR738) Introduction à R - Novembre 2009 19 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Généralisation à plusieurs classes
On utilise les mêmes commandes si les variables ont plusieursclasses :
> malade <- rbinom(15,2,0.3)> trait <- rbinom(15,2,0.3)> table(malade,trait)
traitmalade 0 1 2
0 2 3 21 2 3 12 1 0 1
> chisq.test(malade,trait)
Pearson’s Chi-squared test
data: malade and traitX-squared = 1.8214, df = 4, p-value = 0.7686
Warning message:l’approximation du Chi-2 est peut-être incorrecte in: chis q.test(malade, trait)
E. Comets (UMR738) Introduction à R - Novembre 2009 20 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Variables discrètes (2)
La fonction CrossTable , contenue dans le package gmodels , permetd’obtenir des tables de contigence identiques à la Proc Freq de SAS:
> library(gmodels)> CrossTable(fumeur,reponse,prop.t=F,prop.chisq=F)
| reponsefumeur | 0 | 1 | Row Total |
-------------|-----------|-----------|-----------|0 | 18 | 16 | 34 |
| 0.529 | 0.471 | 0.680 || 0.621 | 0.762 | |
-------------|-----------|-----------|-----------|1 | 11 | 5 | 16 |
| 0.688 | 0.312 | 0.320 || 0.379 | 0.238 | |
-------------|-----------|-----------|-----------|Column Total | 29 | 21 | 50 |
| 0.580 | 0.420 | |-------------|-----------|-----------|-----------|
E. Comets (UMR738) Introduction à R - Novembre 2009 21 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Tests de comparaison d’une proportion (1)
On suppose un taux de succès p = O/N où O est le nombre desuccès et N est le nombre de patients. Dans le cas de plusieursgroupes, on suppose que l’on a les variables Succes et Groupe.• comparaison de p à une référence :prop.test(O,N,p0) ou binom.test(O,N,p0)
> prop.test(220,500,0.5)
1-sample proportions test with continuity correction
data: 220 out of 500, null probability 0.5X-squared = 6.962, df = 1, p-value = 0.008326alternative hypothesis: true p is not equal to 0.595 percent confidence interval:
0.3961300 0.4848059sample estimates:
p0.44
E. Comets (UMR738) Introduction à R - Novembre 2009 22 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Tests de comparaison d’une proportion (1)
On suppose un taux de succès p = O/N où O est le nombre desuccès et N est le nombre de patients. Dans le cas de plusieursgroupes, on suppose que l’on a les variables Succes et Groupe.• comparaison de deux proportions :
prop.test(c(O1,O2),c(N1,N2))
fisher.test(matrix(c(O1,O2,N1-O1,N2-O2),2))
fisher.test(Succes,Groupe)
chisq.test(matrix(c(O1,O2,N1-O1,N2-O2),2))
chisq.test(Succes,Groupe)
• comparaison de plus de 2 proportions :chisq.test(Succes,Groupe) ou fisher.test(Succes,Groupe)
E. Comets (UMR738) Introduction à R - Novembre 2009 23 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Tests de normalité
Test de Shapiro-Wilk (hypothèse nulle = "normalité"):
> x <- rnorm(100)> y <- runif(100,-2,2)> shapiro.test(x)
Shapiro-Wilk normality test
data: xW = 0.9872, p-value = 0.4523> shapiro.test(y)
Shapiro-Wilk normality test
data: yW = 0.9516, p-value = 0.001055
E. Comets (UMR738) Introduction à R - Novembre 2009 24 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Tests de distribution
Test de Kolmogorov-Smirnov
ks.test(x,"distribution") pour tester si x suit la distribution"distribution" (ex : punif, pnorm...)
ks.test(x,y) pour tester si x et y suivent les mêmes distributions
> x<-runif(20);y<-rnorm(20)> ks.test(x,y)
Two-sample Kolmogorov-Smirnov testdata: x and yD = 0.55, p-value = 0.003967alternative hypothesis: two.sided> ks.test(x,"pnorm")
One-sample Kolmogorov-Smirnov testdata: xD = 0.5048, p-value = 3.032e-05alternative hypothesis: two.sided
E. Comets (UMR738) Introduction à R - Novembre 2009 25 / 65
PlanTests statistiques
GraphesGraphes avancés
Moyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
Exercice
Reprendre la base airquality pour répondre à la question : y’a-t-ilune relation entre le fait d’observer une température supérieure à85◦F et le fait d’observer un pic d’ozone supérieur à 75 ppb?
construire le tableau de contingence et utiliser un test du χ2
la distribution des concentrations d’Ozone suit-elle une loinormale?attention aux données manquantes
E. Comets (UMR738) Introduction à R - Novembre 2009 26 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Plan
Tests statistiquesMoyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
GraphesGraphes simplesEléments des graphesLes différents types de graphesSauvegarde
Graphes avancésLibrairies graphiques avancéesggplot2
E. Comets (UMR738) Introduction à R - Novembre 2009 27 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Les graphiques
La fonction de base est plot :
> x<-c(-1000:1000)*pi/500> y<-cos(x)> plot(x,y)
donne
−6 −4 −2 0 2 4 6
−1.
0−
0.5
0.0
0.5
1.0
x
y
E. Comets (UMR738) Introduction à R - Novembre 2009 28 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Options de la fonction plot
main="Le titre" titre du graphesub="Le sous-titre" sous-titre du graphexlab="",ylab="" légende des axesxlim=c(xa,xb) limites des axesylim=c(ya,yb)type="" par défaut : "p" pour points
sinon "l", "o", "h" ou "s"log="" échelle logarithmique pour les X ("x"),
pour les Y ("y") ou les 2("xy")pch=n, lty=n symbole ou type de ligne utilisécol=n couleurfont=n,cex=n fonte et taille du texte et des symboles
Pour plus de détails, voir help(par)
E. Comets (UMR738) Introduction à R - Novembre 2009 29 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Types de symboles utilisables (pour référence)
plot symbols : points (... pch = *, cex = 3 )
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
**
.
oo
OO
00
++
−−
||
%%
##
E. Comets (UMR738) Introduction à R - Novembre 2009 30 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Exemple d’utilisation de plot
> plot(x,y,xlim=c(0,pi),ylim=c(-1,1),xlab="x",ylab="y",lty=2,type="l",main="graphe de la fonction cosinus")
donne
0.0 0.5 1.0 1.5 2.0 2.5 3.0
−1.
0−
0.5
0.0
0.5
1.0
graphe de la fonction cosinus
x
y
E. Comets (UMR738) Introduction à R - Novembre 2009 31 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Tracé de variables discrètes
> plot(test$poids,test$womac,xlim=c(70,85),ylim=c(0,50),xlab="poids",ylab="womac",pch=2,type="p",main="relation entre les variables poids et womac")
70 75 80 85
010
2030
4050
relation entre les variables poids et womac
poids
wom
ac
E. Comets (UMR738) Introduction à R - Novembre 2009 32 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
ExerciceRéaliser le graphe suivant à partir de la base airquality
0 5 10 15 20
010
2030
4050
Ozone observée les 20 premiers jours du mois de mai
jours
ozon
e
E. Comets (UMR738) Introduction à R - Novembre 2009 33 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Ajouter des éléments à un graphe
title() titrelegend() légendetext() textemtext() texte dans la margebox() encadrement du graphelines(x,y) trait entre x(=c(a,b)) et y(=c(c,d))points(a,b) tracé du point de coordonnées (a,b)arrows(a,b,c,d) tracé d’une flèche entre (a,b) et (c,d)abline(a,b) tracé de la droite d’ordonnée à l’origine a et
de pente b
E. Comets (UMR738) Introduction à R - Novembre 2009 34 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Exemple>x<-c(0:1000)*pi/100>plot(x,cos(x),xlim=c(0,pi),ylim=c(-1,1),type="l",ylab="",font=3)>lines(x,sin(x),lty=2)>abline(-1,1,lty=3)>legend(1, -0.5, c("cos(x)", "sin(x)", "x-1"),lty = c(1, 2, 3))
0.0 0.5 1.0 1.5 2.0 2.5 3.0
−1.
0−
0.5
0.0
0.5
1.0
x
cos(x)sin(x)x−1
E. Comets (UMR738) Introduction à R - Novembre 2009 35 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
ExerciceRéaliser le graphe suivant à partir de la base airquality
2 4 6 8 10 12 14
4060
8010
012
0
Relation entre l’ozone et le vent, selon la température
Vent (mph)
Ozo
ne (
ppb)
Temp>=85°FTemp<85°F
E. Comets (UMR738) Introduction à R - Novembre 2009 36 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Les différents types de graphes
hist() histogrammebarplot() graphe en barreboxplot() boîte à moustacheqqplot(), qqnorm() graphe quantile-quantilepie() camembertpairs() corrélations entre les colonnes d’une matricematplot() corrélations entre les colonnes de deux matrices
E. Comets (UMR738) Introduction à R - Novembre 2009 37 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Histogramme
On peut spécifier le nombre de barres de l’histogramme grâce à lacommande breaks
hist(airquality$Ozone) hist(airquality$Ozone,breaks=20)
Histogram of airquality$Ozone
airquality$Ozone
Fre
quen
cy
0 50 100 150
010
2030
Histogram of airquality$Ozone
airquality$Ozone
Fre
quen
cy
0 50 100 150
05
1015
2025
E. Comets (UMR738) Introduction à R - Novembre 2009 38 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Histogrammes de plusieurs variables
Pour tracer plusieurs graphes sur la même page (ex : histogramme dedifférentes variables), on utilise l’option mfrow=c(m,n)
> par(mfrow=c(2,2))> hist(airquality$Ozone,main="",xlab="Ozone")> hist(airquality$Solar.R,main="",xlab="Solar.R")> hist(airquality$Wind,main="",xlab="Wind")> hist(airquality$Temp,main="",xlab="Temp")
Ozone
Freq
uenc
y
0 50 100 150
010
2030
Solar.R
Freq
uenc
y
0 50 150 250 350
010
2030
Wind
Freq
uenc
y
0 5 10 15 20
010
2030
Temp
Freq
uenc
y
60 70 80 90 100
010
2030
E. Comets (UMR738) Introduction à R - Novembre 2009 39 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Exercice
Réaliser le graphique suivant à partir de la base swiss
Agriculture
Fre
qu
en
cy
0 20 40 60 80
01
23
45
67
Examination
De
nsi
ty
5 10 15 20 25 30 35
0.0
00
.02
0.0
40
.06
Education
Fre
qu
en
cy
0 10 20 30 40 50
02
46
81
0
Catholic
Fre
qu
en
cy
0 20 40 60 80 100
02
46
81
0
E. Comets (UMR738) Introduction à R - Novembre 2009 40 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Boxplot
Le boxplot permet de résumer graphiquement la distribution d’unéchantillon :> boxplot(airquality$Ozone)
050
100
150
Ozone
E. Comets (UMR738) Introduction à R - Novembre 2009 41 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Boxplot de plusieurs variables
On peut tracer un boxplot d’un data.frame (peu d’intérêt si les échellesdes variables sont trop différentes)> boxplot(airquality)
Ozone Solar.R Wind Temp Month Day
050
100
150
200
250
300
E. Comets (UMR738) Introduction à R - Novembre 2009 42 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Boxplot d’une variable selon des catégories
Pour tracer les boxplot de Ozone, selon si Temp est < ou ≤ à 85◦F.> air1<-transform(airquality,Iftemp=ifelse(Temp>85,1 ,0))> attach(air1)> boxplot(Ozone~Itemp,xlab="Itemp",ylab="Ozone")> legend(1.8,170,c("0 : Temp<=85","1 : Temp>85"))
0 1
050
100
150
Itemp
Ozo
ne
0 : Temp<851 : Temp>85
E. Comets (UMR738) Introduction à R - Novembre 2009 43 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Exercice
Réaliser le graphique suivant à partir de la base swiss
0 1
4050
6070
8090
Fer
tility
0 : Edu <101 : Edu >10
0 1
4050
6070
8090
Fer
tility
0 : Inf.Mort<201 : Inf.Mort>20
E. Comets (UMR738) Introduction à R - Novembre 2009 44 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Les spaghetti plot
La fonction interaction.plot trace des données longitudinales selon descatégories (en particulier par sujet)>attach(esoph)>interaction.plot(agegp, alcgp, ncases/ncontrols,xlab="age par groupe",trace.label="alcool")
0.0
0.2
0.4
0.6
0.8
1.0
’esoph’ Data
age par groupe
mea
n of
nca
ses/
ncon
trol
s
25−34 35−44 45−54 55−64 65−74 75+
alcool
80−119120+40−790−39g/day
E. Comets (UMR738) Introduction à R - Novembre 2009 45 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Quantile-quantile plot
Pour comparer les quantile empiriques de 2 vecteurs x1,x2.Si x1 et x2 sont 2 réalisations d’une même variable aléatoire, le qq-plotest proche de la droite y=x> x1<-runif(100)> x2<-runif(100)> qqplot(x1,x2,main="qq-plot de x1 et x2")> abline(0,1)
0.0 0.2 0.4 0.6 0.8 1.0
0.2
0.4
0.6
0.8
1.0
qq−plot de x1 et x2
x1
x2
E. Comets (UMR738) Introduction à R - Novembre 2009 46 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Quantile-quantile norm
Pour comparer les quantile empiriques d’un vecteur aux quantilesthéoriques de la distribution normale.
> x<-runif(100) > y<-rnorm(100)> qqnorm(x) > qqnorm(y)> abline(0,1) > abline(0,1)
−2 −1 0 1 2
0.0
0.2
0.4
0.6
0.8
1.0
qq−norm de x
Theoretical Quantiles
Sam
ple
Qua
ntile
s
−2 −1 0 1 2
−3
−2
−1
01
2
qq−norm de y
Theoretical Quantiles
Sam
ple
Qua
ntile
s
E. Comets (UMR738) Introduction à R - Novembre 2009 47 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Camembert
Pour faire un camembert
> pie(rep(1,12),col=rainbow(12))
1
2
34
5
6
7
8
9 10
11
12
E. Comets (UMR738) Introduction à R - Novembre 2009 48 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Corrélations : pairs
Trace les graphes des variables deux à deux :> pairs(trees)
Girth
65 70 75 80 85
810
1214
1618
20
6570
7580
85
Height
8 10 12 14 16 18 20 10 20 30 40 50 60 70
1020
3040
5060
70
Volume
E. Comets (UMR738) Introduction à R - Novembre 2009 49 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Graphes associés à un type d’objet (1)
> attach(swiss)> lm1<-lm(Fertility~Education)> par(mfrow=c(2,2))> plot(lm1)
40 50 60 70 80
−20
−10
010
20
Fitted values
Res
idua
lsResiduals vs Fitted
83
24
−2 −1 0 1 2
−1
01
2
Theoretical Quantiles
Sta
ndar
dize
d re
sidu
als
Normal Q−Q plot
83
24
40 50 60 70 80
0.0
0.5
1.0
1.5
Fitted values
Sta
ndar
dize
d re
sidu
als
Scale−Location plot8
324
0 10 20 30 40
0.00
0.05
0.10
0.15
Obs. number
Coo
k’s
dist
ance
Cook’s distance plot
42
47
46
E. Comets (UMR738) Introduction à R - Novembre 2009 50 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Graphes associés à un type d’objet (2)
Pour afficher uniquement le premier graphe :
> attach(swiss)> lm1<-lm(Fertility~Education)> par(mfrow=c(2,2))> plot(lm1,which=1)
En fait plot fait ici appel à une autre fonction, plot.lm, qui sait commentconstruire les graphes associés aux résultats d’une régressionlinéaire. Il y a de nombreuses méthodes spécifiques associées àdifférents objets :
methods(plot)
E. Comets (UMR738) Introduction à R - Novembre 2009 51 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Analyse de variance (3) : graphe
> xbar <- tapply(folate,ventilation, mean)> s <- tapply(folate,ventilation,sd)> n <- tapply(folate,ventilation,length) # nombre de patie nts> sem <- s/sqrt(n)> stripchart(folate~ventilation,pch=16,vert=T)> arrows(1:3,xbar+sem,1:3,xbar-sem,angle=90,code=3,l ength=.1)> lines(1:3,xbar,pch=4,type="b",cex=2)
N2O+O2,24h N2O+O2,op O2,24h
200
250
300
350
E. Comets (UMR738) Introduction à R - Novembre 2009 52 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Enregistrer une figure
Sauvegarde avec une commande, exemple en postscriptpostscript("mongraphe.eps")par(mfrow=c(2,2))plot(lm1)dev.off()
Formats disponiblesjpeg : jpeg("mongraphe.jpg")postscript : postscript("mongraphe.eps")png : png("mongraphe.png")
Sauvegarde avec la fenêtre graphiqueplacer la souris sur la figure de R puis File/Save as/ et choisir sonformat
Copier-coller dans Power-Pointplacer la souris sur la figure de R et taper Ctrl+Couvrir PowerPoint et dans une diapo, taper Ctrl+V.
E. Comets (UMR738) Introduction à R - Novembre 2009 53 / 65
PlanTests statistiques
GraphesGraphes avancés
Graphes simplesEléments des graphesLes différents types de graphesSauvegarde
Exercice
Tracer sur 4 figures placées sur une même page les densités deslois suivantes :
loi normale centrée réduiteloi log-normale correspondanteloi de Poisson (paramètre à choisir)loi Gamma
E. Comets (UMR738) Introduction à R - Novembre 2009 54 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Plan
Tests statistiquesMoyenne et varianceAnalyse de varianceVariables discrètesTests de distribution
GraphesGraphes simplesEléments des graphesLes différents types de graphesSauvegarde
Graphes avancésLibrairies graphiques avancéesggplot2
E. Comets (UMR738) Introduction à R - Novembre 2009 55 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Graphes avancés
Librairies graphiques spécialiséeslattice : librairie graphique apportant des fonctions treillis
ggplot2 : définition d’une “grammaire graphique“
Ces librairies sont utilisées par d’autres librairies pour tracer desgraphes
xpose par exemple utilise lattice
Conception différente d’un graphegraphe considéré comme un objet dont on spécifie lescaractéristiquespas d’ajout possible sur un graphe de type lattice (maiscomplètement paramétrable)
E. Comets (UMR738) Introduction à R - Novembre 2009 56 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Librairie lattice
Utilisation similaire aux fonctions graphiques classiques maisfonctionnement différent
création d’un objettracé automatique quand R est utilisé interactivementà l’intérieur d’un fichier (source ) ou d’une fonction, l’objet doit êtretracé explicitement par un print
Utilisation de formules (∼) décrivant les relations représentéesdans les graphes
relation directe et intuitive entre graphe et analysecapacités graphiques améliorées par rapport aux graphes de lalibrairie standard
E. Comets (UMR738) Introduction à R - Novembre 2009 57 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Librairie ggplot2
Librairie développée par Hadley Wickhampremière version ggplotutilise lattice
Apprentissagepas de tutoriellivre disponible en PDF
E. Comets (UMR738) Introduction à R - Novembre 2009 58 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Graphe de base : qplot
Fonctionne comme plot
Peut être redirigé vers un objetnécessite d’appeler l’objet pour que le graphe soit tracé
Options automatiséesajout de couleurs pour différencier des groupes (couleurs choisiesselon des palettes prédéfinies)différenciation (split) selon des groupesnom des attributs faciles à retenir (colour , size , shape )
E. Comets (UMR738) Introduction à R - Novembre 2009 59 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Un graphe avec plot
plot(airquality$Temp,airquality$Ozone,xlab="Tempera ture",ylab="Ozone",type="n")month<-sort(unique(airquality$Month))for(i in month)
points(airquality$Temp[airquality$Month==i],airquality$Ozone[airquality$Month==i],col=(i-4))
legend(60,150,month,col=(month-4),pch=1)
60 70 80 90
050
100
150
Temperature
Ozo
ne
Month
56789
E. Comets (UMR738) Introduction à R - Novembre 2009 60 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Le même graphe avec qplot
library(ggplot2)qplot(Temp,Ozone,data=airquality,colour=Month)
Temp
Ozo
ne
50
100
150
60 70 80 90
Month
5
6
7
8
9
E. Comets (UMR738) Introduction à R - Novembre 2009 61 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Changements de graphes
Fonctionne par la définition d’objets géométriques (geom)caractérisant les graphes
Ajustement d’une courbe par ajout de l’option geom="smooth"ajustement linéaire (method="lm" )ajustement de splines
Changement de style de graphehistogramme : geom="histogram"boîte à moustaches : geom="boxplot"
Deux courbes/styles peuvent se superposer :geom=c("point","smooth")
notion de couche (layer) comme Photoshop ou Gimp
E. Comets (UMR738) Introduction à R - Novembre 2009 62 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Un graphe plus sophistiqué
q1<-qplot(Temp,Ozone,data=airquality,colour=Month,g eom=c("point","smooth"),facets=.~Month,span=2,facet_grid)+geom_smooth(metho d="lm",linetype=2)q1
E. Comets (UMR738) Introduction à R - Novembre 2009 63 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Passer à ggplot2 ou pas?
Deux modes de raisonnement très différents...
Avantage des graphes ”de base“simple mais paramétrisable à l’infinion arrive toujours à faire ce qu’on veut (mais parfois on y passe dutemps!)
Avantage des graphes de ggplot2très rapide de faire de beaux graphes sans avoir à régler plein depetits détails (regroupement, comparaisons,...)relation immédiate entre le graphe et l’analyse statistiqueen revanche, plus compliqué de paramétriser certains élémentspar rapport aux graphiques de base
⇒ Choix très personnel...
E. Comets (UMR738) Introduction à R - Novembre 2009 64 / 65
PlanTests statistiques
GraphesGraphes avancés
Librairies graphiques avancéesggplot2
Pas immédiat : plusieurs graphes sur une page
plot(airquality[,1:2],type="n",axes=F,xlab="",ylab= "")pl1<-qplot(as.factor(Month),Ozone,data=airquality,c olour=Month,geom=c("jitter"),
xlab="Month")pl2<-qplot(as.factor(Month),Ozone,data=airquality,c olour=Month,geom=c("boxplot"),
xlab="Month")vp1<-viewport(width=0.5,
height=1,x=0.25,y=0.5)vp2<-viewport(width=0.5,
height=1,x=0.75,y=0.5)print(pl1,vp=vp1)print(pl2,vp=vp2)
E. Comets (UMR738) Introduction à R - Novembre 2009 65 / 65