Gagnez du temps en utilisant des tests de permutation et en les automatisant !

automatisation des tests de permutation

Comme je l’expliquais dans un précédent article, les tests de permutation sont des approches robustes, basées sur l’aléatoire et le ré-échantilonnage, qui permettent de réaliser des tests statistiques paramétriques, sans que la validité des résultats ne reposent sur des distributions théoriques !

En pratique, les tests de permutations permettent, par exemple, de réaliser des régressions linéaires (simples ou multiples) sans avoir à vérifier les hypothèses de normalité, et d’homogénéité des
résidus. C’est tentant, non ?

Ces approches sont donc intéressantes, lorsque l’on est pressé par le temps et que l’on doit réaliser, de façon répétée, les mêmes modèles de régression, avec différentes variables “réponse”, par exemple. Mais pour aller encore plus vite, il peut être intéressant de réaliser  une automatisation ces tests de permutation.

Dans ce post, je vais donc vous montrer comment automatiser la réalisation de régressions linéaires simples, à l’aide de tests de permutations. Pour cela, je vais utiliser le package purrr du package tidyverse, et le jeu de données cystfibr du package ISwR. Le package ggplot2 (qui appartient aussi au package tidyverse) sera également utile, ainsi que le package lmPerm qui permet d’utiliser les tests de permutation.

 

1. Chargement des packages

 

2. Les données

Les données s’intéressent aux fonctions pulmonaires de 25 patients atteints de fibrose cystique ; 10 variables sont mesurées.

 

Nous allons automatiser la réalisation de régressions linéaires simples entre chaque variable de ce jeu de données et la variable pemax qui sera, dans tous les cas, la variable explicative. Pour plus de détail sur la signification des variables, vous pouvez consulter les informations du jeu de données en utilisant la commande suivante :

 

3. Evaluation des relations linéaires

Les tests de permutations peremettent de s’affranchir de l’évaluation des hypothèses de normalité et d’homogénité des résidus. En revanche, il est toujours nécessaire de vérifier que la forme de la relation entre la variable réponse et la variable explicative est globalement linéaire.

Pour cela, on peut utiliser deux méthodes.

3.1 Passage en format long et utilisation de facet_wrap

Ici, il n’y a que 9 relations à évaluer, ce n’est pas beaucoup. On peut donc passer les données en format long à l’aide de la fonction gather, et utiliser la fonction facet_wrap de ggplot2.

Dans ce format long, les données des variables age à tlc sont placées les unes sous les autre dans une même colonne nommée var. Leur valeurs sont en vis à vis dans la colonne value. Et la variable pemax est répétée.

 

régression linéaire avec R

Au final, la forme linéaire me semble acceptable pour toutes les relations. Celle relative à la variable sex n’a pas vraiment de sens, je vais donc la retirer du jeu de donnés qui sera fourni aux tests de permutation automatisés. Il faudrait faire de même avec les variables qui ne présentent pas de relation de forme linéaire avec la variable prédictive employée.

3.2 Réalisation automatisée des plots

Comme expliqué dans ce post, il est également possible de réaliser les plots un par un de façon automatique, et de les enregistrer dans le working directory (ou ailleurs). Pour cela, on créer notre propre fonction de plot, et on l’utilise dans une boucle.

4. Automatisation des tests de permutation

L’automatisation des tests de permutation se fait sur un jeu de données au format long.

L’automatisation des tests de permutation consiste à:

  • transformer le jeu de données long qui est un data.frame en une list avec la fonction split.
  • utiliser la fonction map du package purrr pour appliquer le test de permutation sur chaque élement de la list.
  • utiliser la fonction summary, toujours à l’aide de la **fonction map**, pour obtenir l’ensemble des résultats de chaque régression.

Les résultats sont alors stockés dans l’objet “res_complet”.

En ajoutant une fonction personnalisée aux lignes précédentes, il est alors possible de mettre en forme les résultats, de façon plus synthétique, comme ceci :

Remarque : Pour mettre au point ce code, je me suis inspirée d’un post de Brian S. Yandell.

 

Voilà, j’espère que cet article vous sera utile, et qu’il vous permettra de gagner du temps lorsque vous aurez à faire des analyses répétées.

S’il vous a plu, partagez le ! Et si vous avez d’autres astuces pour gagner du temps, indiquez les moi en commentaire.

Crédits photos : geralt

Retrouvez ici 5 de mes articles les plus consultés:

Partager l'article
  •  
  •  
  •  
  •  
  •  
    5
    Partages
  • 5
  •  
  •  
  •  
  •  

Laisser un commentaire

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