Vous êtes sur la page 1sur 65

Plan

Tests statistiques
Graphes
Graphes avancés

INTRODUCTION AU LOGICIEL R
3. Tests statistiques et graphes

Anne Dubois, Julie Bertrand, Emmanuelle Comets

emmanuelle.comets@inserm.fr

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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Moyenne et variance
Tests statistiques Analyse de variance
Graphes Variables discrètes
Graphes avancés 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 Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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 Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Les graphiques
La fonction de base est plot :
> x<-c(-1000:1000)*pi/500
> y<-cos(x)
> plot(x,y)
1.0
donne 0.5
0.0
y

−0.5
−1.0

−6 −4 −2 0 2 4 6

E. Comets (UMR738) Introduction à R - Novembre 2009 28 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Options de la fonction plot


main="Le titre" titre du graphe
sub="Le sous-titre" sous-titre du graphe
xlab="",ylab="" légende des axes
xlim=c(xa,xb) limites des axes
ylim=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 couleur
font=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


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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 Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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
donne 1.0
0.5
0.0
y

−0.5
−1.0

0.0 0.5 1.0 1.5 2.0 2.5 3.0

E. Comets (UMR738) Introduction à R - Novembre 2009 31 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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")
50
40
30 relation entre les variables poids et womac
womac

20
10
0

70 75 80 85

poids
E. Comets (UMR738) Introduction à R - Novembre 2009 32 / 65
Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Exercice
Réaliser le graphe suivant à partir de la base airquality
Ozone observée les 20 premiers jours du mois de mai

50
40
30
ozone

20
10
0

0 5 10 15 20

E. Comets (UMR738) Introduction à R -jours


Novembre 2009 33 / 65
Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Ajouter des éléments à un graphe

title() titre
legend() légende
text() texte
mtext() texte dans la marge
box() encadrement du graphe
lines(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


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

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)) 1.0
0.5
0.0
−0.5

cos(x)
sin(x)
x−1
−1.0

0.0 0.5 1.0 1.5 2.0 2.5 3.0

E. Comets (UMR738) x
Introduction à R - Novembre 2009 35 / 65
Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Exercice
Réaliser le graphe suivant à partir de la base airquality
Relation entre l’ozone et le vent, selon la température
120

Temp>=85°F
Temp<85°F
100
Ozone (ppb)

80
60
40

2 4 6 8 10 12 14

Vent (mph)

E. Comets (UMR738) Introduction à R - Novembre 2009 36 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Les différents types de graphes

hist() histogramme
barplot() graphe en barre
boxplot() boîte à moustache
qqplot(), qqnorm() graphe quantile-quantile
pie() camembert
pairs() corrélations entre les colonnes d’une matrice
matplot() corrélations entre les colonnes de deux matrices

E. Comets (UMR738) Introduction à R - Novembre 2009 37 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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 Histogram of airquality$Ozone

25
30

20
Frequency

Frequency

15
20

10
10

5
0

0 50 100 150 0 50 100 150

airquality$Ozone airquality$Ozone

E. Comets (UMR738) Introduction à R - Novembre 2009 38 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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)
> 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")

30
30
Frequency

Frequency

20
20

10
10
0

0
0 50 100 150 0 50 150 250 350

Ozone Solar.R

30
10 20 30
Frequency

Frequency

20
10
0

0 5 10 15 20 60 70 80 90 100

Wind Temp

E. Comets (UMR738) Introduction à R - Novembre 2009 39 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Exercice
Réaliser le graphique suivant à partir de la base swiss

7
6

0.06
5
Frequency

Density

0.04
4
3

0.02
2
1

0.00
0

0 20 40 60 80 5 10 15 20 25 30 35

Agriculture Examination
10

10
8

8
Frequency

Frequency
6

6
4

4
2

2
0

0 10 20 30 40 50 0 20 40 60 80 100

E. Comets (UMR738) Education


Introduction à R - Novembre 2009 Catholic 40 / 65
Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Boxplot
Le boxplot permet de résumer graphiquement la distribution d’un
échantillon :
> boxplot(airquality$Ozone)
150
100
50
0

Ozone
E. Comets (UMR738) Introduction à R - Novembre 2009 41 / 65
Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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)
> boxplot(airquality)
300
250
200
150
100
50
0

Ozone Solar.R Wind Temp Month Day

E. Comets (UMR738) Introduction à R - Novembre 2009 42 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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"))

0 : Temp<85
1 : Temp>85
150
100
Ozone

50
0

0 1

Itemp

E. Comets (UMR738) Introduction à R - Novembre 2009 43 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Exercice
Réaliser le graphique suivant à partir de la base swiss
90

90
80

80
70

70
Fertility

Fertility
60

60
50

50
40

40

0 : Edu <10 0 : Inf.Mort<20


1 : Edu >10 1 : Inf.Mort>20

0 1 0 1

E. Comets (UMR738) Introduction à R - Novembre 2009 44 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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")
’esoph’ Data
1.0

alcool

80−119
120+
0.8

40−79
0−39g/day
mean of ncases/ncontrols

0.6
0.4
0.2
0.0

25−34 35−44 45−54 55−64 65−74 75+

age par groupe

E. Comets (UMR738) Introduction à R - Novembre 2009 45 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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
> x1<-runif(100)
> x2<-runif(100)
> qqplot(x1,x2,main="qq-plot de x1 et x2")
> abline(0,1) qq−plot de x1 et x2
1.0
0.8
0.6
x2

0.4
0.2

0.0 0.2 0.4 0.6 0.8 1.0

x1
E. Comets (UMR738) Introduction à R - Novembre 2009 46 / 65
Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Quantile-quantile norm
Pour comparer les quantile empiriques d’un vecteur aux quantiles
théoriques de la distribution normale.
> x<-runif(100) > y<-rnorm(100)
> qqnorm(x) > qqnorm(y)
> abline(0,1) > abline(0,1)

qq−norm de x qq−norm de y
1.0

2
0.8

1
Sample Quantiles

Sample Quantiles
0.6

0
0.4

−1
0.2

−2
0.0

−3

−2 −1 0 1 2 −2 −1 0 1 2

Theoretical Quantiles Theoretical Quantiles

E. Comets (UMR738) Introduction à R - Novembre 2009 47 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Camembert
Pour faire un camembert
> pie(rep(1,12),col=rainbow(12))
4 3

5 2

6 1

7 12

8 11

9 10

E. Comets (UMR738) Introduction à R - Novembre 2009 48 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Corrélations : pairs
Trace les graphes des variables deux à deux :
> pairs(trees)
65 70 75 80 85

20
18
16
Girth

14
12
10
8
85
80

Height
75
70
65

70
60
50
Volume

40
30
20
10
8 10 12 14 16 18 20 10 20 30 40 50 60 70

E. Comets (UMR738) Introduction à R - Novembre 2009 49 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Graphes associés à un type d’objet (1)


> attach(swiss)
> lm1<-lm(Fertility~Education)
> par(mfrow=c(2,2))
> plot(lm1) Residuals vs Fitted Normal Q−Q plot
20
8 8

2
3 3

Standardized residuals
10

1
Residuals

0
−10

−1
24
−20

24

40 50 60 70 80 −2 −1 0 1 2

Fitted values Theoretical Quantiles

Scale−Location plot Cook’s distance plot


1.5

8 0.15 42
243
Standardized residuals

Cook’s distance
1.0

0.10

47

46
0.05
0.5

0.00
0.0

40 50 60 70 80 0 10 20 30 40

Fitted values Obs. number

E. Comets (UMR738) Introduction à R - Novembre 2009 50 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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 Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés Sauvegarde

Analyse de variance (3) : graphe


> 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)
350
300
250
200

N2O+O2,24h N2O+O2,op O2,24h

E. Comets (UMR738) Introduction à R - Novembre 2009 52 / 65


Plan Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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 Graphes simples
Tests statistiques Eléments des graphes
Graphes Les différents types de graphes
Graphes avancés 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 Librairies graphiques avancées
Graphes ggplot2
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 55 / 65


Plan
Tests statistiques Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

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 Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

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 Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

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 Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

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 Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

Un graphe avec plot


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)
150

Month
5
6
7
8
9
100
Ozone

50
0

60 70 80 90

Temperature
E. Comets (UMR738) Introduction à R - Novembre 2009 60 / 65
Plan
Tests statistiques Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

Le même graphe avec qplot


library(ggplot2)
qplot(Temp,Ozone,data=airquality,colour=Month)

150

100
Month
5
Ozone

6
7
8
9

50

60 70 80 90
Temp

E. Comets (UMR738) Introduction à R - Novembre 2009 61 / 65


Plan
Tests statistiques Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

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 Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

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 Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

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 Librairies graphiques avancées
Graphes ggplot2
Graphes avancés

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

Vous aimerez peut-être aussi