On a voulu comparer les prix d’un même article pratiqués par les deux grandes chaînes de distribution LENOIR et AUPRES. Le prix relevés dans neuf magasins de ces deux distributeurs sont les suivants :

data <- data.frame(AUPRES = c(110, 115, 128, 115, 136, 142, 140, 138, 124), LENOIR = c(118, 120, 130, 126, 130, 136, 139, 140, 127))
print(data)
##   AUPRES LENOIR
## 1    110    118
## 2    115    120
## 3    128    130
## 4    115    126
## 5    136    130
## 6    142    136
## 7    140    139
## 8    138    140
## 9    124    127

On supposera que chacune de ces variables suivent une ditribution normale.



En lisant cet énoncé, nous pouvons déjà récupérer les informations et les données utiles à notre inférence statistique.


Informations

Population : Prix d’un article

Variables :

Type : Variables indépendantes.


Données :

s1 <- data[,'AUPRES'] ; n.s1 <- length(s1) ; mu.s1 = mean(s1) ; sd.s1 = sd(s1) ; var.b.s1 = sd.s1^2 ; 

s2 <- data[,'LENOIR'] ; n.s2 <- length(s2) ; mu.s2 = mean(s2) ; sd.s2 = sd(s2) ; var.b.s2 = sd.s2^2 ;

N <- length(s1) + length(s2)

mu.dif <- mu.s1 - mu.s2

Nous concevons des objets qui stockerons les données collectées auprès de nos échantillons. s1 pour sample 1 et s2 pour sample 2. var.b représente une variance biaisée.



1 - Donner une estimation ponctuelle de chaque moyenne et de chaque variance.

print(mu.s1)
## [1] 127.5556
print(mu.s2)
## [1] 129.5556
print(var.b.s1)
## [1] 147.5278
print(var.b.s2)
## [1] 60.52778



2 - Vérifier que l’homogénéité des variances est plausible au seuil 0.10.



Un test d’homogénéité des variances doit être effectué, si les variables comparées :

N < 30
## [1] TRUE

Cela permet d’assurer la validité de notre test de comparaison de moyennes.



Données

print(data)
##   AUPRES LENOIR
## 1    110    118
## 2    115    120
## 3    128    130
## 4    115    126
## 5    136    130
## 6    142    136
## 7    140    139
## 8    138    140
## 9    124    127
a <- 0.10

Nous rajoutons le seuil alpha 0.10 à notre environnement de données, en assignant 0.10 à l’objet a.


Hypothèses

Sous forme mathématique :

Nous formulons les hypothèses sous forme mathématique afin de savoir laquelle sera en hypothèse nulle (H0). L’hypothèse nulle est toujours celle qui implique une égalité. Exemple : ‘==’ qui signifie égal, ou ‘>=’ qui signifie supérieur ou égal, ou ‘<=’ qui signifie inférieur ou égal.


Sous forme littéraire :

H0 <- 'les variances sont homogènes'
H1 <- 'les variances ne sont pas homogènes'


Test de l’homogénéité des variances avec le F-test

result <- var.test(s1, s2, conf.level = (1 - a))
p.value <- result[['p.value']]

Le F-test se produit grâce à la fonction var.test(). Cette fonction prend comme argument les deux échantillons (s1 et s2) et un indice de confiance (1 - a, soit 1 - 0.10 = 90 % de fiabilité envers notre résultat.)


Resultats

print(result)
## 
##  F test to compare two variances
## 
## data:  s1 and s2
## F = 2.4374, num df = 8, denom df = 8, p-value = 0.2291
## alternative hypothesis: true ratio of variances is not equal to 1
## 90 percent confidence interval:
##  0.7089252 8.3798787
## sample estimates:
## ratio of variances 
##           2.437357
if(p.value < a){
        answer <- paste('Il y a rejet de H0 en faveur de H1, car', p.value, 'est inférieur à', a, '. Donc,', H1)
} else {
        answer <- paste('Il y a non rejet de H0, car', p.value, 'est supérieur à', a, '. Donc,', H0)
}

Avec la fonction if(), nous pouvons demander à R d’afficher l’une des deux hypothèses précédemment citées, selon si oui ou non notre p-value est inférieure au seuil alpha.


Réponse : Il y a non rejet de H0, car 0.229142672626927 est supérieur à 0.1 . Donc, les variances sont homogènes



3 - Donner un interval de confiance au seuil 0.05 de la différence entre mu.s1 et mu.s2.



Données

print(data)
##   AUPRES LENOIR
## 1    110    118
## 2    115    120
## 3    128    130
## 4    115    126
## 5    136    130
## 6    142    136
## 7    140    139
## 8    138    140
## 9    124    127
a <- 0.05

Nous modifions notre seuil alpha en y assignant la valeur 0.05.


Sous R, nous avons deux méthodes afin d’obtenir un interval de confiance pour une différence de moyennes.


Méthode 1 : Extraire celui d’un T.test bilatéral.

interval <- t.test(s1, s2, alternative = 'two.sided', conf.level = (1 - a),  paired = FALSE)$conf.int

print(interval)
## [1] -12.339382   8.339382
## attr(,"conf.level")
## [1] 0.95


Méthode 2 : L’obtenir en utilisant la formule de base

percentil <- qt(p = 1 - a / 2, df = N - 2)

rayon <- percentil * sqrt( ( N * (n.s1 * sd.s1^2 + n.s2 * sd.s2^2) ) / ( (N - 2) * n.s1 * n.s2 ) )

interval <- mu.dif + c(-1, 1) * rayon

print(interval)
## [1] -12.810882   8.810882



En déduire la décision au seuil 0.05 au test H0 : mu.s1 = mu.s2 contre H1 : mu.s1 != mu.s2.



Données

print(data)
##   AUPRES LENOIR
## 1    110    118
## 2    115    120
## 3    128    130
## 4    115    126
## 5    136    130
## 6    142    136
## 7    140    139
## 8    138    140
## 9    124    127
a <- 0.05

Nous modifions notre seuil alpha en y assignant la valeur 0.05


En lisant cette consigne sous un autre angle (H0 : mu.s1 - mu.s2 = 0 et H1 : mu.s1 - mu.s2 != 0), nous remarquons que nous devons seulement inférer si la différence entre les deux moyennes est nul ou non.

Au format littéraire, cela se traduit ainsi :

H0 <- "on peut déduire que la différence dans les prix moyens pratiqués entre ces deux enseignes est nulle."
H1 <- "on ne peut pas déduire que la différence dans les prix moyens pratiqués entre ces deux enseignes est nulle."

mu.0 <- 0
if(mu.0 < interval[1] & mu.0 > interval[2]){ 
        answer <- paste('Il y a rejet de H0 en faveur de H1, car', mu.0, "n'est pas compris dans l'interval", interval[1], 'et', interval[2], '. Donc,', H1)
} else {
        answer <- paste('Il y a non rejet de H0, car', mu.0, "est compris dans l'interval", interval[1], 'et', interval[2], '. Donc,', H0)
}


Réponse : Il y a non rejet de H0, car 0 est compris dans l’interval -12.8108819594928 et 8.81088195949281 . Donc, on peut déduire que la différence dans les prix moyens pratiqués entre ces deux enseignes est nulle.



5 - Peut-on conclure au seuil 0.05 que les prix pratiqués chez AUPRES sont en moyenne moins élevés que chez LENOIR ?



Données

print(data)
##   AUPRES LENOIR
## 1    110    118
## 2    115    120
## 3    128    130
## 4    115    126
## 5    136    130
## 6    142    136
## 7    140    139
## 8    138    140
## 9    124    127
print(a)
## [1] 0.05

Nous conservons nos données et notre seuil alpha de 0.05


Hypothèses


