Créer un arbre de décision avec Tableau Desktop

3 mars 2023

Pour un de nos clients de l'industrie pharmaceutique, j'ai créé un ensemble de tableaux de bords permettant de suivre le recrutement des sites participants et des patients lors du suivi d'une étude clinique. Nous avons convenu ensemble que pour le recrutement des patients, un arbre de décision serait une représentation visuelle intéressante.

L'arbre de décision n'est pas une visualisation native dans Tableau. Après avoir effectué des recherches, j'ai compris que l'arbre de décision était en fait une adaptation d'un Sankey chart et que la structure des données utilisées devait suivre un schéma très spécifique.

Considérons que l'arbre de décision que nous devons créer est le suivant :

Cet arbre représente le cheminement des patients recrutés dans une étude clinique, voici quelques éléments de terminologie :

    • Screened : les patients participent à une visite de 'screening' pendant laquelle une série de tests sont réalisés afin de vérifier s'ils remplissent les critères d'inclusion et d'exclusion de l'étude.
    • Screen failed : Si les patients rencontrent au moins un critère d'exclusion lors de la visite de screening, ils sont 'Screen Failed', et ne sont donc pas inclus dans l'étude.
    • Randomized : Les patients ont satisfait à tous les critères lors de la visite de screening, et sont donc inclus dans l'étude. Ils reçoivent un numéro de traitement de manière aléatoire, sans savoir s'il s'agit du traitement de l'étude ou un placebo.
    • Early terminated : Les patients ayant été randomisés sortent finalement de l'étude avant d'avoir commencé le traitement, ou après l'avoir commencé, mais sans l'avoir suivi en entier (en raison de la survenue d'un événement indésirable).
    • Treated : Les patients randomisés commencent le traitement.
    • Completed : Les patients ont suivi leur traitement au complet, comme prévu par le protocole de l'étude.
  • Screen failed : Si les patients rencontrent au moins un critère d'exclusion lors de la visite de screening, ils sont 'Screen Failed', et ne sont donc pas inclus dans l'étude.
  • Randomized : Les patients ont satisfait à tous les critères lors de la visite de screening, et sont donc inclus dans l'étude. Ils reçoivent un numéro de traitement de manière aléatoire, sans savoir s'il s'agit du traitement de l'étude ou un placebo.
  • Early terminated : Les patients ayant été randomisés sortent finalement de l'étude avant d'avoir commencé le traitement, ou après l'avoir commencé, mais sans l'avoir suivi en entier (en raison de la survenue d'un événement indésirable).
  • Treated : Les patients randomisés commencent le traitement.
  • Completed : Les patients ont suivi leur traitement au complet, comme prévu par le protocole de l'étude.
  • Cet arbre représente donc visuellement, parmi tous les patients ayant participé à la visite de screening initiale, quelle proportion suit le chemin prévu de l'étude jusqu'au bout.

    La structure des données

Avec A1, A2, B1, B2, C1, C2 les codes de chaque branche de l'arbre :

La source de données doit être structurée en fonction de ces branches de l'arbre : chaque ligne de la source de données correspond à une branche.

La table principale

Description des champs nécessaires :

Field nameDescription
StudyNom de l'étude
SiteNom du site (hôpital)
PathCodeIdentification de la branche de l'arbre (A1, A2, B1, B2, ...)
Level 1Etiquette du point haut de la branche
Level 2Etiquette du point bas de la branche
Nb patientsNombre de patients dans le Level 2 de la branche, pour chaque site
Position 1Position du point haut de la branche sur l'axe des abscisses
Position 2Position du point bas de la branche sur l'axe des abscisses

Pour les champs Position 1 et Position 2 , les chiffres sont choisis de la manière suivante :

Le haut de l'arbre est placé au milieu d'un axe ayant une amplitude de 10 unités, et toutes les autres positions sont réparties autour, de manière symétrique.

Voici un exemple de structure de table, pour 2 études (une avec un level randomized et un level treated, et une avec uniquement un level randomized) et 2 sites.

StudySitePathCodeLevel 1Level 2Nb patientsPosition 1Position 2
A1A2ScreenedRandomized2557.5
A2A2ScreenedRandomized2057.5
A1A1ScreenedScreen failed552.5
A2A1ScreenedScreen failed1052.5
A1B2RandomizedTreated207.59
A2B2RandomizedTreated157.59
A1B1RandomizedEarly terminated57.56
A2B1RandomizedEarly terminated57.56
A1C2TreatedCompleted15910
A2C2TreatedCompleted10910
A1C1TreatedEarly terminated598
A2C1TreatedEarly terminated598
B1A2ScreenedRandomized3057.5
B2A2ScreenedRandomized2557.5
B1A1ScreenedScreen failed552.5
B2A1ScreenedScreen failed552.5
B1B2RandomizedCompleted207.59
B2B2RandomizedCompleted207.59
B1B1RandomizedEarly terminated107.56
B2B1RandomizedEarly terminated57.56

La table T

Une autre table est nécessaire, contenant uniquement un champ T :

Le champ T est composé de 49 valeurs, de -6 à 6, avec une intervalle de 0.25 entre les valeurs (Le nombre de valeurs et l'incrément peuvent varier).

Ce champ est utilisé pour construire la courbe des branches de l'arbre.

T
-6
-5.75
-5.5
-5.25
-5
...
0
0.25
0.5
0.75
1
...
5.25
5.5
5.75
6

Produit cartésien

Les deux tables sont jointes à l'aide d'un produit cartésien (définition Wikipedia), chaque ligne de la table principale sera donc répétée 49 fois.

L'utilisation dans Tableau

Une fois la source de données créée, il est nécessaire de créer des champs calculés dans Tableau.

Les champs calculés

Positionnement

Les champs suivants sont nécessaires au bon positionnement des informations sur l'arbre de décision.

Nom du champCodeCommentaires
T2IF [PathCode] = 'A1' OR [PathCode] = 'A2' THEN [T]
ELSEIF [PathCode] = 'B1' OR [PathCode] = 'B2' THEN [T]+12
ELSEIF [PathCode] = 'C1' OR [PathCode] = 'C2' THEN [T]+24
END
Ce champ est utile pour répartir les branches sur l'axe des ordonnées, selon le niveau auquel elles appartiennent
Sigmoid1/(1+EXP(1)^-[T])Ce champ permet de créer l'arrondi des branches de l'arbre
Curve[Position 1]+(([Position 2]-[Position 1])*[Sigmoid])Ce champ permet de créer les courbes des branches en positionnant chacun des 49 points sur l'axe des abscisses.
Pointsif LAST()=0
OR FIRST()=0 AND ATTR([PathCode]) = 'A2'
THEN sum([T2])
end
Ce champ permet de positionner les nœuds de l'arbre sur l'axe des ordonnées. Ce champ contient des calculs de table.

Etiquette

Les champs suivants sont utiles pour définir le contenu de chaque étiquette.

Nom du champCodeCommentaires
Patients screened{FIXED [Study],[Site]:SUM({INCLUDE [PathCode]: MAX(CASE [Level 1] WHEN 'Screened' THEN [Nb patients] ELSE NULL END
)} )}
Pour chaque étude et chaque site, on calcule le nombre de patients screened, qui correspond à la somme des patients ayant été randomisés et de ceux ayant été screen failed.
Nb patients to be displayIF AVG([T2]) = SUM({FIXED [Study]:MIN([T2])}) THEN SUM([Patients screened])
ELSE SUM([Nb patients])
END
Ce champ permet de choisir quelle information afficher en fonction de la position sur l'arbre : Nombre de patients screenés en haut de l'arbre, Nombre de patients du level 2 dans les autres cas.
% of screened[Nb patients to be display]/SUM([Patients screened])Calcul du pourcentage du nombre de patients à chaque niveau par rapport au nombre de patients screened au départ du recrutement.
Colorif AVG([T2])= -6 then ATTR([Level 1])
elseif AVG([T2])= 6 then ATTR([Level 2])
elseif AVG([T2])= 18 then ATTR([Level 2])
elseif AVG([T2])= 30 then ATTR([Level 2])
end
Ce champ permet de choisir le label à afficher : level 1 ou level 2 en fonction de la position sur l'arbre.

Construction de la vue

Afin de construire la vue, les champs calculés relatifs au positionnement vont être utilisés en Lignes et en Colonnes, les autres champs vont être utilisés sur l'étagère des repères.

va permettre de positionner les points sur l'axe des abscisses.

Le champ T2 va permettre de positionner l'ensemble des 49 points constituant les branches sur l'axe des ordonnées.

Le champ Points va permettre de positionner uniquement les points aux extrémités des branches. Ce champ contient un calcul de table qui est calculé au moyen des dimensions spécifiques (pour chaque branche de l'arbre, au long des valeurs de T):

Les champs T2 et Points forment un axe double.

Le premier axe est utilisé pour représenter les branches de l'arbre, le type de repère est donc Ligne. Les branches sont plus ou moins épaisses en fonction du nombre de patients comptés en fin de branche : SOMME(Nb patients) est sur Taille. PathCode et T sont en Détail de la vue, afin de créer un repère pour chacun des 49 points de chaque branche.

Le deuxième axe permet de représenter les extrémités des branches. Les étiquettes vont donc être définies sur son étagère des repères, avec les champs Color, % of Screened et Nb patients to be display.

Color est également mis en Couleur.

Conclusion

Il n'est pas si compliqué de créer une arbre de décision avec Tableau. Le tout est d'avoir la bonne structure de données.

Références

Mon arbre sur Tableau public : Decision tree clinical trial | Tableau Public, vous pouvez télécharger le classeur.

Les arbres qui m'ont inspirée :

Node Link Tree Diagram Example | Tableau Public

Decision Tree | Tableau Public

La courbe sigmoïde : Définition de Wikipedia

Auteur:
Lucie Reveillere

Nous accordons une grande importance à la protection de vos données personnelles et à la transparence de l'utilisation des cookies. En continuant votre navigation, vous acceptez l'utilisation des cookies pour améliorer votre expérience, fournir des fonctionnalités de médias sociaux et analyser notre trafic. Nous partageons des informations avec nos partenaires d'analyse.

Politique relative aux cookies

Accepter
Refuser
Morning Auber, 6 Rue Auber, 75009 Paris
Abonnez-vous
à notre newsletter.
Obtenir les dernières nouvelles sur The Information Lab et l'industrie de la data
S’inscrire
© 2025 The Information Lab