Calculer et rapporter les odds ratio sans se fatiguer !

calculer et rapporter les odds ratio

Très récemment, j’ai travaillé sur la construction d’un score prédictif dans le domaine médical. Il s’agissait de construire un outil d’aide au pronostic de mauvaise réponse à un traitement donné, à l’aide d’une dizaine de variables prédictives.

La méthodologie classiquement employée consiste, à :

  1. Catégoriser chaque variable prédictive numérique en une variable catégorielle de quelques modalités,
  2.  Utiliser des régressions logistiques univariées pour étudier l’association entre chaque variable prédictive et la variable à expliquer (ici la réponse au traitement : mauvaise ou bonne).
  3. Sélectionner les variables prédictives qui présentent une pvalue < 0.2 (d’autres seuils sont possibles, comme 0.15, ou 0.10).
  4. Construire un modèle de régression logistique multivarié contenant l’ensemble des variables sélectionnées à partir des régressions univariées.
  5. Utiliser une méthode de sélection des variables (par exemple en pas à pas descendant) pour aboutir à un modèle final, plus simple, ne contenant que des variables prédictives dont l’association avec la variable réponse est significative, ou proche de la significativité.
  6.  Construire le score en arrondissant les odds ratio ajustés du modèle logistique multivarié final.

Au bout du compte, cette méthodologie nécessite de faire tourner de nombreux modèles de régression. Et comme on est dans le cadre de régressions logistiques (simples ou multivariées), les associations (simples ou ajustées) entre les variables prédictives et la variable réponse, se mesurent à l’aide d’un odds ratio. Cet odds ratio est obtenu par l’exponentielle du coefficient, fourni en sorti de la régression logistique.

1. Rapporter tous les odds ratio, c’est fastidieux !

Sur le principe calculer les odds ratio n’est pas particulièrement difficile. Ce qui est très chronophage, et profondément ennuyant, c’est de synthétiser tous les résultats obtenus dans des tables. En effet, pour un rapport, ou une publication, il est nécessaire de présenter les odds ratio, leur intervalle de confiance, et la p-value, obtenus à chaque étape,
c’est à dire :

  • avec les régressions logistiques univariée (nommés aussi odds ratio bruts)
  • avec la régression logistique multivarié du modèle complet (nommés
    aussi appelés odds ratio ajustés),
  • avec la régression logistique multivarié du modèle final.

C’est vraiment pénible. J’avais un demi pied dans la dépression 😉 quand j’ai découvert le package finalfit !

Ce package est absolument GENIAL ! Il fait quasiment tout le travail à votre place ! Et en plus, il est tidyverse compatible !

 

2. Utiliser le package finalfit pour obtenir et présenter les odds ratio

Pour illustrer l’utilisation du package finalfit, je vais employer les données heart_disease du package funModelling:

 

 

Remarque : Par commodité, je ne vais pas stratifier les variables numériques, mais les utiliser comme telles (c’est à dire comme des variables numériques).

 

2.1 Les odds ratio des analyses univariées :

Pour obtenir les odds ratios des analyses logistiques univariées, il est nécessaire de définir :

  • la variable dépendante (ici has_heart_disease)
  • les variables prédictives (appelées ici “explanatory”)

Toutes les régressions logistiques univariées sont ensuite réalisées par la fonction glmuni(), et les résultats collectés et mis en forme par la fonction fit2df()

 

 

Pour obtenir un rendu élégant dans un document word ou pdf, on peut utiliser les lignes
suivantes :

Voici le rendu sous Word :

 

rendu sous word des odds ratio

Remarque : pour plus d’informations sur la fonction kable(), vous pouvez consulter l’article Guide de démarrage en R markdown.

 

2.2 Les odds ratio des modèles univariés et multivarié complet

Pour cela, on utilise cette fois la fonction finalfit() :

Comme vous pouvez le voir la fonction finalfit() renvoie aussi les moyennes et écart type des variables numériques dans les deux groupes de la variable dépendante, ainsi que les pourcentages lorsque les variables sont catégorielles.

Et pour un rendu élégant au format word,et/ou pdf :

rendu de la table des odds ratio sous word

Si vous souhaitez ne conserver que les résultats multivariés, vous pouvez simplement supprimer la colonne des résultats univariés, en utilisant la fonction select() du package dplyr :

 