Sous forme mathématique :


Sous forme littéraire

H0 <- "on ne peut pas conclure que les prix pratiqués chez AUPRES soient en moyenne moins élevés que chez LENOIR."
H1 <- "on peut conclure que les prix pratiqués chez AUPRES soient en moyenne moins élevés que chez LENOIR."


Test de comparaison de deux moyennes avec le T-test

result <- t.test(s1, s2, alternative = 'less', conf.level = (1 - a),  paired = FALSE)

p.value <- result[['p.value']]

Le T-test se produit grâce à la fonction t.test(). Cette fonction prend comme arguments les deux échantillons (s.1 et s.2), le sens de l’hypothèse alternative (alternative = ‘less’ ou ‘greater’ ou ‘two.sided’), un indice de confiance (conf.level = (1 - a), soit 1 - 0.05 = 95 % de fiabilité envers notre résultat.) et le type de variables que nous testons ( paired = FALSE pour une comparaison de deux variables indépendantes.).


Resultats

print(result)
## 
##  Welch Two Sample t-test
## 
## data:  s1 and s2
## t = -0.41597, df = 13.619, p-value = 0.342
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##      -Inf 6.485242
## sample estimates:
## mean of x mean of y 
##  127.5556  129.5556
if(p.value < a){
        answer <- paste('Il y a rejet de H0 en faveur de H1, car', p.value, 'est inférieur à', a, '. Donc,', H1)
} else {
        answer <- paste('Il y a non rejet de H0, car', p.value, 'est supérieur à', a, '. Donc,', H0)
}


Réponse : Il y a non rejet de H0, car 0.341956370250639 est supérieur à 0.05 . Donc, on ne peut pas conclure que les prix pratiqués chez AUPRES soient en moyenne moins élevés que chez LENOIR.



6 - Peut-on conclure que le prix moyen de cet article dans les magasins AUPRES est supérieur à 120 euros ?



Données

print(data)
##   AUPRES LENOIR
## 1    110    118
## 2    115    120
## 3    128    130
## 4    115    126
## 5    136    130
## 6    142    136
## 7    140    139
## 8    138    140
## 9    124    127
print(a)
## [1] 0.05

Nous conservons nos données et notre seuil alpha de 0.05


Hypothèses

Sous forme mathématique :

Nous formulons les hypothèses sous forme mathématique afin de savoir laquelle sera en hypothèse nulle (H0). L’hypothèse nulle est toujours celle qui implique une égalité. Exemple : ‘==’ qui signifie égal, ou ‘>=’ qui signifie supérieur ou égal, ou ‘<=’ qui signifie inférieur ou égal.


Sous forme littéraire :

H0 <- 'on ne peut pas conclure que le prix moyen pour cet article vendu chez AUPRES, soit en moyenne supérieur à 120.'
H1 <- 'on peut conclure que le prix moyen pour cet article vendu chez AUPRES, soit en moyenne supérieur à 120.'

mu.0 <- 120


Test d’une seule moyenne avec le T-test.

result <- t.test(s1, alternative = 'greater', mu = mu.0, conf.level = (1 - a))

p.value <- result[['p.value']]

Le T-test se produit grâce à la fonction t.test(). Dans la comparaison d’une seule moyenne, cette fonction prend comme arguments un échantillon (s1), le sens de l’hypothèse alternative (alternative = ‘less’ ou ‘greater’ ou ‘two.sided’), un indice de confiance (conf.level = (1 - a), soit 1 - 0.05 = 95 % de fiabilité envers notre résultat.).


Resultats

print(result)
## 
##  One Sample t-test
## 
## data:  s1
## t = 1.8662, df = 8, p-value = 0.04949
## alternative hypothesis: true mean is greater than 120
## 95 percent confidence interval:
##  120.0268      Inf
## sample estimates:
## mean of x 
##  127.5556
if(p.value < a){
        answer <- paste('Il y a rejet de H0 en faveur de H1, car', p.value, 'est inférieur à', a, '. Donc,', H1)
} else {
        answer <- paste('Il y a non rejet de H0, car', p.value, 'est supérieur à', a, '. Donc,', H0)
}


