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\)

1. Neyman & Pearson et les tests d’hypothèse

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.

2. comparaison de deux variables qualitatives (par exemple le % d’un évènement oui/non)

le Chi-2

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é.

comparer selon plusieurs sous groupes

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

le test de Fisher

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

3. comparaison de deux variables quantitatives (moyennes, médianes)

test paramétrique t de Student

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.

test non paramétrique de Mann-Whitney (Wilcoxon)

À 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.

4. corrélation entre deux variables (dont au moins une quantitative)

test de la nullité d’un coefficient de corrélation (Pearson)

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).

coefficient de corrélation de Spearman

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).

comparaison d’une moyenne à une référence

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

5. tests appariés

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)

Lire la suite

A-Introduction et représentations graphiques
B-Dispersion et intervalles de confiance
C-Coefficient de corrélation
D-Tests statistiques
E-Régression linéaire
F-Régression logistique
G-Données de survie
H-Statistique exploratoire multidimensionnelle
I-Multiplicité des tests