Rappel : \(H_0\) : statu
quo
\(H_1\) : le but de
l’expérience (\(p_a≠p_b\))
\(\alpha\) : probabilité d’accetper \(H_1\) alors que \(H_0\) est vraie
\(\beta\) : probabilité d’accepter \(H_0\) alors que \(H_1\) est vraie
Objectif : règle de
décision minimisant \(\beta\) pour un
\(\alpha\) fixé
Cette règle n’est
pas neutre, prioriser \(\alpha\)
(risque de fausse découverte) c’est le considérer comme plus grave que
\(\beta\) (risque de passer à côté
d’une découverte)
En pratique, certains utilisateurs ne regardent que le ‘p’ (approche
de Fisher) alors que d’autres ne considèrent que \(\alpha\) et \(\beta\) :
Mais contrairement à l’approche de Fisher, l’approche de Neyman &
Pearson maîtrise les risques (les risques sont fixés avant
l’expérimentation, contrairement au calcul du petit p qui se fait après
l’expérience).
Fixer un risque a priori est scientifiquement
beaucoup plus fort que de regarder a posteriori la probabilité
des résultats observés. C’est pourquoi c’est l’approche de Neyman &
Pearson qui est utilisée dans les essais médicamenteux.
| Pas de dépression | Dépression | Total | |
|---|---|---|---|
| Évitement danger = 0 | 335 | 135 | 470 |
| Évitement danger = 1 | 96 | 129 | 225 |
| NA | 51 | 56 | 107 |
| Total | 482 | 320 | 802 |
Attention aux faibles effectifs (quelques dizaines) et aux petits
pourcentages (R vérifie automatiquement ces conditions de validité,
sinon réalisation d’un test exact de Fisher) :
- dans chacune des
cases du tableau il faut plus de 5
- le n total du tableau doit être
supérieure à 20 (4*5)
- l’effectif théorique des cases doit être
supérieure à 5 dans 80% des cases
- les variables doivent être
indépendantes (sinon utiliser un test McNemar : comparaison appariée de
variables variables qualitatives)
La prévalence de la dépression est-elle plus élevée chez les détenus qui ont un haut niveau d’évitement du danger ?
# existence d'un haut niveau d'évitement du danger et d'un diagnostic de dépression
table(smp$ed.b, smp$dep.cons, deparse.level = 2, useNA = 'always') # deparse.level = 2 renseigne le nom des variables
## smp$dep.cons
## smp$ed.b 0 1 <NA>
## 0 335 135 0
## 1 96 126 0
## <NA> 51 56 0
# pour l'avoir en pourcentage, utiliser prop.table (le 1 pour estimer le % de smp$dep.cons selon smp$ed.b ; le 2 pour estimer le % de spm$ed.b selon smp$dep.cons)
tab <- table(smp$ed.b, smp$dep.cons, deparse.level = 2)
prop.table(tab, margin = 1) # margin = 1 spécifie que chaque ligne fait 100%, margin = 2 les effectifs sont rapportés aux totaux colonnes
## smp$dep.cons
## smp$ed.b 0 1
## 0 0.7127660 0.2872340
## 1 0.4324324 0.5675676
Ne pas oublier le correct = FALSE car sinon R utilise un
test du Chi-2 avec correction de continuité (plus robuste mais moins
puissant)
chisq.test(smp$ed.b, smp$dep.cons, correct = FALSE)
##
## Pearson's Chi-squared test
##
## data: smp$ed.b and smp$dep.cons
## X-squared = 50.442, df = 1, p-value = 1.228e-12
Attention, le chisq.test() a besoin
d’un tableau de contingeance créé avec prop.table() ou
xtabs()
Rappel sur le Chi2 : il va permettre de tester l’indépendance de deux variables qualitatives. On va chercher à vérifier si les effectifs observés dans notre échantillon sont statistiquement différents des effectifs théoriques. Il convient de réaliser un tableau de contingence avec en ligne la catégorie dont on cherche à tester l’indépendance par rapport au devenir (en colonnes) :
| Décédés | Vivant | Total | |
|---|---|---|---|
| Femme | 578 | 1067 | 1645 |
| Homme | 1757 | 2748 | 4515 |
| Total | 2335 | 3825 | 6160 |
Puis on calcule les pourcentages :
| Décédés | Vivant | ||
|---|---|---|---|
| Femme | 578 | 1067 | 27% |
| Homme | 1757 | 2748 | 73% |
| 38% | 62% |
Puis les effectifs théoriques à partir des pourcentages et de l’effectif total :
| Décédés | Vivant | ||
|---|---|---|---|
| Femme | 27*38*6160 | 27*62*6160 | 27% |
| Homme | 73*38*6160 | 73*62*6160 | 73% |
| 38% | 62% |
On obtient le tableau des effectifs théoriques suivant :
| Décédés | Vivant | ||
|---|---|---|---|
| Femme | 623,5511 | 1021,449 | |
| Homme | 1711,4489 | 2803,551 |
Qu’on écrit sous la forme de différence entre les effectifs observés et théorique :
| Décédés | Vivant | |
|---|---|---|
| Femme | -45,5511 | 45,5511 |
| Homme | 45,5511 | -45,5511 |
On élève ces différences au carré et on les divise par les effectifs théoriques de la case :
| Décédés | Vivant | |
|---|---|---|
| Femme | 2071,903/623,5511 | 2071,903/1021,449 |
| Homme | 2071,903/1711,4489 | 2071,903/2803,551 |
Ce qui nous donne les résultats suivants :
| Décédés | Vivant | |
|---|---|---|
| Femme | 3,3 | 2,03 |
| Homme | 1,21 | 0,74 |
La valeur du Chi 2 est de 7,28 (somme des cases), le nombre de DDL est le nombre de cases dont on doit connaître la valeur pour remplir les autres (ddl = (nb colonne -1)*(nb ligne - 1) = 1 ici).
On lit le Chi2 sur la table en fonction du nombre de ddl, ici la
valeur est de 3,84 dans la table. H0 est vraie si le Chi2
calculé (7,28) est inférieur au Chi2 critique de la table pour un risque
alpha à 0,05 (3,84).
Donc on peut rejeter H0 et dire
qu’il existe une dépendance entre le sexe et la mortalité.
Comment faire pour comparer la prévalence de la profession en fonction de la profession (7 professions) ?
chisq.test(smp.l$dep.cons, smp.l$prof)
## Warning in chisq.test(smp.l$dep.cons, smp.l$prof): Chi-squared approximation may
## be incorrect
##
## Pearson's Chi-squared test
##
## data: smp.l$dep.cons and smp.l$prof
## X-squared = 6.7205, df = 7, p-value = 0.4586
L’alternative est le test exact de Fisher (quand on ne peut pas utiliser le Chi-2)
fisher.test(smp$ed.b, smp$dep.cons)
##
## Fisher's Exact Test for Count Data
##
## data: smp$ed.b and smp$dep.cons
## p-value = 2.033e-12
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 2.303664 4.603460
## sample estimates:
## odds ratio
## 3.250819
NB : Student est Pseudonyme de William Gosset (1876-1937) un employé de la brasserie Guinness à Dublin, y avait développé le test t à des fins de contrôle de la qualité de la production de stout (vérification de la qualité de houblons sur des petites échantillons, il s’était aperçu que plus il faisait de tests sur des échantillons, plus les moyennes se rapprochaient de la moyenne de la tonne de houblon). La brasserie avait pour règle que ses chimistes ne publient pas leurs découvertes. Gosset argua que son article ne serait d’aucune utilité pour les concurrents et obtint l’autorisation de publier mais sous un pseudonyme, Student, pour éviter les difficultés avec les autres membres de son équipe. Le test t est devenu célèbre grâce aux travaux de Ronald Fisher qui montra que ce test ne couvre pas le cas des échantillons de grande taille. Il apporta donc des modifications au test de Student afin de le généraliser.
L’hypothèse H0 est que l’échantillon dans le groupe A est
identique à l’échantillon dans le groupe B pour la moyenne de la
variable étudiée.
Donc H1 (qui revient à rejeter
H0) est que les deux échantillons sont différents pour la
moyenne de la variable étudiée.
Quand on utilise un test paramétrique, pour lequel
on teste l’hypothèse H0, on fait l’hypothèse que la
distribution de la variable étudiée est normale.
Pour appliquer un test paramétrique, il faut tester :
-
l’indépendance : les valeurs doivent être indépendantes les unes des
autres (sinon il faut utiliser un test t de Student pour sujets appariés
: comparaison appariée de variables quantitatives)
- la normalité
(diagramme de normalité, cf. infra)
- l’homoscédasticité : les
variances entres les groupes doivents être similaires. On peut utiliser
le test le test F qui va évaluer la variance des deux groupes et si le
p < 0,05 alors on peut dire qu’il n’y a pas
d’homoscédasticité. On peut également utiliser la fonction
by() et vérifier qu’il n’y a pas de différence d’écart-type
de ± 1,5 écart-type de l’autre groupe (cf. infra). En cas
d’hétéroscédasticité, il faudra faire un test de Welch
(c’est une variante du test t avec un nombre de DDL différent).
Ses conditions de validité sont délicates :
- il faut au moins 30
sujets par groupe à comparer ou que la variable à étudier suive une loi
normale. Cela reste un peu dogmatique car avec 20 sujets avec une
variable normale ça peut passer alors qu’avec 80 sujets et une variable
qui suit une loi en U le test t de Student ne sera pas adapté.
exemple : “existe-t-il, en moyenne, une différence significative d’âge entre les détenus ayant un haut niveau d’évitement du danger et les autres ?”
# commencer par évaluer la distribution de la variable estimée
hist(smp$age)
Ici ça ne suit pas une loi normale (très asymétrique), mais marchera
très bien, ce n’est pas très rigoureux, mais les test statistiques ne
permettent pas d’affirmer qu’une variable ne suit pas une loi normale
(les test de normalité sont là pour affirmer qu’une distribution est
normale, pas le contraire !)
Pour essayer d’être un peu plus rigoureux pour répondre à la question de la normalité, on peut faire un diagramme de normalité
qqnorm(smp$age); qqline(smp$age)
Les points doivent être alignés, on voit ici qu’en dessous de -1 les
points s’écartent de la ligne, on a donc localement un écart à la
normalité.
Le test de Student suppose aussi que les variances soient identiques dans les groupes à comparer. Ici on va comparer l’écart-type de l’âge, selon qu’on a un niveau bas ou élevé d’évitement.
by(smp$age, smp$ed.b, sd, na.rm = TRUE)
## smp$ed.b: 0
## [1] 13.38593
## ------------------------------------------------------------
## smp$ed.b: 1
## [1] 13.29636
by() on y rentre la variable à étudier puis la
variable qui détermine les sous-groupes, puis la fonction à calculer. En
gros il faut qu’un écart type ne soit pas > ou < 1,5 fois l’autre
écart-type.
t.test(smp$age ~ smp$ed.b, var.equal = TRUE) # var.equal = TRUE (sinon par défaut R va utiliser l'approximation de Welch qui permet d'avoir un test t même quand les variances sont inégales et ça n'est pas recommandé).
##
## Two Sample t-test
##
## data: smp$age by smp$ed.b
## t = 1.7142, df = 690, p-value = 0.08694
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.2710524 4.0005138
## sample estimates:
## mean in group 0 mean in group 1
## 39.46383 37.59910
Lorsque le n est important (> 30), on appliquera
le test Z dérivé de la loi normale centrée réduite : si
notre variable continue dans nos deux échantillons suit une loi normale,
la différence des moyennes ∆, suivra également une loi normale que l’on
pourra simplifier par une loi normale centrée, réduite. Pour rappel pour
calculer la loi normale centrée réduite, il faut retrancher de chaque
valeur la moyenne et le diviser par la variance. \(Z = \frac{∆}{\sigma_∆}\).
La zone
d’acceptabilité de H0 se situe entre -1,96 écart-type et +
1,96 écart-type, en dehors H0 est rejetée.
Une fois Z
calculé, on lit le p dans la table de la loi normale centrée
réduite.
À utiliser quand on ne peut pas utiliser le test t (distribution non
normale ou écarts-types différents), il n’y a pas d’hypothèse posée sur
la normalité de la distribution des données (donc pas de comparaison de
moyennes mais de rangs).
H0 : la distribution de l’échantillon est similaire dans
les deux groupes.
H1 : la distribution de l’échantillon
est différente (supérieure ou inférieure, le test est bilatéral) entre
les deux groupes.
wilcox.test(smp$age ~ smp$ed.b)
##
## Wilcoxon rank sum test with continuity correction
##
## data: smp$age by smp$ed.b
## W = 56770, p-value = 0.06091
## alternative hypothesis: true location shift is not equal to 0
Le test de Wilcoxon ne compare pas exactement des moyennes, il
compare des rangs de patients. Il compare des individus, on classe des
individus et on regarde si en moyenne si le rang dans le groupe A est
différent du rang dans le groupe B :
- La statistique du test
s’appelle U et elle se base sur les rangs.
- Pour déterminer U, il
faut calculer pour chaque valeur du groupe A, le nombre de valeurs du
groupe B qui lui sont strictement inférieures (si il existe des es-æquo
entre les deux groupes, on compte 1/2 mutiplié par le nombre de valeurs
identitiques).
- La somme des rangs sera égale à UA et le
même procesus est réalisé pour UB.
- U est la valeur
minimale choisie parmi UA et UB. U sera ensuite
confronté à la valeur U critique déterminée en fonction du nombre de
valeurs dans chaque groupes (cf. table de Mann-Whitney en fonction du n
dans chaque groupe et du risque alpha). Si U minimal est < U critique
alors on peut rejeter H0 (il y a une différence
significative).
Dès qu’on utilise un test de Wilcoxon, ça sous entend que la distribution n’est pas normale, donc on ne pourra jamais faire de test multivarié.
Il ne faut pas confondre ce test (qui porte sur deux échantillons
indépendants) avec le test de Wilcoxon des rangs signés qui s’applique à
deux échantillons appariés.
Pour l’utiliser, il faut que la distribution d’une des deux variables
suive une loi normale.
Si on fait l’hypothèse qu’un âge élevé
cherche moins les sensations fortes, on peut tester l’hypothèse d’une
corrélation entre un âge élevé et le niveau de recherche de sensations
faible :
# corrélation entre âge élevé et un niveau de recherche de sensation faible
cor.test(smp$age, smp$rs)
##
## Pearson's product-moment correlation
##
## data: smp$age and smp$rs
## t = -6.02, df = 694, p-value = 2.825e-09
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2922516 -0.1509579
## sample estimates:
## cor
## -0.2227744
Le p très faible signifie que la corrélation est très
significativement non nulle (p = 2.825e_09).
La fonction donne
également le résultat de la corrélation (-0.2227744). Cela confirme
notre hypothèse qu’il y a une corrélation négative entre âge et
recherche de sensation (l’âge élevé est corrélé à la recherche de
sensations faible).
Enfin la fonction donne une intervalle de
confiance à 95% dans l’ensemble de la population.
Nous avons vu
plus haut que la distribution des âges des détenus était très
approximativement normale (très asymétrique). La normalité était
suffisante pour accepter d’utiliser le test classique de nullité d’un
coefficient de corrélation de Pearson (ce d’autant que l’autre variable
n’est pas en distribution normale puisque codée en 1, 2, 3).
Si on est embêté par l’absence de normalité des deux variables, il faut utiliser la méthode du coefficient de corrélation de Spearman (porte sur les rangs des sujets et plus sur les observations elles-mêmes) : on classe les âges du plus petit au plus grand et on classe les recherches de sensation du plus petit au plus grand, puis on fait la corrélation des rangs de l’âge avec les rangs de la recheche de sensation. C’est une méthode beaucoup plus robuste.
# corrélation entre âge élevé et un niveau de recherche de sensation faible
cor.test(smp$age, smp$rs, method = 'spearman')
## Warning in cor.test.default(smp$age, smp$rs, method = "spearman"): Cannot
## compute exact p-value with ties
##
## Spearman's rank correlation rho
##
## data: smp$age and smp$rs
## S = 68742508, p-value = 2.567e-09
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.2233474
La corrélation est ici appelée \(rho\).
Pourquoi ne pas utiliser le
Spearman tout le temps ? Certes il est un peu moins puissant et surtout
il est gêné par les ex æquo et il y en a ici beaucoup (puisque
seulement 3 niveaux de recherche de sentation : 1, 2, 3), d’où le
message d’erreur Cannot compute exact p-value with ties
Au même titre qu’avec le Wilcoxon, si on utilise le Spearman, cela veut
dire qu’aucune de nos variables ne suit une loi normale et donc nous ne
pourrons pas utiliser les techniques statistiques qui ont besoin de la
normalité des variables (en particulier une régression linéaire
multiple).
Dans la situation où l’on connaît la moyenne dans la population générale (par exemple, pour le QI c’est 100 à chaque âge).
t.test(smp$age, mu = 24)
##
## One Sample t-test
##
## data: smp$age
## t = 31.672, df = 796, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 24
## 95 percent confidence interval:
## 37.97618 39.82307
## sample estimates:
## mean of x
## 38.89962
La plupart des situations où l’on a besoin de tests appariés ce sont
les situations où l’on a des mesures avant et après. Le cas le moins
fréquent concerne des variables qualitatives : comment évolue la
proportion d’hommes qui font du sport un an avant et un an après leur
mariage ?
Il s’agit donc de comparer deux pourcentages, mais on ne
peut pas faire un test du \(chi-2\)
parce que ce sont les mêmes hommes avant et après (chaque sujet est son
propre contrôle). Il faut utiliser le test McNemar (comparaison
appariée de variables variables qualitatives).
mcnemar.test(b.debut, b.fin)
Beaucoup plus fréquent, comparer des variables quantitatives :
suivre le QI d’enfants avant et après une rééducation, comparer des
revenus… Là encore, utiliser un test t de Student ne tient pas compte
que chaque sujet est son propre contrôle, il faut utiliser un
test t de Student pour sujets appariés (comparaison appariée de
variables quantitatives).
t.test(x.debut, x.fin, paired = TRUE)
comment apprécier le rôle du hasard ?
Si on réalise une expérience mesurant deux variables quantitatives, totalement indépendantes sur dix sujets, on peut très bien obtenir par l’effet du hasard un coefficient de corrélation r aussi important que 0,6.
Exemple avec un essai randomisé avec 100 patients dans chaque bras, 40 guéris dans A, 30 dans B.
\(p = prob(\frac{|\%guérisonA-\%guérisonB|>10\%}{\%guérison_globale=30‰})=0,14\)