INTRODUCTION AU LOGICIEL R - 3. Tests statistiques et graphes

Transcription

INTRODUCTION AU LOGICIEL R - 3. Tests statistiques et graphes
Plan
Tests statistiques
Graphes
Graphes avancés
INTRODUCTION AU LOGICIEL R
3. Tests statistiques et graphes
Anne Dubois, Julie Bertrand, Emmanuelle Comets
[email protected]
INSERM UMR738
E. Comets (UMR738)
Introduction à R - Novembre 2009
1 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Plan
Tests statistiques
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Graphes
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Graphes avancés
Librairies graphiques avancées
ggplot2
E. Comets (UMR738)
Introduction à R - Novembre 2009
2 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Remise en jambe : un exercice
1
Simulez deux vecteurs vec1 et vec2 contenant 20 réalisations
d’une loi normale de moyennes respectivement 70 et 25, et de
variances 10 et 4
2
Simulez un deuxième vecteur vec3 contenant 20 réalisations
d’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, et
nommez-les "poids", "age" et "douleur" respectivement
4
Calculez les moyennes et les variances des deux variables
continues
E. Comets (UMR738)
Introduction à R - Novembre 2009
3 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Plan
Tests statistiques
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Graphes
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Graphes avancés
Librairies graphiques avancées
ggplot2
E. Comets (UMR738)
Introduction à R - Novembre 2009
4 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Test de la moyenne
Les tests usuels pour une moyenne ou une comparaison de moyenne
sont :
• le test t pour des variables normales : t.test(x) ou
t.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 en
utilisant l’argument mu=.
E. Comets (UMR738)
Introduction à R - Novembre 2009
5 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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.01140
alternative hypothesis: true difference in means != 0
95 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.8067
95 percent confidence interval:
-0.02543856 0.03253569
Il est possible d’obtenir un intervalle de confiance sur l’estimation de la
moyenne 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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Test de Wilcoxon
Pour une seule variable ou deux variables appariées, wilcox.test
produit un test des signes de Wilcoxon (sur x ou sur (x-y)).
Pour deux variables non appariées, le test correspond au test de
Mann-Whitney aussi appelé test des rangs de Wilcoxon.
L’option exact=T est utilisée pour demander un calcul exact de la
p-value.
E. Comets (UMR738)
Introduction à R - Novembre 2009
7 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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 et
non-obèses :
> t.test(expend~stature)
qui revient à tester :
> t.test(expend[stature=="lean"],expend[stature=="obese"])
Cela correspond en SAS à :
proc ttest data=energy;
class stature;
var expend;
run;
E. Comets (UMR738)
Introduction à R - Novembre 2009
8 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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 de
douleur inférieur ou supérieur à 2.
2
En utilisant le test de Wilcoxon, comparez les moyennes dans les
2 é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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Comparaison des variances (1)
Par défaut, on suppose que la variance entre les 2 groupes est
différente (ce qui n’est pas le cas en SAS). Il est préférable d’effectuer
un 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.6797
alt. 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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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 à la
normalité
> bartlett.test(expend~stature)
Bartlett test of homogeneity of variances
data: expend by stature
Bartlett’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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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" "estimate"
[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.value")
> res
stat
Lim0.025
Lim0.975
p.value
2.60640690 0.09675190 0.73256922 0.01140137
E. Comets (UMR738)
Introduction à R - Novembre 2009
12 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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.07103
alternative hypothesis: true rho is not equal to 0
sample estimates: rho
0.2576230
Par défaut retire les valeurs manquantes.
E. Comets (UMR738)
Introduction à R - Novembre 2009
13 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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 une
différente en folates selon le type de ventilation (N2 O+O2 pendant 24h,
N2 O+O2 pendant l’opération, seulement O2 pendant 24h) :
> attach(red.cell.folate)
> anova(lm(folate~ventilation))
Analysis of Variance Table
Response: folate
Df 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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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 de
ventilation :
> pairwise.t.test(folate,ventilation,p.adj="fdr")
data:
folate and ventilation
N2O+O2,24h N2O+O2,op
N2O+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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
ANOVA non paramétrique
Le test de Kruskal Wallis (kruskal.test) est la forme non paramétrique
de l’ANOVA :
> kruskal.test(folate~ventilation)
Kruskal-Wallis rank sum test
data: folate by ventilation
Kruskal-Wallis chi-squared = 4.1852, df = 2,
p-value = 0.1234
E. Comets (UMR738)
Introduction à R - Novembre 2009
16 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Exercice
1
La base airquality est un jeu de données de R contenant des
mesures 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 et
d’août.
en utilisant un test t
en utilisant un test non paramétrique
3
La concentration d’ozone est-elle comparable pour les différents
mois (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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Variables discrètes : test du χ2 (1)
Cas classique : on cherche à savoir si le fait de présenter une
caractéristique particulière (exemple : le fait de fumer) a une influence
sur la réponse à un traitement. On a donc deux vecteurs avec pour
chaque sujet, 1 s’il fume et 0 sinon, et sa réponse au traitement
considéré. Le tableau de contingence se construit avec la commande
table(x,y) :
> fumeur <- rbinom(50,1,0.4)
> reponse <- rbinom(50,1,0.4)
> table(fumeur,reponse)
reponse
fumeur 0 1
0 18 16
1 11 5
E. Comets (UMR738)
Introduction à R - Novembre 2009
18 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Test du χ2 (2)
Pour effectuer le test d’une relation entre le fait de fumer et la réponse
au traitement, on utilise la fonction chisq.test. Deux syntaxes sont
possibles :
• forme vectorielle chisq.test(x,y)
> chisq.test(fumeur,reponse)
Pearson’s Chi-squared test with Yates’ continuity correction
data: fumeur and reponse
X-squared = 0.5616, df = 1, p-value = 0.4536
• forme matricielle chisq.test(tab), en utilisant le tableau de
contingence tab
> chisq.test(table(fumeur,reponse))
...
E. Comets (UMR738)
Introduction à R - Novembre 2009
19 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Généralisation à plusieurs classes
On utilise les mêmes commandes si les variables ont plusieurs
classes :
> malade <- rbinom(15,2,0.3)
> trait <- rbinom(15,2,0.3)
> table(malade,trait)
trait
malade 0 1 2
0 2 3 2
1 2 3 1
2 1 0 1
> chisq.test(malade,trait)
Pearson’s Chi-squared test
data: malade and trait
X-squared = 1.8214, df = 4, p-value = 0.7686
Warning message:
l’approximation du Chi-2 est peut-être incorrecte in: chisq.test(malade, trait)
E. Comets (UMR738)
Introduction à R - Novembre 2009
20 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Variables discrètes (2)
La fonction CrossTable, contenue dans le package gmodels, permet
d’obtenir des tables de contigence identiques à la Proc Freq de SAS
:
> library(gmodels)
> CrossTable(fumeur,reponse,prop.t=F,prop.chisq=F)
| reponse
fumeur |
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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Tests de comparaison d’une proportion (1)
On suppose un taux de succès p = O /N où O est le nombre de
succès et N est le nombre de patients. Dans le cas de plusieurs
groupes, 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.5
X-squared = 6.962, df = 1, p-value = 0.008326
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.3961300 0.4848059
sample estimates:
p
0.44
E. Comets (UMR738)
Introduction à R - Novembre 2009
22 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Tests de comparaison d’une proportion (1)
On suppose un taux de succès p = O /N où O est le nombre de
succès et N est le nombre de patients. Dans le cas de plusieurs
groupes, 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
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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: x
W = 0.9872, p-value = 0.4523
> shapiro.test(y)
Shapiro-Wilk normality test
data: y
W = 0.9516, p-value = 0.001055
E. Comets (UMR738)
Introduction à R - Novembre 2009
24 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests 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 test
data: x and y
D = 0.55, p-value = 0.003967
alternative hypothesis: two.sided
> ks.test(x,"pnorm")
One-sample Kolmogorov-Smirnov test
data: x
D = 0.5048, p-value = 3.032e-05
alternative hypothesis: two.sided
E. Comets (UMR738)
Introduction à R - Novembre 2009
25 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Exercice
Reprendre la base airquality pour répondre à la question : y’a-t-il
une 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 loi
normale?
attention aux données manquantes
E. Comets (UMR738)
Introduction à R - Novembre 2009
26 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Plan
Tests statistiques
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Graphes
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Graphes avancés
Librairies graphiques avancées
ggplot2
E. Comets (UMR738)
Introduction à R - Novembre 2009
27 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Les graphiques
La fonction de base est plot :
1.0
> x<-c(-1000:1000)*pi/500
> y<-cos(x)
> plot(x,y)
y
−1.0
−0.5
0.0
0.5
donne
−6
−4
−2
0
2
4
6
x
E. Comets (UMR738)
Introduction à R - Novembre 2009
28 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Options de la fonction plot
main="Le titre"
sub="Le sous-titre"
xlab="",ylab=""
xlim=c(xa,xb)
ylim=c(ya,yb)
type=""
log=""
pch=n, lty=n
col=n
font=n,cex=n
titre du graphe
sous-titre du graphe
légende des axes
limites des axes
par défaut : "p" pour points
sinon "l", "o", "h" ou "s"
échelle logarithmique pour les X ("x"),
pour les Y ("y") ou les 2("xy")
symbole ou type de ligne utilisé
couleur
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
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Types de symboles utilisables (pour référence)
plot symbols : points (... pch = *, cex = 3 )
0
6
12
18
24
0
0
1
7
13
19
25
+
+
2
8
14
20
*
−
−
3
9
15
21
.
|
|
4
10
16
22
o
o
%
%
5
11
17
23
O
O
#
#
E. Comets (UMR738)
Introduction à R - Novembre 2009
*
30 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
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")
graphe de la fonction cosinus
y
−1.0
−0.5
0.0
0.5
1.0
donne
0.0
0.5
1.0
1.5
2.0
2.5
3.0
x
E. Comets (UMR738)
Introduction à R - Novembre 2009
31 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
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")
0
10
20
womac
30
40
50
relation entre les variables poids et womac
70
75
80
85
poids
E. Comets (UMR738)
Introduction à R - Novembre 2009
32 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Exercice
Réaliser le graphe suivant à partir de la base airquality
0
10
20
ozone
30
40
50
Ozone observée les 20 premiers jours du mois de mai
0
E. Comets (UMR738)
5
10
Introduction à R -jours
Novembre 2009
15
20
33 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Ajouter des éléments à un graphe
title()
legend()
text()
mtext()
box()
lines(x,y)
points(a,b)
arrows(a,b,c,d)
abline(a,b)
E. Comets (UMR738)
titre
légende
texte
texte dans la marge
encadrement du graphe
trait entre x(=c(a,b)) et y(=c(c,d))
tracé du point de coordonnées (a,b)
tracé d’une flèche entre (a,b) et (c,d)
tracé de la droite d’ordonnée à l’origine a et
de pente b
Introduction à R - Novembre 2009
34 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Exemple
−0.5
0.0
0.5
1.0
>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))
−1.0
cos(x)
sin(x)
x−1
0.0
E. Comets (UMR738)
0.5
1.0
1.5
2.0
2.5
x
Introduction à R - Novembre
2009
3.0
35 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Exercice
Réaliser le graphe suivant à partir de la base airquality
120
Relation entre l’ozone et le vent, selon la température
80
40
60
Ozone (ppb)
100
Temp>=85°F
Temp<85°F
2
4
6
8
10
12
14
Vent (mph)
E. Comets (UMR738)
Introduction à R - Novembre 2009
36 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Les différents types de graphes
hist()
barplot()
boxplot()
qqplot(), qqnorm()
pie()
pairs()
matplot()
E. Comets (UMR738)
histogramme
graphe en barre
boîte à moustache
graphe quantile-quantile
camembert
corrélations entre les colonnes d’une matrice
corrélations entre les colonnes de deux matrices
Introduction à R - Novembre 2009
37 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Histogramme
On peut spécifier le nombre de barres de l’histogramme grâce à la
commande breaks
hist(airquality$Ozone)
hist(airquality$Ozone
,breaks=20)
Histogram of airquality$Ozone
20
15
Frequency
10
20
0
0
5
10
Frequency
30
25
Histogram of airquality$Ozone
0
50
100
150
0
airquality$Ozone
E. Comets (UMR738)
50
100
150
airquality$Ozone
Introduction à R - Novembre 2009
38 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Histogrammes de plusieurs variables
Pour tracer plusieurs graphes sur la même page (ex : histogramme de
différentes variables), on utilise l’option mfrow=c(m,n)
20
Frequency
0
10
20
10
0
Frequency
30
30
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")
0
50
100
150
0
50
250
350
30
20
Frequency
10
0
0
5
10
15
20
60
Wind
E. Comets (UMR738)
150
Solar.R
10 20 30
Frequency
Ozone
0
>
>
>
>
>
Introduction à R - Novembre 2009
70
80
90
100
Temp
39 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Exercice
0.02
0.04
Density
4
3
0
0.00
1
2
Frequency
5
0.06
6
7
Réaliser le graphique suivant à partir de la base swiss
0
20
40
60
80
5
10
20
25
30
35
10
8
6
0
2
4
Frequency
8
6
4
Frequency
2
0
0
E. Comets (UMR738)
15
Examination
10
Agriculture
10
20
30
40
50
Education
Introduction
0
20
à R - Novembre 2009
40
60
Catholic
80
100
40 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Boxplot
Le boxplot permet de résumer graphiquement la distribution d’un
échantillon :
0
50
100
150
> boxplot(airquality$Ozone)
Ozone
E. Comets (UMR738)
Introduction à R - Novembre 2009
41 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Boxplot de plusieurs variables
On peut tracer un boxplot d’un data.frame (peu d’intérêt si les échelles
des variables sont trop différentes)
0
50
100
150
200
250
300
> boxplot(airquality)
Ozone
E. Comets (UMR738)
Solar.R
Wind
Temp
Month
Introduction à R - Novembre 2009
Day
42 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
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"))
100
50
Ozone
150
0 : Temp<85
1 : Temp>85
0
>
>
>
>
0
1
Itemp
E. Comets (UMR738)
Introduction à R - Novembre 2009
43 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Exercice
90
80
70
60
Fertility
0 : Edu <10
1 : Edu >10
0
E. Comets (UMR738)
40
50
60
40
50
Fertility
70
80
90
Réaliser le graphique suivant à partir de la base swiss
1
Introduction à R - Novembre 2009
0 : Inf.Mort<20
1 : Inf.Mort>20
0
1
44 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Les spaghetti plot
La fonction interaction.plot trace des données longitudinales selon des
catégories (en particulier par sujet)
>attach(esoph)
>interaction.plot(agegp, alcgp, ncases/ncontrols,
xlab="age par groupe",trace.label="alcool")
1.0
’esoph’ Data
alcool
0.6
0.4
0.0
0.2
mean of ncases/ncontrols
0.8
80−119
120+
40−79
0−39g/day
25−34
35−44
45−54
55−64
65−74
75+
age par groupe
E. Comets (UMR738)
Introduction à R - Novembre 2009
45 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
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-plot
est proche de la droite y=x
0.4
x2
0.6
0.8
1.0
x1<-runif(100)
x2<-runif(100)
qqplot(x1,x2,main="qq-plot de x1 et x2")
qq−plot de x1 et x2
abline(0,1)
0.2
>
>
>
>
0.0
E. Comets (UMR738)
0.2
0.4
0.6
x1
0.8
Introduction à R - Novembre 2009
1.0
46 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Quantile-quantile norm
Pour comparer les quantile empiriques d’un vecteur aux quantiles
théoriques de la distribution normale.
> x<-runif(100)
> qqnorm(x)
> abline(0,1)
> y<-rnorm(100)
> qqnorm(y)
> abline(0,1)
qq−norm de y
0
−3
0.0
−2
−1
Sample Quantiles
0.6
0.4
0.2
Sample Quantiles
1
0.8
2
1.0
qq−norm de x
−2
−1
0
1
2
−2
Theoretical Quantiles
E. Comets (UMR738)
−1
0
1
2
Theoretical Quantiles
Introduction à R - Novembre 2009
47 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Camembert
Pour faire un camembert
> pie(rep(1,12),col=rainbow(12))
4
3
5
2
6
1
7
12
8
11
9
E. Comets (UMR738)
10
Introduction à R - Novembre 2009
48 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Corrélations : pairs
Trace les graphes des variables deux à deux :
> pairs(trees)
70
75
80
85
16
18
20
65
80
85
8
10
12
14
Girth
50
60
70
65
70
75
Height
10
20
30
40
Volume
8
10
12
E. Comets (UMR738)
14
16
18
20
10
Introduction à R - Novembre 2009
20
30
40
50
60
70
49 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Graphes associés à un type d’objet (1)
Normal Q−Q plot
−10
1
3
0
0
10
Standardized residuals
3
Residuals
8
2
8
−1
20
attach(swiss)
lm1<-lm(Fertility~Education)
par(mfrow=c(2,2))
plot(lm1)
Residuals vs Fitted
−20
24
24
40
50
60
70
80
−2
Fitted values
0
1
2
0.15
Cook’s distance plot
0.10
42
47
46
0.00
0.05
1.0
Cook’s distance
8
243
0.5
Standardized residuals
1.5
Scale−Location plot
40
50
60
Fitted values
E. Comets (UMR738)
−1
Theoretical Quantiles
0.0
>
>
>
>
70
80
0
10
20
30
40
Obs. number
Introduction à R - Novembre 2009
50 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
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 comment
construire les graphes associés aux résultats d’une régression
liné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
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Analyse de variance (3) : graphe
250
300
350
xbar <- tapply(folate,ventilation, mean)
s <- tapply(folate,ventilation,sd)
n <- tapply(folate,ventilation,length) # nombre de patients
sem <- s/sqrt(n)
stripchart(folate~ventilation,pch=16,vert=T)
arrows(1:3,xbar+sem,1:3,xbar-sem,angle=90,code=3,length=.1)
lines(1:3,xbar,pch=4,type="b",cex=2)
200
>
>
>
>
>
>
>
N2O+O2,24h
E. Comets (UMR738)
N2O+O2,op
Introduction à R - Novembre 2009
O2,24h
52 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Enregistrer une figure
Sauvegarde avec une commande, exemple en postscript
postscript("mongraphe.eps")
par(mfrow=c(2,2))
plot(lm1)
dev.off()
Formats disponibles
jpeg : jpeg("mongraphe.jpg")
postscript : postscript("mongraphe.eps")
png : png("mongraphe.png")
Sauvegarde avec la fenêtre graphique
placer la souris sur la figure de R puis File/Save as/ et choisir son
format
Copier-coller dans Power-Point
placer la souris sur la figure de R et taper Ctrl+C
ouvrir PowerPoint et dans une diapo, taper Ctrl+V.
E. Comets (UMR738)
Introduction à R - Novembre 2009
53 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Exercice
Tracer sur 4 figures placées sur une même page les densités des
lois suivantes :
loi normale centrée réduite
loi log-normale correspondante
loi de Poisson (paramètre à choisir)
loi Gamma
E. Comets (UMR738)
Introduction à R - Novembre 2009
54 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Plan
Tests statistiques
Moyenne et variance
Analyse de variance
Variables discrètes
Tests de distribution
Graphes
Graphes simples
Eléments des graphes
Les différents types de graphes
Sauvegarde
Graphes avancés
Librairies graphiques avancées
ggplot2
E. Comets (UMR738)
Introduction à R - Novembre 2009
55 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Graphes avancés
Librairies graphiques spécialisées
lattice : librairie graphique apportant des fonctions treillis
ggplot2 : définition d’une “grammaire graphique“
Ces librairies sont utilisées par d’autres librairies pour tracer des
graphes
xpose par exemple utilise lattice
Conception différente d’un graphe
graphe considéré comme un objet dont on spécifie les
caractéristiques
pas d’ajout possible sur un graphe de type lattice (mais
complètement paramétrable)
E. Comets (UMR738)
Introduction à R - Novembre 2009
56 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Librairie lattice
Utilisation similaire aux fonctions graphiques classiques mais
fonctionnement différent
création d’un objet
tracé automatique quand R est utilisé interactivement
à l’intérieur d’un fichier (source) ou d’une fonction, l’objet doit être
tracé explicitement par un print
Utilisation de formules (∼) décrivant les relations représentées
dans les graphes
relation directe et intuitive entre graphe et analyse
capacités graphiques améliorées par rapport aux graphes de la
librairie standard
E. Comets (UMR738)
Introduction à R - Novembre 2009
57 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Librairie ggplot2
Librairie développée par Hadley Wickham
première version ggplot
utilise lattice
Apprentissage
pas de tutoriel
livre disponible en PDF
E. Comets (UMR738)
Introduction à R - Novembre 2009
58 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Graphe de base : qplot
Fonctionne comme plot
Peut être redirigé vers un objet
nécessite d’appeler l’objet pour que le graphe soit tracé
Options automatisées
ajout de couleurs pour différencier des groupes (couleurs choisies
selon des palettes prédéfinies)
différenciation (split) selon des groupes
nom des attributs faciles à retenir (colour, size, shape)
E. Comets (UMR738)
Introduction à R - Novembre 2009
59 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Un graphe avec plot
150
plot(airquality$Temp,airquality$Ozone,xlab="Temperature",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)
Month
0
50
Ozone
100
5
6
7
8
9
60
70
80
90
Temperature
E. Comets (UMR738)
Introduction à R - Novembre 2009
60 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Le même graphe avec qplot
library(ggplot2)
qplot(Temp,Ozone,data=airquality,colour=Month)
150
100
Month
Ozone
5
6
7
8
9
50
60
70
80
90
Temp
E. Comets (UMR738)
Introduction à R - Novembre 2009
61 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
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 graphe
histogramme : 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
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Un graphe plus sophistiqué
q1<-qplot(Temp,Ozone,data=airquality,colour=Month,geom=c("point","smooth"),
facets=.~Month,span=2,facet_grid)+geom_smooth(method="lm",linetype=2)
q1
E. Comets (UMR738)
Introduction à R - Novembre 2009
63 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
Passer à ggplot2 ou pas?
Deux modes de raisonnement très différents...
Avantage des graphes ”de base“
simple mais paramétrisable à l’infini
on arrive toujours à faire ce qu’on veut (mais parfois on y passe du
temps!)
Avantage des graphes de ggplot2
très rapide de faire de beaux graphes sans avoir à régler plein de
petits détails (regroupement, comparaisons,...)
relation immédiate entre le graphe et l’analyse statistique
en revanche, plus compliqué de paramétriser certains éléments
par rapport aux graphiques de base
⇒ Choix très personnel...
E. Comets (UMR738)
Introduction à R - Novembre 2009
64 / 65
Plan
Tests statistiques
Graphes
Graphes avancés
Librairies graphiques avancées
ggplot2
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,colour=Month,geom=c("jitter"),
xlab="Month")
pl2<-qplot(as.factor(Month),Ozone,data=airquality,colour=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