Tests de permutation avec le logiciel R

Les tests de permutation sont des approches robustes, basées sur l’aléatoire et le ré-échantilonnage. Elles permettent de réaliser des tests “classiques”, notamment des procédures paramétriques, sans que la validité des résultats ne reposent sur des distributions théoriques !

Concrètement, ça veut dire par exemple, qu’il est possible de réaliser une régression linéaire multiple, et d’avoir confiance dans ses résultats, même si les résidus ne suivent pas une loi normale, qu’ils ne sont pas distribués de façon homogène, ou encore que des outliers sont présents dans les données.

1. Rappels sur les tests d’hypothèses classiques

Prenons l’exemple du test t de Student.

1.1 Hypothèses et statistique

Les hypothèses nulle et alternative du test t de Student sont:

H0 : mA = mB

H1 : mA ≠ mB

La statistique du test est :

tests de permutation

Avec :

tests de permutation

1.2 Déroulement du test:

Comme expliqué dans [un de mes précédents articles](https://statistique-et-logiciel-r.com/tutoriel-comparaison-de-deux-moyennes-avec-le-logiciel-r/) les tests d’hypothèses classiques se déroulent en 3 étapes:

  1. Validation des hypothèses nécessaires à l’utilisation du test considéré. Pour le test t de Student, il s’agit de vérifier que les données des deux groupes suivent une loi normale, et que les variances sont homogènes. Ces hypothèses sont nécessaires pour que la statistique T, calculée à l’étape 2, suive la distribution de Student (c’est la théorie qui dit ça).
  2. Calcule de la statistique du test, à partir des données observées.
  3. Comparaison de la valeur observée à la distribution théorique de cette statistique, sous l’hypothèse nulle qui stipule que les moyennes ne sont pas différentes. Il s’agit d’une distribution de Student centrée sur 0, et dont le nombre de degrés de liberté dépend du nombre d’observations dans les groupes A et B.
  • Si la valeur observée de la statistique se situe à droite du percentile 97.5 (ou à gauche du percentile 2.5) de cette distribution théorique centrée sur 0, alors le test est significatif, et on concluera que les deux moyennes sont différentes.
  • sinon, le test n’est pas significatif, et on concluera que les deux moyennes ne sont pas différentes.

 

2. Les tests de permutation

Avec un test de permutation on ne va plus se baser sur la distribution théorique de la statistique pour évaluer la significativité, mais sur une distribution empirique. Elle est dite empirique parce qu’elle est construite directement partir des données.

 2.1 Déroulement

Le déroulement des tests permutation se comprend facilement dans le contexte de la comparaison de deux moyennes.

 2.1.1 Données

Imaginons une expérimentation dans laquelle 10 souris sont soumises à un régime alimentaire A, et 10 autres à un régime alimentaire B. Et que l’on souhaite comparer les moyennes des masses des souris des deux groupes, en employant un test t de Student par exemple.

Les données pourraient être celles-ci :

 

 

test de permutation

 2.1.2 Les étapes

Le test de permutation va consister à :

  1. Calculer les moyennes des masses observées, m\_A et m\_B, puis à calculer la statistique T du test de Student (commé décrit plus haut). Cette première statistique calculée sur les valeurs observées est généralement appelé t0 (c’est seulement une convention). Ici t0 = 1.59
  2. Placer virtuellement les masses des 20 souris dans un même sac, puis à arttribuer aléatoirement 10 masses au régime alimentaire A, et les 10 masse restantes au régime alimentaire B. Par exemple, les masses des souris 13, 6, 12, 19, 9, 11, 7, 4, et 10, pourraient être attribués au régime A, et les autres au régime B.
  3. Calculer les nouvelles m\_A e et m\_B puis la nouvelle statistique T.
  4. Recommencer les étapes 2 et 3 pour toutes les différentes façons possibles de constituer les groupes. Ce nombre correspond au nombre de combinaisons mathématiques. Il s’obtient avec la fonction choose(20,10). Dans cet exemple il y a 184756 façons possibles de constituer les groupes A et B, autrement dit à la fin de l’étape 4, 184756 statistiques T auront été estimées. On les nomme généralement t.
  5. L’ensemble des statistiques t ainsi estimées sont alors ordonnées ; elles forment la distribution empirique.

Ces tests sont appelés test de permutations car les différentes combinaisons peuvent aussi être vues comme des permutations des étiquettes des régimes (A ou B),entre les lignes.

 

2.1.3 Calcul des p-values

La p-value bilatérale du test est estimée en calculant  la proportion de ces statistiques qui se situent au dela de la valeur absolue de statistique t0 caculées sur les données observées. Elle correspond à l’aire sous la courbe au dela des valeurs t0 et -t0.

test de permutation

Ici la p-value bilatérale est égale à 0.02, on conclut donc que les deux moyennes sont différentes.

Pour un test unilatéral, il suffit de considérer un seul coté, c’est à dire la proportion de statistique t au dela de t0 OU au delà de -t0. La p-value unilatérale à droite est ici égale à 0.01.

 

2.2 Principe :

Les permutations ont pour conséquence de casser les relations entre la variable dépendante (ici la masse des souris) et la ou les variables indépendantes (ici le groupe). Lorsque cette relation est détruite, on est dans la situation de l’hypothèse nulle, qui postule que le groupe n’a pas d’effet. Les tests de permutation permettent donc de construire la distribution empirique de la statistique sous l’hypothèse nulle.

 

 2.3 Remarques :

Lorsque la distribution empirique sous l’hypothèse nulle est basée sur toutes les permutations possibles, le test de permutation est dit “exact”. En effet, lorsque l’hypothèse nulle est rejetée, elle l’est à un niveau alpha exact.

Le nombre de permutations possibles est généralement très élevé. Dans ce cas là, seul un échantillon des permutations possibles est constitué, en employant des approches de type Monte Carlo. On parle alors de test de permutation approximatif.

Les permutations reposent sur un générateur de nombres pseudo aléatoires. Ce nombre change chaque fois que le test est lancé. Si un test de permutation est réalisé plusieurs fois sur les mêmes données, les résultats obtenus seront légèrement différents. Pour éviter ce problème et obtenir des résultats stritement identiques,il est nécessaire de fixer ce nombre à l’aide de la fonction set.seed. Par exemple set.seed(1234) ou set.seed(678). N’importe quel nombre peut être utilisé.

3. Mise en application sous R :

Il existe plusieurs packages sous R pour réaliser des tests de permutations. Les plus utilisés sont coin, lmPerm, et pgirmess.

Le package coin permet surtout de réaliser des tests statistiques classiques comme le test t, le test de Wilcoxon ou encore le test de Kruskal Wallis. Le package lmPerm est davantage  dédié aux modèles linéaires. Le package pgirmess, quant à lui, permet d’ étendre les tests de permutations aux modèles linéaires, aux modèles linéaires généralisés, ainsi qu’aux modèles linéaires mixtes.

3.1 Le package coin :

3.1.2 Liste des fonctions disponibles

tests de permutation

 

3.1.2 Exemple

Nous allons, ici, réaliser l’equivalent du test t de Student par un test de permutation. Cela nécessite la fonction oneway_test.

 

Ces résultats peuvent être comparer avec ceux du test t :

Ici, les résultats sont plutôt proches. Néanmoins quand on regarde les distributions des masses, on s’aperçoit que 2 outliers sont présents dans le groupe du régime B. Cela pourrait biaiser les résultats. Le test de permutation est donc un moyen de les valider.

 

qqnorm

De façon générale, pour savoir comment utiliser les fonctions d’un package, vous pouvez consulter mon article 7 façons d’obtenir de l’aide avec le logiciel R.

 

3.2 Le package lmPerm

Le package lmPerm est dédié aux modèles linéaires. Il permet, en autres, de réaliser des ANOVA, des ANCOVA, des régressions linéaires simples ou encore des régression linéaires multiples, sous la forme de tests de permutation.

3.2.1 Les fonctions de lmPerm

Ce package comportent deux fonctions principales :

  • lmp : pour réaliser des régressions linéaires simples ou multiples
  • aovp : pour réaliser des ANOVA à un ou deux facteurs, ou encore
    des ANCOVA

3.2.2 Exemple

3.2.2.1 Anova a un facteur

tests de permutation

L’ANOVA nécéssite que les données de chaque groupe suivent une loi normale et que les variances soit homogènes. Ce n’est clairement pas le cas ici. Dans cette situation il peut être intéressant d’utiliser un test de permutation.

A comparer avec les résultats du test classique :

Il est également possible de réaliser une ANCOVA, ou encore un ANOVA à deux facteurs avec interaction, avec la même fonction aovp.

 

3.2.2.2 Régression linéaire multiple

D’autres exemples de l’utilisation de la fonction lmp sont présents dans le chapitre 12 du livre
R In action” de Robert I. Kabacoff.

 

3.3 Le package pgirmess

Le package pgirmess propose la fonction PermTestqui permet de réaliser des  tests de permutation après l’ajustement de modèles linéaires, des modèles linéaires généralisés, et de modèles linéaires mixtes (à partir d’un objet lme construit avec le package nlme).

3.3.1 Régression linéaire multiple

L’argument B permet de définir le nombre de permutations réalisées.

 

3.3.2 Modèle linéaire généralisé.

 

3.3.3 Modèle linéaire à effet mixte.

4.Pour aller plus loin :

Si vous voulez en savoir davantage sur les tests de permutation et les procédures de rééchantillonage, je vous conseille le livre de référence “An Introduction to the Bootstrap”, d’Efron et Tibshirani.

Pour une vision plus synthétique, je vous conseille le chapitre 12 du livre “R In action” de Robert I. Kabacoff.

 

5.Conclusion

De façon générale, les tests de permutation peuvent être employés chaque
fois que :

  • les échantillons sont de petites tailles,
  • les données ne suivent pas bien les distributions théoriques
    supposées,
  • des des outliers sont présents.

De mon point de vu, les tests de permutation sont donc surtout utiles lorsqu’il n’y a pas d’alternative non paramétrique. C’est le cas par exemple de l’ANOVA à deux facteurs, de la régression linéaire multiple, des modèles linéaires généralisés ou encore des modèles linéaires à effets mixtes.

Il me semble que les tests de permutation peuvent également être très utiles dans le cadre de procédures répétées. Par exemple lorsqu’on doit réaliser exactement les mêmes analyses mais pour différentes variables réponses. Vérifier les hypothèses de normalité et / ou d’homogénéité peut vite devenir fastidieux. Du coup, automatiser les analyses en utilisant ce type de tests peut être une bonne solution. Je vais d’ailleurs l’essayer très prochainement.

Et vous, utilisez vous régulièrement des tests de permutation ? Si oui dans quel contexte ?

Enfin si cet article vous a été utile, n’oubliez pas de le partager.

 

Note : Je touche une petite commission (entre 3 et 6%) si vous passez par les liens Amazon de cet article pour acheter le livres mentionné. cela m’aide à entretenir ce blog, merci si vous le faites ! 😉

Crédits photos : aitoff

Retrouvez ici 3 mes 3 derniers articles

  • [Vous avez des données manquantes ? Essayez missMDA !](https://statistique-et-logiciel-r.com/vous-avez-des-donnees-manquantes-essayez-missm)
  • [Mémo sur les lists](https://statistique-et-logiciel-r.com/memo-sur-les-lists/)
  • [Comparaison de deux pourcentages avec le logiciel R](https://statistique-et-logiciel-r.com/comparaison-de-deux-pourcentages-avec-le-logiciel-r/)
Partager l'article
  •  
  •  
  •  
  •  
  •  
    3
    Partages
  • 3
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *