65
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

Cours 3 - biostat.fr · Plan Tests statistiques Graphes Graphes avancés Remise en jambe : un exercice 1 Simulez deux vecteurs vec1et vec2contenant 20 réalisations d’une loi

  • 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

[email protected]

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