Pour plus d’information sur l’utilisation de la fonction select() et du package dplyr, vous pouvez consulter l’article : Initiation à la manipulation de données avec le package dplyr

Si vous n’êtes pas intéressé par la partie descriptive, vous pouvez utiliser la fonction glmulti() à la place de la fonction finalfit() :

 

 2.3 Les odds ratio de tous les modèles

Il s’agit ici d’obtenir et de présenter les odds ratio :

  • des modèles de régression univariés,
  • du modèle de régression multivarié complet,
  • d’un modèle de régression multicarié restreint (obtenu par sélection des variables).

Attention, la sélection des variables du modèles multivarié doit être réalisé par ailleurs. Pour donner un exemple, je le fais ici par une procédure descendante basée sur le score d’Akaïké (AIC), avec la fonction stepAIC() du package MASS.

 

Les variables incluses dans le modèles multivarié final sont :

  • age
  • gendre
  • chest_pain
  • max_heart_rate

Pour compiler les résultats des 3 niveaux d’analyse (modèles univariés, modèle multivarié complet, et modèle multivarié final), la démarche consiste à :

  1. Construire une table descriptive avec la fonction summary_factorlist()
  2. Construire une table avec les OR des modèles univariés avec la fonction glmuni(),
  3. Construire une table avec les OR du modèle multivarié complet avec la fonction glmmulti(),
  4. Construire une table avec les OR du modèle multivarié final avec la fonction glmmulti(), en utilisant un subset des variables prédictives (ici explanatory_final),
  5. Combiner toutes les tables en utilisant la fonction finalfit_merge().

 

Voici le rendu sous Word :

rendu de la table des odds ratio complète

 

3. Visualiser les odds ratio

Pour cela, il suffit d’employer la fonction <strong>or_plot()</strong>

 

plot des odds ratio ajustés

 

4. Remarques :

Les modèles de régression logistique construits par les fonctions du package finalfit utilisent une distribution binomiale des erreurs. Avant d’utiliser ces fonctions, il est nécessaire de vérifier qu’aucune surdispersion n’est présente. En cas de surdispersion, les intervalles de confiance et les p-values ne sont pas valides.

5. Pour aller plus loin

Le package finalfit n’est pas spécifiquement dédié à la régression logistique ! Il contient des fonctions similaires à celles présentées ici et qui peuvent être employés dans le cadre de régressions linéaires simples et multiples, dans le cadre de modèles à effets mixtes ou encoredans le cadre d’analyse de survie. Je vous encourage vivement à découvrir les possibilités de ce package en consultant sa vignette.

 

Et si vous souhaitez une bonne introduction, pratique, à la régression logistique dans un contexte médical / épidémiologique, je vous conseille cette vidéo de Tierry Ancelle.

introduction à la régression logistique

Alors, que pensez vous des possibilités de ce package finalfit ? Dites moi, en commentaire, quelle fonction vous parait la plus bluffante ?

Et en attendant, si cet article vous a plus, ou vous a été utile, partagez le sur vos réseaux sociaux 😉

 

Crédits photos :Image pa rphotosforyou de Pixabay

 

Poursuivez votre lecture:

 

Partager l'article
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

6 commentaires

  1. Albert KORA Répondre

    Merci claire pour ce riche article. Le package est vraiment génial. Merci également pour tout ce que tu fais pour nous des experts de la statistique et du logiciel R. Si tu pouvais nous aider avec un article sur l’analyse de survie.
    1 . Conditions de réalisation
    2. Définition des variables
    3. Analyse et Interprétation

  2. Hanifa Répondre

    Merci beaucoup pour ce tutoriel très claire et très intéressant!
    J’aurai voulu savoir si avec ce package il serait possible de faire la même chose avec les risques relatifs plutôt que les OR et en prenant en compte les poids de sondage ? J’ai essayé de trouver un moyen de le combiner avec le package survey mais n’ai pas réussi :/
    Très bonne journée à vous !
    Et merci encore pour tout 🙂

  3. Mounirou Mouyassir Répondre

    Merci pour cet article.
    J’avais justement un rapport d’études statistiques à présenter et jumeler les coefficients, les odds ratios, les p-value sur un même tableau. J’ai dû tout programmer tout ça moi-même. J’ignorais qu’un package existait pour le faire. Vaut mieux tard que jamais 😁😁.

Laisser un commentaire

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