Réponse : Il y a rejet de H0 en faveur de H1, car 0.0494941005587151 est inférieur à 0.05 . Donc, on peut conclure que le prix moyen pour cet article vendu chez AUPRES, soit en moyenne supérieur à 120.



Six mois plus tard, on a relevé les prix moyen de cet article dans les mêmes magasins LENOIR :

data <- data.frame(LENOIR_0 = c(118, 120, 130, 126, 130, 136, 139, 140, 127), LENOIR_6 = c(122, 126, 128, 126, 132, 144, 145, 140, 125))
print(data)
##   LENOIR_0 LENOIR_6
## 1      118      122
## 2      120      126
## 3      130      128
## 4      126      126
## 5      130      132
## 6      136      144
## 7      139      145
## 8      140      140
## 9      127      125



Étant donné cet énoncé supplémentaire, nous allons refaire le point sur les informations que nous possédons.


Informations

Population : Prix d’un article

Variables :

Type : Variables appariées.


Données :

s1 <- data[,'LENOIR_0'] ; n.s1 <- length(s1) ; mu.s1 = mean(s1) ; sd.s1 = sd(s1) ; var.b.s1 = sd.s1^2 ; 

s2 <- data[,'LENOIR_6'] ; n.s2 <- length(s2) ; mu.s2 = mean(s2) ; sd.s2 = sd(s2) ; var.b.s2 = sd.s2^2 ;

N <- length(s1) + length(s2)

mu.dif <- mu.s1 - mu.s2

Nous concevons des objets qui stockerons les données collectées auprès de nos échantillons. s1 pour sample 1 et s2 pour sample 2. var.b représente une variance biaisée.



7 - Peut-on conclure à une augmentation du prix moyen de cet article chez LENOIR lors de ces 6 derniers mois ?



Données

print(data)
##   LENOIR_0 LENOIR_6
## 1      118      122
## 2      120      126
## 3      130      128
## 4      126      126
## 5      130      132
## 6      136      144
## 7      139      145
## 8      140      140
## 9      127      125
print(a)
## [1] 0.05

Nous conservons notre seuil alpha de 0.05


Hypothèses


Sous forme mathématique :


Sous forme littéraire

H0 <- "durant ces six derniers mois, on ne peut pas conclure qu'il y a eu une augmentation des tarifs appliqués pour cet article chez les magasins LENOIR."
H1 <- "durant ces six derniers mois, on peut conclure qu'il y a eu une augmentation des tarifs appliqués pour cet article chez les magasins LENOIR."


Test de deux moyennes avec le T-test

result <- t.test(s1, s2, alternative = 'less', conf.level = (1 - a), paired = TRUE)

p.value <- result[['p.value']]

Nous réutilisons toujours le T-test, tout en veillant à la bonne configuraion de l’argument paired = TRUE. Effectivement, nous utilisons actuellement des variables appariées.


Resultats

print(result)
## 
##  Paired t-test
## 
## data:  s1 and s2
## t = -1.9757, df = 8, p-value = 0.0418
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##       -Inf -0.143661
## sample estimates:
## mean of the differences 
##               -2.444444
if(p.value < a){
        answer <- paste('Il y a rejet de H0 en faveur de H1, car', p.value, 'est inférieur à', a, '. Donc,', H1)
} else {
        answer <- paste('Il y a non rejet de H0, car', p.value, 'est supérieur à', a, '. Donc,', H0)
}


Réponse : Il y a rejet de H0 en faveur de H1, car 0.0418042799300158 est inférieur à 0.05 . Donc, durant ces six derniers mois, on peut conclure qu’il y a eu une augmentation des tarifs appliqués pour cet article chez les magasins LENOIR.