3 Inference statistique sur une et deux variables
Cette section présente différentes fonctions R utiles pour réaliser de l’inférence statistique sur une ou deux variables.
3.1 Données Chocolat
Les fonctions de cette section sont illustrées sur base du jeu de données : chocolat.xlsx
(disponible sur moodle). Ce data.frame de taille 20x2 reprend des mesures de la teneur en cacao de 20 plaquettes de chocolat de marque “Cabeau” et “Gallet”.
Voici le code pour lire et préparer ces données
choco <- readxl::read_xlsx("data/chocolat.xlsx", col_names = TRUE)
choco$Marque <- as.factor(choco$Marque)
cabeau <- subset(choco, Marque =="Cabeau")
gallet <- subset(choco, Marque =="Gallet")
Voici quelques résumés descriptifs de ces données
Visualiser via un box-plot
Tableau résumé par marque
N <- table(choco$Marque)
Moyenne<-tapply(choco$Cacao, choco$Marque, mean)
EcartType<-tapply(choco$Cacao, choco$Marque, sd)
cbind(N,Moyenne,EcartType)
N | Moyenne | EcartType | |
---|---|---|---|
Cabeau | 10 | 6.063 | 0.2568 |
Gallet | 10 | 6.258 | 0.108 |
3.2 Arguments utiles dans les fonctions d’inférence
Argument alternative =
dans une fonction de test
- \(H_0: \theta = \theta_0 \textrm{ contre } H_1: \theta \neq \theta_0\) ~>
alternative = "two.sided"
- \(H_0: \theta \ge \theta_0 \textrm{ contre } H_1: \theta < \theta_0\) ~>
alternative = "less"
- \(H_0: \theta \le \theta_0 \textrm{ contre } H_1: \theta > \theta_0\) ~>
alternative = "greater"
Argument conf.level =
dans une fonction de test
Par défaut, le niveau de confiance des intervalles de confiance est 95%. On peut le modifier via l’argument conf.level = 0.9
pour, par exemple, un niveau de confiance de 90%.
3.3 Tests sur une ou deux moyennes
3.3.1 Test t sur une moyenne
\[H_0: \mu = 6 \textrm{ contre } H_1:\mu \neq 6 \]
One Sample t-test
data: choco$Cacao
t = 3.3192, df = 19, p-value = 0.003606
alternative hypothesis: true mean is not equal to 6
95 percent confidence interval:
6.059293 6.261707
sample estimates:
mean of x
6.1605
la fonction pander dans RMarkdown permet de mieux présenter les résultats mais ne présente pas tout. Ceci est aussi vrai pour les autres fonctions de test ou de modélisation.
Test statistic | df | P value | Alternative hypothesis | mean of x |
---|---|---|---|---|
3.319 | 19 | 0.003606 * * | two.sided | 6.16 |
3.3.2 Test t de comparaison de deux moyennes
\[H_0: \mu_1 = \mu_2 \textrm{ contre } H_1:\mu_1 \neq \mu_2 \]
Echantillons indépendants et variances égales
Echantillons indépendants et variances différentes
Welch Two Sample t-test
data: choco$Cacao by choco$Marque
t = -2.2137, df = 12.087, p-value = 0.04682
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.386775949 -0.003224051
sample estimates:
mean in group Cabeau mean in group Gallet
6.063 6.258
Données pairées (non applicable aux données chocolat)
3.4 Tests sur une ou plusieurs variances
3.4.1 Test \(\chi^2\) sur une variance
\[H_0: \sigma^2 = 0.04 \textrm{ contre } H_1: \sigma^2 \neq 0.04 \]
Chi-Squared Test on Variance
data: cabeau$Cacao
Chi-Squared = 14.835, df = 9, p-value = 0.1911
alternative hypothesis: true variance is not equal to 0.04
95 percent confidence interval:
0.03119472 0.21974978
sample estimates:
variance
0.06593444
3.4.2 Test \(F\) de comparaison de 2 variances
\[H_0: \sigma_1^2 = \sigma_2^2 \textrm{ contre } H_1:\sigma_1^2 \neq \sigma_2^2 \]
F test to compare two variances
data: choco$Cacao by choco$Marque
F = 5.6537, num df = 9, denom df = 9, p-value = 0.0166
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
1.404294 22.761673
sample estimates:
ratio of variances
5.653678
3.4.3 Test de Levene d’homogénéité de variances
Ce test permet de tester si 2 ou plus de 2 variances sont égales.
\[H_0: \sigma_1^2 = \sigma_2^2=...=\sigma_k^2 \textrm{ contre } H_1:\textrm{ Au moins deux variances sont différentes } \]
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 1 6.1977 0.0228 *
18
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
3.5 Tests sur une ou plusieurs proportions
Pour les tests ci-dessous, utilisons le simple tableau de contingence pour 2 variables qualitatives X et Y de niveaux respectifs A1,A2,A3 et B1,B2 :
data=matrix(c(10,8,17,5,5,10),nrow=3,ncol=2)
dimnames(data)=list(c("A1","A2","A3"),c("B1","B2"))
pander(data)
B1 | B2 | |
---|---|---|
A1 | 10 | 5 |
A2 | 8 | 5 |
A3 | 17 | 10 |
3.5.1 Test \(\chi^2\) sur une proportion
Teste si la proportion lié au niveau B1
de la variable Y est plus grande que 0.5. Ce test permet des hypothèses alternatives unilatérales >
ou <
. Il effectue aussi une correction de continuité.
\[H_0: \pi_{B1} \le 0.5 \textrm{ contre } H_1:\pi_{B1} > 0.5 \]
nB1=sum(data[,1]) # Nb de données telles que Y=B1
n=sum(data) # Nb total de données
prop.test(nB1,n, p=0.5, alternative = "greater")
1-sample proportions test with continuity correction
data: nB1 out of n, null probability 0.5
X-squared = 3.5636, df = 1, p-value = 0.02953
alternative hypothesis: true p is greater than 0.5
95 percent confidence interval:
0.5164367 1.0000000
sample estimates:
p
0.6363636
3.5.2 Test d’ajustement \(\chi^2\)
On teste pour la variable X si la proportion d’individus dans chaque niveau est identique \[H_0: \pi_{A1} = \pi_{A2}= \pi_{A3} \textrm{ contre } H_1: \textrm{ non } H_0 \]
Chi-squared test for given probabilities
data: dataY
X-squared = 6.2545, df = 2, p-value = 0.04384
3.6 Tests de corrélation / indépendance
Test sur un coefficient de corrélation de Pearson
Test \(\chi^2\) d’indépendance
Tests de corrélation 2 à 2
res <- Hmisc::rcorr(df_quanti)
# df_quanti = data frame composé uniquement de variables quantitatives
~> res$r
= matrice de corrélation
~> res$p
= matrice des p-valeurs associées
3.7 Intervalles de confiance
Il y a 2 possibilités pour obtenir un intervalle de confiance dans R:
1) Calcul à la main Si on dispose de formules, nous pouvons calculer à la main les bornes inférieures et supérieures d’IC. Pour cela on a besoin d’estimations des paramètres et de quantiles de lois de probabilité bien connues.
Les quantiles sont obtenus via les fonctions suivantes:
- Normale ~>
qnorm(p = .., mean = .., sd = ..)
- Student ~>
qt(p = .., df = ..)
- Chi_Carré ~>
qchisq(p = .., df = ..)
Un intervalle de confiance à 95% sur une moyenne des données chocolat de la société cabeau sera par exemple obtenu comme suit:
[1] 5.879313 6.246687
2) Utiliser les fonctions de test Comme nous pouvons voir plus haut, certains tests calculent automatiquement les intervalles de confiance 95%. Il suffit donc de voir quel test donne l’IC recherché et d’utiliser des hypothèses nulles quelconques:
- Moyenne ~> test t sur 1 échantillon
t.test()
- Différence de moyennes ~> test t sur 2 échantillons
t.test()
- Variance ~> test Chi_Carré sur la variance
EnvStats::varTest()
- Ratio de variances ~> test F de comparaison de variances
var.test()
- Proportion ~> test de proportion à 1 échantillon
prop.test()
- Odds ratio ~> test exact de Fisher
fisher.test()
- Corrélation ~> test sur le coefficient de corrélation de Pearson
cor.test()
Pour ces tests on peut ajouter l’argument conf.level = ..
dans la fonction pour choisir soi-même le niveau de confiance de l’intervalle - par défaut 95%.
Extraire l’IC
res <- t.test(cabeau$Cacao, mu = 6, alternative = "two.sided")
ic <- data.frame(Estimate = mean(cabeau$Cacao),
Lwr = res$conf.int[1],
Upr = res$conf.int[2])
pander::pander(ic)
Estimate | Lwr | Upr |
---|---|---|
6.063 | 5.879 | 6.247 |