Vous êtes sur la page 1sur 12

Anova a un facteur TP

Aurel ATTERE

17/07/2020

Charger et décrire le jeu de donné


Importation des données
data = iris

Desciption du jeu de donnee


str(data)

## 'data.frame': 150 obs. of 5 variables:


## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
dim(data)

## [1] 150 5
On peut dire que notre jeu de donnee, comprend 5 variables dont une qualitative , et 4 variables quantitatives:
Sepal.Length, Sepal.Width, Petal.Length, Petal.Width.
summary(data)

## Sepal.Length Sepal.Width Petal.Length Petal.Width


## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
On constate globalement qu’il n’y a pas de valeur manquante dans le jeu de donné.
ggplot(data, aes(x=Sepal.Length, y=Species, fill=Species)) +
geom_boxplot()

1
virginica

Species
Species

setosa
versicolor
versicolor
virginica

setosa

5 6 7 8
Sepal.Length Au
regard des boxplots de Sepal.Length, on peut émettre l’hypothèse suivante: il pourrait exister une différence
significative entre les moyennes des différentes sous population, car les groupes de fleurs se disinguent aisément.
On constate également qu’il y a un individu abérant au niveau de virginica.
ggplot(data, aes(x=Sepal.Width, y=Species, fill=Species)) +
geom_boxplot()

2
virginica

Species
Species

setosa
versicolor
versicolor
virginica

setosa

2.0 2.5 3.0 3.5 4.0 4.5


Sepal.Width Au
regard des boxplots de Sepal.Width, on peut émettre l’hypothèse suivante: il pourrait exister une différence
significative entre les moyennes des différentes sous population car les groupes de fleurs se disinguent aisément
en fonction de la largeur des sépales. On constate également qu’il y a un individu abérant au niveau de setosa
et virginica.
ggplot(data, aes(x=Petal.Length, y=Species, fill=Species)) +
geom_boxplot()

3
virginica

Species
Species

setosa
versicolor
versicolor
virginica

setosa

2 4 6
Petal.Length Au
regard des boxplots de Petal.Length, on peut émettre l’hypothèse suivante: il pourrait exister une différence
significative entre les moyennes des différentes sous population car les groupes de fleurs se disinguent aisément
en fonction de la longueur des pétales. On constate que les classes setosa versicolor presentent quelques
individus abérant.
ggplot(data, aes(x=Petal.Width, y=Species, fill=Species)) +
geom_boxplot()

4
virginica

Species
Species

setosa
versicolor
versicolor
virginica

setosa

0.0 0.5 1.0 1.5 2.0 2.5


Petal.Width Au
regard des boxplots de Petal.Width, on peut émettre l’hypothèse suivante: il pourrait exister une différence
significative entre les moyennes des différentes sous population car les groupes de fleurs se disinguent aisément
en fonction de la largeur des pétales. On constate que la classe setosa presente deux individus abérant.

Test d’hypothèses sur la moyenne de la longueur des sépales



H0 : µj = 5
H1 : µj 6= 5

Création des sous populations


setosa = data[data$Species=="setosa",]
versicolor = data[data$Species=="versicolor",]
virginica = data[data$Species=="virginica",]

Test sur setosa


t.test(setosa$Sepal.Length, mu = 5)

##
## One Sample t-test
##
## data: setosa$Sepal.Length
## t = 0.12036, df = 49, p-value = 0.9047
## alternative hypothesis: true mean is not equal to 5
## 95 percent confidence interval:

5
## 4.905824 5.106176
## sample estimates:
## mean of x
## 5.006
La p-value associée à la statistique est supérieure à 0.05, on accpete donc l’hypothèse nulle qui stipule que la
moyenne de la longueur des sépales chez les setosas µsetosa est significativement égale à 5.

Test sur versicolor


t.test(versicolor$Sepal.Length, mu = 5)

