Le test exact de Fisher

snedecor\bullet Présentation:

Publié en 1922 par Ronald Aylmer Fisher, le test des probabilités exactes de Fisher est une approche non paramétrique permettant de tester si deux variables qualitatives (nominales ou ordinales) distinctes (X ^1, X ^2) à deux modalités sont indépendantes. C’est en 1951 que le test exact de Fisher a été étendu aux tableaux L \times C, \forall L, C \geq 2 par G. H. Freeman et J. H. Halton devenant le test de Fisher-Freeman-Halton, mais ce nom est très peu utilisé et c’est celui de son ancêtre qui est resté.

Le test exact de Fisher est une alternative au test du \chi ^2 lorsque la condition sur les effectifs théoriques n’est pas respectée ou bien lorsque le tableau des effectifs croisés est de taille 2 \times 2 du fait des ddl qui valent alors 1.

En général ce test est évité sur des tableaux d’effectifs croisés trop grand du fait du trop grand nombre de calculs que cela implique. Néanmoins certains logiciels ont implémenté des algorithmes permettant de l’exécuter quelque soit la dimension du tableau croisé associé ou quelque soit la taille de l’échantillon.

\bullet Le test

Hypothèse préliminaire: variables qualitatives non appariées.

L’idée du test exact de Fisher est de comparer la distribution observée avec l’ensemble des combinatoires possibles et issues (au sens statistique) d’une distribution aléatoire. Le test exact de Fisher est, à la base, développé pour les tableaux de taille 2 \times 2 mais nous verrons plus loin sa version étendue.

Nous pouvons alors présenter les effectifs croisés entre (X ^1, X ^2):

addNous  sommes donc dans le cadre d’une distribution hypergéométrique et la formule générale pour la statistique du test exact de Fisher est donnée par:

p = \frac{(a + b)! (c + d)! (a + c)! (b + d)!}{a! b! c! d! n!}

Le calcul de la p-valeur est assez laborieuse à obtenir. En effet, il faut comparer la statistique de test associée aux données observées à celles obtenues sur chacune des K configurations conservant les même effectifs marginaux (a + b), (c + d), (a + c), (b + d) que ceux observés et de produit d’effectifs croisés (nommé également « éloignement »),

| \prod_{\mbox{config } k \in [1, \cdots, K]} | = |a \cdot d - c \cdot b|_k \geq | \prod_p | = |a \cdot d - c \cdot b|_p

La p-valeur vaut alors,

p + \sum_{k = 1} ^K p_k

p_k désigne la valeur de la statistique de test calculée sur la configuration numéro k. La p-valeur est comparée directement au seuil de confiance fixé \alpha.

L’hypothèse H_0 est:  » Il y a indépendance entre les deux variables « .

Le test de Fisher-Freeman-Halton:

Freeman et Halton ont proposé une généralisation du test exact de Fisher. En partant du tableau croisé obtenus sur X ^1, X ^2 a, respectivement, p, q modalités:

add64La statistique de test vaut alors:

p = \frac{n_{1,.}! \times \cdots \times n_{p,.}! \times n_{.,1}! \times \cdots \times n_{.,q}!}{n_{1,1}! \times \cdots \times n_{p,q}! \times n_{.,.}!}

La mesure de l’éloignement pour le calcul de la p-valeur revient alors à calculer le déterminant associé au tableau croisé.

Le test de Fisher-Freeman-Halton est reconnu comme conservateur du fait de sa méthode de calcul faisant intervenir un plus grand nombre de configurations que dans le cas du test exact de Fisher.

L’algorithme de Mehta et Patel:

Comme nous l’avons vu, le grand problème qui réside dans le test exact de Fisher est le nombre de configurations à déterminer et à vérifier pour le calcul de la p-valeur. Ainsi, sur un tableau de dimensions très grandes et d’effectif important, le temps de calcul nécessaire explose considérablement et le recours à un logiciel, même puissant, n’est pas une solution à long terme puisque la mémoire physique utilisée sera vite dépassée par l’amas de configurations à dérouler.

Mehta et Patel propose un algorithme basé sur la stratégie des réseaux acycliques (comprendre un réseau ouvert et non cyclique avec un noeud initial et un noeud final) permettant d’estimer rapidement ces configurations, de les sélectionner et de sommer leur statistique de test pour le calcul immédiat du test exact de Fisher.

Soit le tableau d’effectifs croisés T de taille L \times C issues des variables X ^1, X ^2 et L_i = \sum_{j = 1} ^C T_{i,j} effectifs marginales en ligne. Notons A l’ensemble de toutes les configurations possibles vérifiant la condition sur les effectifs marginaux.

L’idée de l’algorithme de Mehta et Patel est de définir l’ensemble des configurations possibles, et issues des données observées, isomorphe à l’ensemble A. Ainsi, la longueur des chemins du réseaux menant à l’une des configurations d’intérêt est égale à la valeur de sa statistique de test, le problème à résoudre revient alors à déterminer et sommer la longueur des chemins qui sont inférieurs à la statistique de test calculée sur les données observées.

