Inférence Statistique avec R : Tests et ANOVA
Inférence Statistique avec R : Tests et ANOVA
I. GENERALITES
Boxplot brut
> PoidsA=c(7,8,6,9,4,7,9,11)
> PoidsB=c(9,16,21,11,18,17,15,19)
> PoidsC=c(15,10,17,6,12,14,16,11)
> boxplot(PoidsA,PoidsB,PoidsC)
L’hypothèse nulle H0 est du genre : « les deux moyennes sont significativement les mêmes»
ce qui se traduit par l’égalité :
D’où :
Après test :
Exemple : Deux groupes de participants (A et B) ont pris part à une reconnaissance de mots.
La moyenne du groupe A est de 11 mots reconnus alors que celle du groupe B s’élève à 14
mots. La question est la suivante: la moyenne du groupe B est-elle significativement plus
élevée que celle du groupe A?
Groupe A Groupe B
10 14
11 12
12 13
12 13
10 15
11 15
11 14
9 14
13 14
16
Données :
La moyenne du groupe B n’est pas significativement plus élevée que celle du groupe A.
5
Résolution dans R :
> mots=c(10,11,12,12,10,11,11,9,13,14,12,13,13,15,15,14,14,14,16)
>groupes=c("A","A","A","A","A","A","A","A","A","B","B","B","B","B","B","B",
"B","B","B")
> test=[Link](mots~groupes,paired=FALSE)
> test
Le test que nous allons décrire dans cette section est utilisé lorsque nous voulons comparer
deux moyennes issues d’un même groupe.
Exemple : Dix étudiants ont passé un test X dans une matière donnée. Ils ont ensuite
retravaillé la matière et ont subi un deuxième test Y. Les moyennes des deux tests
Données :
Résolution dans R :
> cotes=c(13,14,12,10,15,18,9,7,10,14,15,15,14,12,14,19,9,8,11,15)
> examen=c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2)
> test=[Link](cotes~examen,paired=TRUE)
> test
Paired t-test
II.2.1. ANOVA I
II.2.1.1. Description
Lorsque nous avons affaire à trois moyennes ou plus, nous ne pouvons pas faire appel au test
t. Il nous faut utiliser l’analyse de variance, également appelée ANOVA (terme basé sur
l’anglais, « Analysis of variance »).
L’application de l’ANOVA I comme test est sujette au respect d’un nombre de conditions qui
sont:
échantillon aléatoire;
observations indépendantes;
variable réponse quantitative;
une variable explicative qualitative à 3 niveaux ou plus;
distribution normale des résidus (residuals, en anglais. Par résidu, on entend la
différence ̅ );
Homoscédasticité :
Résolution :
H0 : μ1 = μ2 = μ3 : pas d’effet des types de groupe sur la capacité à remémorer les mots.
8
H1 : pas (μ1 = μ2 = μ3) : effet de type de groupe sur la capacité de remémorer et signaler des
mots).
1. Encodage des données et test ANOVA
>Mots=c(34,28,25,31,27,17,19,18,21,27,19,17,24,23,33,27,25,35,20,23,27,26,2
8,26)
>Groupes=[Link](c("D","D","D","D","D","D","G","G","G","G","G","G","G","G
","C","C","C","C","C","C","C","C","C","C"))
> Test=aov(Mots~Groupes)
> Test
Call:
aov(formula = Mots ~ Groupes)
Terms:
Groupes Residuals
Sum of Squares 192 424
Deg. of Freedom 2 21
$Groupes
diff lwr upr p adj
D-C 0 -5.848661 5.8486610 1.0000000
G-C -6 -11.372338 -0.6276618 0.0268841
G-D -6 -12.116676 0.1166761 0.0551619
data: residuals(Test)
W = 0.9684, p-value = 0.627
A travers ce test on cherche à vérifier l’égalité entre les variances des modalités du
facteur. Ainsi son hypothèse nulle H0 = « les variances sont les mêmes », ce qui traduit
l’existence de l’homoscedasticité (égalité des variances).
Dans le cas où H0 est rejetée (c’est-à-dire que H1 est acceptée) on parle de l’existence
de l’hétéroscedasticité (différence d’au-moins deux variances).
> [Link](Mots~Groupes)
Conclusion : p-value (0.4512) > seuil(0.05), H0 est accepté (la variance entre les
groupes est la même).
Exercice 2 : Trois groupes de souris sont nourris avec trois types d’aliment différents. Les
poids de ces souris sont donnés dans le tableau ci-dessous. Existe-t-il un effet des types
d’aliment sur le gain de poids par ces souris ?
Résolution :
H0 : μA = μB = μC : pas d’effet des types d’aliment sur le gain de poids.
H1 : pas (μA = μB = μC) : effet des types d’aliment sur le gain de poids.
Terms:
Aliments Residuals
Sum of Squares 268.75 237.25
Deg. of Freedom 2 21
11
Pr (=0,0003516) < seuil (=0,001), rejet de H0:Il y a un effet des types d’aliment sur le gain de
poids.
> TukeyHSD(Test)
Tukey multiple comparisons of means
95% family-wise confidence level
$Aliments
diff lwr upr p adj
B-A 8.125 3.8889383 12.361062 0.0002516
C-A 5.000 0.7639383 9.236062 0.0189643
C-B -3.125 -7.3610617 1.111062 0.1753074
> qqline(residuals(Test))
12
> [Link](residuals(Test))
data: residuals(Test)
W = 0.9569, p-value = 0.38
Comme p-value(0,2704)> seuil (=0,05), H0 est accepté, la variance est la même entre les
différents groupes.
G1 G2 G3 L1 L2
12.4 12.4 13 15.5 15
13.5 14 15 13 17.8
11.5 15.6 13.7 15.9 19
7 17.4 14.7 16 17.9
8.4 13.3 14 17 14.7
9 16.7 15 18.9 15.8
10.4 17 14.8 17.3 16
15 17.8 17.8 12.5 15.6
13.5 13.2 14.8 15.9 14.9
14 12 15 17.7 15
12.5 15 16 14 16
12 14.5 16.3 16 18
11.5 9.6 12 17 16.3
10 11 13 15.7 15
a) Existe-t-il une différence significative dans la réussite des étudiants de ces promotions
enquêtées ?
b) Réalisez un test de comparaison multiple afin de voir comment les promotions se
comportent deux à deux.
c) Testez la normalité des résidus pour cette analyse, sur base d’un graphique quantile-
quantile mais aussi en utilisant un test de Shapiro.
d) Vérifiez si l’hypothèse que ces distributions se caractérisent par une homogénéité des
variances (homoscedasticité).
e) Représentez ces différents résultats sur des boxplots diversement colorés, en donnant
un nom à l’axe des abscisses (appelé « Promotions » et à l’axe des ordonnées (appelé
« Cotes obtenues »).
Résolution :
H0, il n'y a pas de différence significative dans la réussite des étudiants par promotion.
>Cotes=c(12.4,13.5,11.5,7,8.4,9,10.4,15,13.5,14,12.5,12,11.5,10,12.4,14,15.
6,17.4,13.3,16.7,17,17.8,13.2,12,15,14.5,9.6,11,13,15,13.7,14.7,14,15,14.8,
17.8,14.8,15,16,16.3,12,13,15.4,13,15.9,16,17,18.9,17.3,12.5,15.9,17.7,14,1
6,17,15.7,15,17.8,19,17.9,14.7,15.8,16,15.6,14.9,15,16,18,16.3,15)
>Promotions=c("G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","G1","
G1","G1","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","G2","
G2","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","G3","
L1","L1","L1","L1","L1","L1","L1","L1","L1","L1","L1","L1","L1","L1","L2","
L2","L2","L2","L2","L2","L2","L2","L2","L2","L2","L2","L2","L2")
> G1=c(12.4,13.5,11.5,7,8.4,9,10.4,15,13.5,14,12.5,12,11.5,10)
> G2=c(12.4,14,15.6,17.4,13.3,16.7,17,17.8,13.2,12,15,14.5,9.6,11)
> G3=c(13,15,13.7,14.7,14,15,14.8,17.8,14.8,15,16,16.3,12,13)
> L1=c(15.4,13,15.9,16,17,18.9,17.3,12.5,15.9,17.7,14,16,17,15.7)
> L2=c(15,17.8,19,17.9,14.7,15.8,16,15.6,14.9,15,16,18,16.3,15)
14
a) Test ANOVA :
> Test=aov(Cotes~Promotions)
> Test
Call:
aov(formula = Cotes ~ Promotions)
Terms:
Promotions Residuals
Sum of Squares 196.7434 243.9743
Deg. of Freedom 4 65
> summary(Test)
Df Sum Sq Mean Sq F value Pr (>F)
Promotions 4 196.74 49.186 13.104 6.983e-08 ***
Residuals 65 243.97 3.753
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Pr < seuil, rejet de H0, il y a différence significative dans la réussite des étudiants par
promotion.
> TukeyHSD(Test)
Tukey multiple comparisons of means
95% family-wise confidence level
$Promotions
diff lwr upr p adj
G2-G1 2.7714286 0.71683100 4.826026 0.0030198
G3-G1 3.1714286 1.11683100 5.226026 0.0004903
L1-G1 4.4000000 2.34540243 6.454598 0.0000009
L2-G1 4.7357143 2.68111671 6.790312 0.0000001
G3-G2 0.4000000 -1.65459757 2.454598 0.9820269
L1-G2 1.6285714 -0.42602614 3.683169 0.1839579
L2-G2 1.9642857 -0.09031186 4.018883 0.0676418
L1-G3 1.2285714 -0.82602614 3.283169 0.4546331
L2-G3 1.5642857 -0.49031186 3.618883 0.2175404
L2-L1 0.3357143 -1.71888329 2.390312 0.9906935
c) Véfication de la normalité :
> qqnorm(residuals(Test))
15
> qqline(residuals(Test))
Test de Shapiro :
H0 = il y a normalité de résidus.
> [Link](residuals(Test))
data: residuals(Test)
W = 0.9845, p-value = 0.5433
> [Link](Cotes~Promotions)
e) boxplot.
> Mytable=[Link](cbind(G1,G2,G3,L1,L2))
> Mytable
G1 G2 G3 L1 L2
1 12.4 12.4 13.0 15.4 15.0
2 13.5 14.0 15.0 13.0 17.8
3 11.5 15.6 13.7 15.9 19.0
4 7.0 17.4 14.7 16.0 17.9
5 8.4 13.3 14.0 17.0 14.7
6 9.0 16.7 15.0 18.9 15.8
7 10.4 17.0 14.8 17.3 16.0
8 15.0 17.8 17.8 12.5 15.6
9 13.5 13.2 14.8 15.9 14.9
10 14.0 12.0 15.0 17.7 15.0
11 12.5 15.0 16.0 14.0 16.0
12 12.0 14.5 16.3 16.0 18.0
13 11.5 9.6 12.0 17.0 16.3
14 10.0 11.0 13.0 15.7 15.0
II.2.1. ANOVA II :
Dans ANOVA II, on dispose d’une variable quantitative à expliquer et de deux facteurs
(variables qualitatives explicatives).
Résolution sur R :
Résolution :
> Variété=c("A","A","A","B","B","B","C","C","C","D","D","D")
> Ferme=c("X","Y","Z","X","Y","Z","X","Y","Z","X","Y","Z")
> Data=[Link](cbind(Rendement,Variété,Ferme))
> Data
Rendement Variété Ferme
1 0.327 A X
2 0.532 A Y
3 0.269 A Z
4 0.5 B X
5 0.599 B Y
6 0.308 B Z
7 0.442 C X
8 0.516 C Y
9 0.241 C Z
10 0.471 D X
11 0.638 D Y
12 0.305 D Z
Execution d'ANOVA
> Test=aov(Rendement~Variété+Ferme,Data)
> Test
Call:
aov(formula = Rendement ~ Variété + Ferme, data = Data)
Terms:
Variété Ferme Residuals
Sum of Squares 0.02118467 0.16899650 0.00891683
Deg. of Freedom 3 2 6
> summary(Test)
Df Sum Sq Mean Sq F value Pr(>F)
Variété 3 0.021185 0.007062 4.7516 0.0501154 .
Ferme 2 0.168997 0.084498 56.8576 0.0001259 ***
Residuals 6 0.008917 0.001486
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Conclusion :
Pour la variété : pr = 0.0501154 ≃0,05, acceptation de H0 : la variété n’a aucun effet sur le
rendement.
19
Pour la ferme : pr = 0,0001259 < 0,05 (seuil), rejet de H0 : le type de ferme a un effet sur le
rendement.
> TukeyHSD(Test)
Tukey multiple comparisons of means
95% family-wise confidence level
$Variété
diff lwr upr p adj
B-A 0.093000000 -0.01596196 0.20196196 0.0908366
C-A 0.023666667 -0.08529530 0.13262863 0.8728537
D-A 0.095333333 -0.01362863 0.20429530 0.0831372
C-B -0.069333333 -0.17829530 0.03962863 0.2245411
D-B 0.002333333 -0.10662863 0.11129530 0.9998367
D-C 0.071666667 -0.03729530 0.18062863 0.2055376
$Ferme
diff lwr upr p adj
Y-X 0.13625 0.05261099 0.21988901 0.0058868
Z-X -0.15425 -0.23788901 -0.07061099 0.0031607
Z-Y -0.29050 -0.37413901 -0.20686099 0.0000993
Un coefficient de corrélation est une valeur numérique qui reflète le sens et la force de la
relation entre deux variables. Ce coefficient s’étend de +1 (corrélation positive maximale) à -1
(corrélation négative maximale):
- Une valeur élevée et positive (ex. 0,7 ou 0,8) signale que les deux variables sont corrélées de
manière forte et positive.
- Une valeur plus basse mais toujours positive (ex. 0,3 ou 0,4) signale une corrélation faible et
positive.
- Une valeur autour de zéro signifie l’absence d’une corrélation.
- Une valeur négative signale que la corrélation est négative : si la valeur est peu importante
(ex. -0,3 ou -0,4), cela traduit une faible corrélation ; si la valeur est élevée (ex. -0,7 ou -0,8),
elle est forte.
Dans le tableau ci-dessous, nous reprenons les valeurs de poids et de la taille de 12 personnes
afin d’étudier la corrélation entre les deux variables.
Résolution dans R :
Graphique Taille-Poids
> Taille=c(167,167,171,173,165,168,172,165,167,168,161,170)
> Poids=c(61,60,64,60,52,56,64,57,58,53,53,58)
> cor(Taille,Poids,method="pearson")
[1] 0.6903584
> [Link](Taille,Poids)
0.6903584
p-value étant < 0,05 (le seuil), acceptation de H0, il y a corrélation entre Taille et Poids.
Et comme r = 0.6903584, cette corrélation est forte.
Equation de Régression:
> Tableau=[Link](cbind(Taille,Poids))
> Tableau
Taille Poids
1 167 61
2 167 60
3 171 64
4 173 60
5 165 52
6 168 56
7 172 64
8 165 57
9 167 58
10 168 53
11 161 53
12 170 58
21
> Régression=lm(Poids~Taille,Tableau)
> Régression
Call:
lm(formula = Poids ~ Taille, data = Tableau)
Coefficients:
(Intercept) Taille
-81.7857 0.8329
Droite de régression
> abline(Régression)
22
> summary(Régression)
Call:
lm(formula = Poids ~ Taille, data = Tableau)
Residuals:
Min 1Q Median 3Q Max
-5.1388 -2.1799 0.6927 2.5708 3.6941
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -81.7857 46.3326 -1.765 0.1080
Taille 0.8329 0.2760 3.018 0.0129 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> Taille=c(167,167,171,173,165,168,172,165,167,168,161,170)
> Poids=c(61,60,64,60,52,56,64,57,58,53,53,58)
> Age=c(18.5,19,21.6,18.4,17.8,22.9,21,19.2,20,20.1,21.4,23.7)
> DuréeSommeil=c(10,9.8,6.7,6,8,8.2,7,6.8,9,5,5.7,5.1)
> Tableau1=[Link](cbind(Taille,Poids,Age,DuréeSommeil))
> Tableau1
Taille Poids Age DuréeSommeil
1 167 61 18.5 10.0
2 167 60 19.0 9.8
3 171 64 21.6 6.7
4 173 60 18.4 6.0
5 165 52 17.8 8.0
6 168 56 22.9 8.2
7 172 64 21.0 7.0
8 165 57 19.2 6.8
9 167 58 20.0 9.0
10 168 53 20.1 5.0
11 161 53 21.4 5.7
12 170 58 23.7 5.1
> Reg=lm(Poids~Taille+Age+DuréeSommeil,Tableau1)
> Reg
23
Call:
lm(formula = Poids ~ Taille + Age + DuréeSommeil, data = Tableau1)
Coefficients:
(Intercept) Taille Age DuréeSommeil
-104.9970 0.8889 0.3200 1.0042
> summary(Reg)
Call:
lm(formula = Poids ~ Taille + Age + DuréeSommeil, data = Tableau1)
Residuals:
Min 1Q Median 3Q Max
-3.9091 -1.3715 -0.0417 2.3150 3.3464
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -104.9970 45.7571 -2.295 0.0509 .
Taille 0.8889 0.2652 3.352 0.0100 *
Age 0.3200 0.5212 0.614 0.5563
DuréeSommeil 1.0042 0.5605 1.792 0.1110
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Exercice TP 4
Exercice 1
Encodage des données
>Poids=c(9.6,6.7,10,11.2,6.8,9.2,8.1,7.5,5.5,6.8,7.2,8.8,8.8,9.4,10.2,11,7.
5,8.6,8.2,6)
>Aliment=c("A","A","A","A","B","B","B","B","C","C","C","C","D","D","D","D",
"E","E","E","E")
>Race=c("Noir","Gris","Blanc","Foncé","Noir","Gris","Blanc","Foncé","Noir",
"Gris","Blanc","Foncé","Noir","Gris","Blanc","Foncé","Noir","Gris","Blanc",
"Foncé")
> Tableau=[Link](cbind(Poids,Aliment,Race))
> Tableau
Poids Aliment Race
1 9.6 A Noir
2 6.7 A Gris
3 10 A Blanc
4 11.2 A Foncé
5 6.8 B Noir
6 9.2 B Gris
7 8.1 B Blanc
8 7.5 B Foncé
9 5.5 C Noir
10 6.8 C Gris
11 7.2 C Blanc
12 8.8 C Foncé
13 8.8 D Noir
14 9.4 D Gris
15 10.2 D Blanc
24
16 11 D Foncé
17 7.5 E Noir
18 8.6 E Gris
19 8.2 E Blanc
20 6 E Foncé
Execution d'ANOVA
> Test=aov(Poids~Aliment+Race,Tableau)
> Test
Call:
aov(formula = Poids ~ Aliment + Race, data = Tableau)
Terms:
Aliment Race Residuals
Sum of Squares 22.9170 5.0135 21.2390
Deg. of Freedom 4 3 12
> summary(Test)
Df Sum Sq Mean Sq F value Pr(>F)
Aliment 4 22.9170 5.7293 3.2370 0.05095 .
Race 3 5.0135 1.6712 0.9442 0.44989
Residuals 12 21.2390 1.7699
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
$Aliment
diff lwr upr p adj
B-A -1.475 -4.4734884 1.5234884 0.5423367
C-A -2.300 -5.2984884 0.6984884 0.1686901
D-A 0.475 -2.5234884 3.4734884 0.9852847
E-A -1.800 -4.7984884 1.1984884 0.3611694
C-B -0.825 -3.8234884 2.1734884 0.8999753
D-B 1.950 -1.0484884 4.9484884 0.2916342
E-B -0.325 -3.3234884 2.6734884 0.9965012
D-C 2.775 -0.2234884 5.7734884 0.0746186
E-C 0.500 -2.4984884 3.4984884 0.9822258
E-D -2.275 -5.2734884 0.7234884 0.1757435
$Race
diff lwr upr p adj
Foncé-Blanc 0.16 -2.338056 2.658056 0.9974235
Gris-Blanc -0.60 -3.098056 1.898056 0.8900023
Noir-Blanc -1.10 -3.598056 1.398056 0.5757924
Gris-Foncé -0.76 -3.258056 1.738056 0.8034464
Noir-Foncé -1.26 -3.758056 1.238056 0.4685275
25
Commentaire :Il n'y pas d'effet du type d'aliment ni de la race sur la croissance pondérale.
Exercice 2
>Mois=c("janvier","février","mars","avril","mai","juin","juillet","août","s
eptembre","octobre","novembre","décembre")
> Hauteur=c(123.6,125.6,100.5,113,134,125,124.9,143.7,129,153,146.9,135)
> Diamètre=c(20.5,23.7,34.6,24.7,23,26,27,28.9,27.4,27.9,28.9,33.8)
Comme r = -0,04, corrélation très faible en plus, les deux variables sont inversement
proportionnelles.
> [Link](Hauteur,Diamètre)
b) Régression.
> Tableau2=[Link](cbind(Hauteur,Diamètre))
> Tableau2
Hauteur Diamètre
1 123.6 20.5
2 125.6 23.7
3 100.5 34.6
4 113.0 24.7
5 134.0 23.0
6 125.0 26.0
7 124.9 27.0
8 143.7 28.9
9 129.0 27.4
10 153.0 27.9
11 146.9 28.9
12 135.0 33.8
> Régression=lm(Diamètre~Hauteur,Tableau2)
> Régression
Call:
lm(formula = Diamètre ~ Hauteur, data = Tableau2)
Coefficients:
26
(Intercept) Hauteur
28.67774 -0.01141
> plot(Tableau2,col="blue")
> abline(Régression,col="blue")
> summary(Régression)
Call:
lm(formula = Diamètre ~ Hauteur, data = Tableau2)
Residuals:
Min 1Q Median 3Q Max
-6.7675 -2.9025 -0.0293 1.8710 7.0689
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.67774 11.70950 2.449 0.0343 *
Hauteur -0.01141 0.08989 -0.127 0.9015
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
b) (suite) R-squared vaut 0,001608,c.à.d que la variation expliquée ne vaut que 0,16% donc il
existe d'autres facteurs qui peuvent expliquer la variation du diamètre.
data: A
X-squared = 10.1, df = 4, p-value = 0.03878
P < 0,05(seuil), on rejette H0:il y a donc une différence significative entre le nombre des voix.
2. Test d’indépendance :
Ce test vise à vérifier l’indépendance ou non de deux variables.
H0 : les deux variables sont dépendantes.
H1 : les deux variables sont indépendantes.
data: Luse
X-squared = 4.2926, df = 2, p-value = 0.1169
data: Luse1
X-squared = 4.2926, df = 2, p-value = 0.1169