##
## One Sample t-test
##
## data: versicolor$Sepal.Length
## t = 12.822, df = 49, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 5
## 95 percent confidence interval:
## 5.789306 6.082694
## sample estimates:
## mean of x
## 5.936
La p-value associée à la statistique est inférieure à 0.05, on rejette donc l’hypothèse nulle qui stipule que la
moyenne de la longueur des sépales chez les versicolors µversicolor est significativement égale à 5, au bénéfice
de l’hypothèse alternative qui stipule que la moyenne est significativement différente de 5.

Test sur virginica


t.test(virginica$Sepal.Length, mu = 5)

##
## One Sample t-test
##
## data: virginica$Sepal.Length
## t = 17.659, df = 49, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 5
## 95 percent confidence interval:
## 6.407285 6.768715
## sample estimates:
## mean of x
## 6.588
La p-value associée à la statistique est inférieure à 0.05, on rejette donc l’hypothèse nulle qui stipule que la
moyenne de la longueur des sépales chez les virginicas µvirginica est significativement égale à 5, au bénéfice
de l’hypothèse alternative qui stipule que la moyenne est significativement différente de 5.

Test d’hypothèses sur la variance de la longueur des sépales


H0 : σj2 = 0.3


H1 : σj2 6= 0.3
La statistique c2 permet de tester si la variance d’une variable est égale à une constante spécifiée. Il s’agit
d’un test paramétrique. On doit remarquer que la distribution c2 peut aussi être utilisée pour tester d’autres

6
hypothèses, comme dans le cas des tests non paramétriques. On obtient cette statistique en faisant:
σj2
χ2 = (n − 1)
0.3
- On sélectionne un seuil de signification, par exemple, 5%. - Le nombre de degrés de liberté est n-1. - Si la
statistique calculée est inférieur a la statistique tabulée alors on accepte l’hypothèse nulle.

Test sur setosa


if(((length(setosa)-1) *var(setosa$Sepal.Length) / 0.3) > qchisq(0.95,df=49)){
cat("Rejet de H0")
}else{
cat("Acceptation de H0")
}

## Acceptation de H0

Test sur versicolor


if(((length(versicolor)-1) *var(versicolor$Sepal.Length) / 0.3) > qchisq(0.95,df=49)){
cat("Rejet de H0")
}else{
cat("Acceptation de H0")
}

## Acceptation de H0

Test sur virginica


if(((length(virginica)-1) *var(virginica$Sepal.Length) / 0.3) > qchisq(0.95,df=49)){
cat("Rejet de H0")
}else{
cat("Acceptation de H0")
}

## Acceptation de H0

Experience (a verifier)
Etant donné que la variance est également une moyenne; on peut effectuer(théoriquement) un t.test sur le
carrés des ecarts à la moyenne.
t.test((setosa$Sepal.Length-mean(setosa$Sepal.Length))^2, mu = 0.3)

##
## One Sample t-test
##
## data: (setosa$Sepal.Length - mean(setosa$Sepal.Length))^2
## t = -7.9667, df = 49, p-value = 2.149e-10
## alternative hypothesis: true mean is not equal to 0.3
## 95 percent confidence interval:
## 0.07680426 0.16672374
## sample estimates:
## mean of x
## 0.121764

7
t.test((versicolor$Sepal.Length-mean(versicolor$Sepal.Length))^2, mu = 0.3)

##
## One Sample t-test
##
## data: (versicolor$Sepal.Length - mean(versicolor$Sepal.Length))^2
## t = -0.88093, df = 49, p-value = 0.3827
## alternative hypothesis: true mean is not equal to 0.3
## 95 percent confidence interval:
## 0.172375 0.349833
## sample estimates:
## mean of x
## 0.261104
t.test((virginica$Sepal.Length-mean(virginica$Sepal.Length))^2, mu = 0.3)

