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 :
Prix dans les magasins AUPRES qui suit une distribution normale (s1).
Prix dans les magasins LENOIR qui suit une distribution normale (s2).
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.
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
Un test d’homogénéité des variances doit être effectué, si les variables comparées :
Suivent toutes une distribution normale.
Sont indépendantes entre elles.
Sont issues d’échantillons inférieurs à 30 individus.
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
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
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.
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 :
H0 : mu.s.1 => mu.s.2
H1 : mu.s.1 < mu.s.2
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.
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 :
Prix dans les magasins LENOIR au mois 0 et qui suit une distribution normale (s1).
Prix dans les magasins LENOIR après 6 mois et qui suit une distribution normale (s2).
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.
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 :
H0 : mu.s.1 => mu.s.2
H1 : mu.s.1 < mu.s.2
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.