Score diagnostic et arbre décisionnel

Bonjour, merci d’avance pour toutes vos réponses !
Ma thèse est déjà bien avancée. Mon sujet consistait à mettre en lumière les principaux facteurs prédictifs d’une pathologie plutôt rare. Pour cela mon PU m’a conseillé une régression logistique ajustée. Les p-values sont excellentes mais j’aimerais aller un peu plus loin. Partant de ces résultats peut ont créer un score ou un arbre décisionnel qui permettrait d’avoir un outil au lit du patient pour poser le diagnostic ?

Bonjour,
Pour ce qui est du score diagnostic cela est non seulement possible mais vous l’avez déjà réalisé sans même vous en rendre compte. Pour l’arbre décisionnel c’est une autre histoire, j’y reviens juste après.

Le fait de prédire une variable sur la base d’autres variables relève du domaine de la modélisation. Il existe une quantité très importante d’algorithmes permettant de modéliser. La régression logistique en est un. Celle-ci revient à donner un poids à une liste de variables de façon à obtenir un score discriminant quant à la variable que l’on cherche à prédire.

Concrètement, une régression logistique donne des résultats que l’on exprime sous la forme d’OR avec intervalle de confiance et p-value pour chaque facteur. Pour y parvenir, votre outil statistique a cherché à résoudre l’équation suivante :

Diagnostic = k1 x ageSup50 + k2 x sexeMasculin + … + e
Dans cette équation nous avons :

  • Diagnostic : un score pour lequel le cutoff appliqué est 0,5 (au delà on prédit un diagnostic positif, en deça négatif)
  • ageSup50 : une variable qui vaut 1 si le sujet a plus de 50 ans, sinon 0
  • sexeMasculin : qui vaut 1 chez l’homme et 0 chez la femme
  • k1 et k2 : les coefficients (« scores ») que l’on attribue aux variable ageSup50 et sexeMasculin
  • : tous les autres couples variable x coefficient
  • e : communément appelé intercept ou ordonnée à l’origine, nous y reviendrons

Votre régression a calculé les scores k1, k2, … kn les plus adaptés pour que le score final obtenu soit discriminant quant au diagnostic.
En calculant l’exponentiel de ces valeurs k, vous obtenez des OR, lesquels sont préférés aux coefficients dans les publications.

Quelques exemples de scores :

  • homme de 55 ans : le score vaudra k1 x 1 + k2 x 1 + e soit k1 + k2 + e
  • homme de 45 ans : le score vaudra k1 x 0 + k2 x 1 + e soit k2 + e
  • femme de 30 ans : le score vaudra k1 x 0 + k2 x 0 + e soit e

La valeur e correspond dont au « score de base » pour un patient qui ne présenterait aucun des facteurs étudiés. Cette valeur n’a pas toujours une traduction concrète.

Sur les base de ces informations vous pouvez reconstituer votre équation en partant de vos OR et en appliquant un logarithme néperien pour retrouver vos coefficients k. La valeur de e (intercept) n’est pas à convertir, vous pouvez l’utiliser en l’état.

Votre équation obtenue, rappelez-vous que le cutoff diagnostic est de 0,5. Mais il vous est possible de rendre ce score plus pratique.
Imaginons par exemple que votre régression aboutisse à :

  • k1 = 2,41
  • k2 = 8,18
  • e = -4,12

L’équation devient :

  • 0,5 (cutoff) <=> 2,41 x ageSup50 + 8,18 x sexeMasculin - 4,12
  • On ajoute 4,12 des 2 côtés :
    • 4,65 <=> 2,41 x ageSup50 + 8,18 x sexeMasculin
  • On multiplie par 10 pour réduire les décimales
    • 46,5 <=> 24,1 x ageSup50 + 81,8, x sexeMasculin
  • On arrondit (attention cette étape fait perdre un peu de performance au test diagnostic mais le rend plus facile à manipuler au lit du patient)
    • 47 <=> 24 x ageSup50 + 82 x sexeMasculin

Ainsi votre nouveau cutoff est de 47.

Mais attention ! Bien que ce score soit issu d’une régression avec de belles p-value, cela ne préjuge en rien de sa performance. Il est impératif d’aller plus loin avant de l’utiliser en pratique courante. Il faudra notamment le tester sur une autre population (que celle de votre étude) et évaluer en comparaison d’un gold standard sa sensibilité, spécificité, VPP, VPN ainsi que son AUC.

Enfin, le cutoff obtenu avec une régression représente une bonne base de réflexion mais il peut être intéressant de le modifier selon le contexte. S’il s’agit d’un dépistage, on priviligiera la sensibilité à la spécificité, et inversement en cas de diagnostic de confirmation. Pour évaluer un meilleur cutoff il faut alors réaliser une courbe ROC et chercher le point de cette courbe (= cutoff) qui répond au mieux à votre contexte.

Pour ce qui est des arbres décisionnels vous l’aurez peut-être deviné mais il s’agit tout simplement d’une autre forme de modélisation. Il faut donc remplacer votre régression logistique par un modèle qui aboutira à un arbre plutôt qu’un score. Il existe plusieurs modèles dans cette famille. Vous pouvez par exemple utiliser le C5.0. La validation de la performance du modèle s’applique également aux arbres décisionnels : classez vos sujets avec l’arbre obtenu et évaluez ensuite par rapport à un gold standard ses performances.

Un grand merci pour cette réponse. Ca ne semble pas si compliqué lu à tête reposée. Je trouve ça fou que ce genre de chose ne soit décrit nulle part !

J’ai cependant deux problèmes :

  • avec ma variable « nombre de grossesses ». Mon OR associé est de 1,18. Si j’applique le log je troube a peu près 0,17. Je devrais donc avoir qqchose comme « nb_grossesses x 0,17 » mais ma variable n’est pas binaire. Dans ce cas comment cela fonctionne ?
  • avec mon PU nous avons essayé le C5.0 mais nous n’arrivons pas à le faire fonctionner. Il y a bien un modèle qui ressort mais il consiste à classer toutes les patientes en « non malades ». Auriez-vous un exemple de code ?

Pour votre variable nb_grossesses : remplacez la tout simplement par le nombre de grossesses.
Ainsi votre score augmentera de 0,17 point par grossesse supplémentaire.

Notez bien que cela suppose une association linéaire entre la probabilité de diagnostic et le nombre de grossesses. Si vous pensez que ça n’est pas le cas et pensez par exemple que le surrisque débute surtout à 2 grossesses, vous pouvez binariser votre variable (0-1 grossesse vs 2+).

Pour le C5.0 cela se produit généralement lorsque le nombre de malades est trop faible. Prenons par exemple un échantillon de 100 sujets avec seulement 3 malades. Considérez que tous les sujets sont sains équivaut à prédire convenablement le statut de 97 patients. Si vous êtes dans cette situation (peu de cas), vous ne devriez pas vous aventurer à concevoir des modèles sans recueillir plus de données. Cela n’aboutira à rien de valable.

Ok pour la variable, merci bien.

En effet je n’ai que 6% de cas dans mon recueil. Je peux trouver d’autres cas si le nombre reste raisonnable. Combien faudrait-il de cas pour que le C5.0 et la régression deviennent fiables ?

Il existe une règle simple pour les régressions logistiques qui consiste à prendre au moins 10 cas par facteur étudié.
Donc si votre régression logistique explore 7 facteurs, il vous faudra à minima 70 cas (et au moins autant de sujets sains).

Cette règle fonctionne généralement bien mais elle est sujette à débat.

Quelques sources à ce sujet :