##
## One Sample t-test
##
## data: (virginica$Sepal.Length - mean(virginica$Sepal.Length))^2
## t = 1.2297, df = 49, p-value = 0.2247
## alternative hypothesis: true mean is not equal to 0.3
## 95 percent confidence interval:
## 0.2389546 0.5535574
## sample estimates:
## mean of x
## 0.396256

Test d’hypothèses sur l’égalité des variances de la largeur des sé-


pales
Entre les espèces setosa et versicolor
var.test(setosa$Sepal.Width, versicolor$Sepal.Width, alternative = "two.sided")

##
## F test to compare two variances
##
## data: setosa$Sepal.Width and versicolor$Sepal.Width
## F = 1.4592, num df = 49, denom df = 49, p-value = 0.1895
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.828080 2.571444
## sample estimates:
## ratio of variances
## 1.459233
La p-value associée à la statistique de Fisher du test est supérieure à 0.05, on accepte donc l’hypothèse nulle
qui stipule qu’il y a égalité entre les variances des largeurs de sépale des espèces setosa et versicolor.

Entre les espèces virginica et versicolor


var.test(virginica$Sepal.Width, versicolor$Sepal.Width, alternative = "two.sided")

8
##
## F test to compare two variances
##
## data: virginica$Sepal.Width and versicolor$Sepal.Width
## F = 1.0562, num df = 49, denom df = 49, p-value = 0.849
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.5993724 1.8612363
## sample estimates:
## ratio of variances
## 1.056207
La p-value associée à la statistique de Fisher du test est supérieure à 0.05, on accepte donc l’hypothèse nulle
qui stipule qu’il y a égalité entre les variances des largeurs de sépale des espèces virginica et versicolor.

Test d’hypothèses sur l’égalité des moyennes de la largeur des sé-


pales
Entre les espèces setosa et versicolor
t.test(setosa$Sepal.Width, versicolor$Sepal.Width, alternative = "two.sided")

##
## Welch Two Sample t-test
##
## data: setosa$Sepal.Width and versicolor$Sepal.Width
## t = 9.455, df = 94.698, p-value = 2.484e-15
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 0.5198348 0.7961652
## sample estimates:
## mean of x mean of y
## 3.428 2.770
La p-value associée à la statistique du test est inférieure à 0.05, on rejette donc l’hypothèse nulle qui stipule
qu’il y a égalité entre les moyennes des largeurs de sépale des espèces setosa et versicolor. Du coup on retient
l’hypothèse selon laquelle il existe une différence significative entre les moyennes.

Entre les espèces virginica et versicolor


t.test(virginica$Sepal.Width, versicolor$Sepal.Width, alternative = "two.sided")

##
## Welch Two Sample t-test
##
## data: virginica$Sepal.Width and versicolor$Sepal.Width
## t = 3.2058, df = 97.927, p-value = 0.001819
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 0.07771636 0.33028364
## sample estimates:
## mean of x mean of y
## 2.974 2.770

9
La p-value associée à la statistique du test est inférieure à 0.05, on rejette donc l’hypothèse nulle qui stipule
qu’il y a égalité entre les moyennes des largeurs de sépale des espèces virginica et versicolor. Du coup on
retient l’hypothèse selon laquelle il existe une différence significative entre les moyennes.

Comparaison de la largeur des sépales des trois espèces simultané-


ment.
Ecriture du modèle et hypothèses
Modèle 1
Yij = µj + Ei|
Modèle 2
Yij = µ + αj + Ei|
P4
avec la contrainte j=1 αj = 0
Hypotheses du modèle 

 H1 : E(Eij ) = 0
H2 : V ar(Eij ) = σ 2


 H3 : cor(Eij , Ekl ) = 0 si i 6= k etj 6= l
H4 : Eij ∼ N (0, σ 2 )

Equivalent a


 H1 : E(Yij ) = µj
H2 : V ar(Yij ) = σ 2


 H3 : cor(Yij , Ykl ) = 0 si i 6= k etj 6= l
H4 : Yij ∼ N (µj , σ 2 )