Le réseau se construit de la manière suivant, nous comptons autant d’étapes que de colonnes C et chaque étape possède un certain nombre de noeuds hormis la dernière et la première qui n’en dispose que d’un seul. Nous démarrons à la dernière étape C et remontons récursivement au noeud initial 0. Le dernier noeud est écrit comme un vecteur de taille 1 \times L, (L_{1,k}, \cdots, L_{L,k}) des effectifs marginaux en ligne issus des données observées et chacun des noeuds des étapes antérieures représente une configuration unique respectant la condition sur les effectifs marginaux.

Nous passons d’un noeud k à un noeud k - 1 par la formule suivante:

max(0, L_{i,k} - \sum_{i = 1} ^L T_{i,k} + \sum_{l = 1} ^{i - 1} (L_{l,k} - L_{l, k-1}) \leq L_{i,k-1} \leq min(L_{i,k}, \sum_{l = 1} ^{k-1} \sum_{i = 1} ^L T_{i,l} - \sum_{l = 1} ^{i-1} L_{l, k-1})

Deux noeuds sont en relation si et seulement si \forall i \in [1, \cdots, L], L_{i,k} \geq L_{i,k-1}. La statistique de test est déterminée en fonction du chemin le plus rapide reliant le noeud final au noeud initial et la longueur de ce chemin est le produit des longueurs entre les noeuds le constituant et de formule unitaire:

distance(noeud_{\mbox{Etape }k, \mbox{Numero} s_k} \rightarrow noeud_{\mbox{Etape }k-1, \mbox{Numero} s_{k-1}})= \frac{(\sum_{i = 1} ^L T_{i,k})!}{(L_{1,k}-L_{1,k-1})! \times \cdots \times (L_{L,k}-L_{L,k-1})!}

Tendance pour rejeter H_0 :

Plus nous comptons de cas tel que |a \cdot d - b \cdot c|_k \geq |a \cdot d - b \cdot c|_p (nous rappelons que (.)_k représente le calcul de l’éloignement pour la k-ième configurations tandis que (.)_p désigne celui pour les variables observées) et moins nous avons de chance de rejeter H_0.

Évidemment le nombre de cas retenu dépend également de la forme des effectifs marginaux, ainsi des effectifs marginaux équilibrés donnent lieu à un plus grand notre de configuration candidate à remplir celle sur l’éloignement.

Ainsi, plus | (a \cdot d - b \cdot c)_p | \rightarrow 0 plus il existe un grand nombre de possibilités remplissant la première condition ainsi que la seconde puisque cela revient à dire que (a \cdot d)_p \rightarrow (b \cdot c)_p, ou inversement, soit un tableau d’effectifs croisés équilibré sur chaque cellule ou bien en ligne ou bien en colonne.

\bullet Tendance lorsque n \longrightarrow \infty:

La formule du test exact de Fisher montre que plus a, b, c, d sont grands (ce qui arrive forcément si n grand) et plus les effectifs marginaux induiront de configurations candidates. Finalement le problème rencontré par le test de Fisher-Freeman-Halton devient celui du test exact de Fisher dés que n \rightarrow +\infty.

Nous proposons de simuler deux variables indépendants et de tableau croisé ci-dessous,

add

Soit k une constante multiplicative grâce à laquelle nous agrandissons la taille de l’échantillon tout en conservant ses proportions afin de mettre en évidence l’influence de la taille de n. Nous présentons ci-dessous l’évolution de la p-valeur au fur et à mesure que k augmente (et donc n).

add71

La simulation montre que dés que notre échantillon approche les 40 000 observations le test rejette à tord H_0 marquant l’influence de la taille de n sur le test exact de Fisher.

\bullet Annexe théorique: 

Nous proposons la démonstration du test Fisher-Freeman-Halton qui est une généralisation de celle du test exact de Fisher.

La probabilité que n_m observations appartiennent à la modalité m \in [1, \cdots, M] est,

P = n! \prod_{m = 1} ^M \frac{p_m ^{n_m}}{n_m!}

p_m est la probabilité de choisir aléatoirement une observation du groupe m.

En posant \lambda_m = n \cdot p_m, le nombre d’observations de l’échantillon du groupe m, nous obtenons la forme suivante:

P = \frac{n!}{n ^n} \prod_{m = 1} ^M \frac{\lambda_m ^{n_m}}{n_m!}

En prenant un certain nombre de conditions C_1, \cdots, C_s, de probabilités à priori respectives P_{C_1}, \cdots, P_{C_s}, l’expression devient:

P = \frac{n!}{n ^n} \prod_{m = 1} ^M \frac{\frac{\lambda_m ^{n_m}}{n_m!}}{\prod_{j = 1} ^s P_{C_j}}

Plus généralement, si nous nous étendons à une population divisée en K groupes (issues par exemple des croisement des modalités de deux variables qualitatives ou ordinales), la probabilité de tirage sera:

P = \frac{n!}{n ^n} \prod_{m_1 = 1} ^{M_1} \cdots \prod_{m_k = 1} ^{M_k} \frac{\frac{\lambda_{m_1, \cdots, m_k} ^{n_{m_1, \cdots, m_k}}}{n_{m_1, \cdots, m_k}!}}{\prod_{j = 1} ^s P_{C_j}}

En posant,

a_p = \sum_{m_1 = 1} ^{M_1} \cdots \sum_{m_{p - 1} = 1} ^{M_{p - 1}} \sum_{m_{p + 1} = 1} ^{M_{p + 1}} \cdots \sum_{m_k = 1} ^{M_k} n_{m_1, \cdots, m_k}

Ainsi, en posant \lambda_{m_1, \cdots, m_k} = \frac{\prod_{p = 1} ^k a_p}{n ^{k - 1}}, nous obtenons:

P = (\frac{n ^n}{n!}) ^{k - 1} \lbrace \frac{\prod_{p = 1} ^k \prod_{m_p} ^{M_p} a_p !}{\prod_{m_1 = 1} ^{M_1} \cdots \prod_{m_k = 1} ^{M_k} n_{m_1, \cdots, m_k}!} \rbrace \times \lbrace \frac{\prod_{m_1 = 1} ^{M_1} \cdots \prod_{m_k = 1} ^{M_k} \lambda_{n_{m_1, \cdots, m_k}} ^{n_{m_1, \cdots, m_k} }}{\prod_{p = 1} ^k \prod_{n_p} ^{M_p} a_p ^{a_p}} \rbrace

Et,

P = \frac{\prod_{p = 1} ^k \prod_{m_p = 1} ^{M_p} a_p !}{(n!) ^{k - 1} \prod_{m_1 = 1} ^{M_1} \times \cdots \times \prod_{m_k = 1} ^{M_k} n_{m_1, \cdots, n_k}!}

Enfin, en posant d_{m_1, \cdots, m_{h - 1}, m_{h + 1}, \cdots, m_k} = \sum_{m_h = 1} ^{M_h} n_{m_1, \cdots, m_k}, nous avons la forme finale:

P = \frac{\prod_{m_1 = 1} ^{M_1} \cdots \prod_{m_{h - 1} = 1} ^{M_{h - 1}} \prod_{m_{h + 1} = 1} ^{M_{h + 1}} \cdots \prod_{m_k = 1} ^{M_k} d_{m_1, \cdots, m_{h - 1}, m_{h + 1}, \cdots, m_k} \prod_{m_h = 1} ^{M_h} a_{h,m_h}!}{n! \prod_{m_1 = 1} ^{M_1} \cdots \prod_{m_k = 1} ^{M_k} n_{m_1, \cdots, m_k}!}

Qui est donc la formule de la statistique de test de Fisher-Freeman-Halton.

En restreignant les indices à k = 2 nous nous retrouvons dans les conditions d’utilisation du test exact de Fisher.

\bullet Exemple:

Soit les deux variables X ^1, X ^2 ci-dessous,

addCi-dessous, l’histogramme des effectifs croisés de X ^1, X ^2.

addNous en obtenons la table des effectifs croisés suivante (en bleu les effectifs marginaux):

addLa statistique de test de Fisher est alors:

p = \frac{(3+7)!(10+0)!(3+101)!(7 + 0)!}{3!7!10!0!20!} = 0.001547988

En fonction des effectifs marginaux nous pouvons constituer les 7 configurations différentes suivantes:

addLa valeur d’éloignement seuil est obtenue à partir de celle sur l’échantillon observé, ainsi nous avons a \cdot d - c \cdot b = 3 \times 0 - 70 \times 10. En raisonnant par valeur absolue de ce critère, nous retenons donc une configuration, la numéro 7, et le calcul de sa statistique de test vaut p_7 = 0.001547988.

La p-valeur de la statistique de test de Fisher vaut alors p + p_7 = 0.001547988 + 0.001547988 = 0.003095975 << 5 \%.

Nous décidons donc de rejeter H_0 et de conclure en une liaison entre X ^1 et X ^2.

\bullet Application informatique:

Procédure SAShttp://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.htm#procstat_freq_sect029.html

Package et fonction R: http://stat.ethz.ch/R-manual/R-patched/library/stats/html/fisher.test.html

\bullet Bibliographie: 

– On the interpretation of χ2 from contingency tables, and the calculation of P de Ronald Aylmer Fisher

– Note on an Exact Treatment of Contingency, Goodness of Fit and Other Problems of Significance de G. H. Freeman et J. H. Halton

– Le document http://www.iumsp.ch/Enseignement/postgradue/privat-docent/4_testsusu.pdf

– A network algorithm for performing Fisher’s exact test in r × c contingency tables de Cyrus Mehta et Nitin Patel