On cherche à comparer la largeur des sépales dans les trois espèces simultanément. Pour ce faire, on utilise
una ANOVA à 1 facteur. Dans un premier temps, on décrit le modèle permettant d’étudier un lien entre
largeur des sépales et l’espèce. On peut le faire avec avec la commande aov, qui permet d’implémenter une
anova a un facteur.
##Implémentation sous R
anov=aov(data$Sepal.Width~data$Species)
summary(anov)

## Df Sum Sq Mean Sq F value Pr(>F)


## data$Species 2 11.35 5.672 49.16 <2e-16 ***
## Residuals 147 16.96 0.115
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
On obtient également un résultats similaire avec lm.
reglin=lm(data$Sepal.Width~data$Species)
summary(reglin)

##
## Call:
## lm(formula = data$Sepal.Width ~ data$Species)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.128 -0.228 0.026 0.226 0.972

10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.42800 0.04804 71.359 < 2e-16 ***
## data$Speciesversicolor -0.65800 0.06794 -9.685 < 2e-16 ***
## data$Speciesvirginica -0.45400 0.06794 -6.683 4.54e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3397 on 147 degrees of freedom
## Multiple R-squared: 0.4008, Adjusted R-squared: 0.3926
## F-statistic: 49.16 on 2 and 147 DF, p-value: < 2.2e-16

Comparaison avec le modèle vie


Ici on estime le modèle vide. Il s’agit du modèle de regression linéaire avec la constante seule.
modelVide=lm(data$Sepal.Width~1)
summary(modelVide)

##
## Call:
## lm(formula = data$Sepal.Width ~ 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.05733 -0.25733 -0.05733 0.24267 1.34267
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.05733 0.03559 85.91 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4359 on 149 degrees of freedom

Comparer ce modèle au modèle vide avec la fonction anova.


anova(modelVide, anov)

## Analysis of Variance Table


##
## Model 1: data$Sepal.Width ~ 1
## Model 2: data$Sepal.Width ~ data$Species
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 149 28.307
## 2 147 16.962 2 11.345 49.16 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Description du tableau obtenu


La colonne Res.Df donne le nombre de degrés de liberté pour la somme des carrés résiduelle de chaque
modèle.La colonne RSS donne la somme des carrés résiduelle (“Residual Sum of Squares” - RSS) pour chaque

11
modèle. Plus précisément, si on note yij l’observation de l’individuidans le groupe j, le modèle anov s’écrit :

Yij = µj + Ei| Eij ∼ N (0, σ 2 )

et la somme des carrés résiduelle pour ce modèle est:

n
3 X
X
(yij − µj )2
j=1 i=1

Pour le modèle modelVide, il s’écrit :

Yij = µ + Ei| Eij ∼ N (0, σ 2 )

et la somme des carrés résiduelle pour ce modèle est:


n
X
(yij − µ)2
i,j

La colonne Df donne la différence entre les degrés de liberté sous le modèle de la ligne 2 et le modèle de la
ligne 1. Il s’agit du nombre de groupes moins 1. La colonne ‘Sum of Sq’ contient la somme des carrésdûs au
modèle, et correspond à la formule suivante :
3
X
n (µ − µj )2
j=1

où n’est la taille de chaque groupe. On a aussi la relation suivante :Sum of Sq = SRC(modelVide) -SRC(anov)

Représentation de la colonne F
Il permet de tester si l’effet des facteurs ou des niveaux est significative. Dans notre cas la p-value associée
est inferieure a 0.05 on rejette donc l’hypothese selon laquelle il n’existe pas de difference significative entre
les moyennes des sous populations.

Calcul de F value
Enfin, la colonne F correspond à la statistique de test, selon la formule :F = (Sum of Sq)/(Df)
/(SRC(anov)/(Res.Df(anov)), ici on a donc F qui vaut bien :
(11.345/2) / (16.962/147)

## [1] 49.16033

12

Vous aimerez peut-être aussi