J'ai un ensemble de données avec trois variables catégorielles et je veux visualiser la relation entre les trois dans un graphique. Des idées?
Actuellement, j'utilise les trois graphiques suivants:
Chaque graphique correspond à un niveau de dépression de base (léger, modéré, sévère). Ensuite, dans chaque graphique, j'examine la relation entre le traitement (0,1) et l'amélioration de la dépression (aucune, modérée, substantielle).
Ces 3 graphiques fonctionnent pour voir la relation à 3 voies, mais existe-t-il un moyen connu de le faire avec un graphique?
r
data-visualization
categorical-data
Alejandro Ochoa
la source
la source
Réponses:
Il s'agit d'un ensemble de données intéressant à essayer de représenter graphiquement, en partie parce qu'il n'est pas vraiment catégorique. Les deux facteurs 3 niveaux sont ordinales et il y a interaction possible entre eux (probablement, il est plus difficile pour
mild
baseline
d'avoirsubstantial
improvement
- ou peut - êtresubstantial
improvement
signifie quelque chose de différent pour chacunbaseline
).Avec plusieurs variables, il n'y a généralement pas une seule vue qui montre toutes les fonctionnalités qui pourraient vous intéresser. Certains facteurs seront plus faciles à comparer que d'autres. Je pense que votre vue d'origine est bonne et serait meilleure avec les suggestions de Nick Cox: supprimer les légendes en double et utiliser une échelle de couleurs ordinale.
Si vous êtes le plus intéressé à voir la différence entre les traitements, vous pouvez souligner le changement en utilisant un tracé de zone empilé au lieu de barres empilées.
Je me méfie généralement de l'empilement en général, car il est plus difficile de lire les valeurs moyennes, mais cela renforce la nature à somme fixe de ces données. Et cela facilite la lecture de la somme
moderate
+substantial
si cela est pertinent. J'ai inversé l'ordre desimprovement
niveaux pour que plus c'est mieux pour la fréquence.Sans empilement, l'équivalent est un graphique de pente.
Il est plus facile de lire chaque niveau, mais plus difficile à comprendre l'interaction. Vous devez garder à l'esprit que la troisième ligne dépend directement des deux autres.
Étant donné la nature ordinale des données, il peut être utile de convertir la
improvement
valeur en un score numérique, comme cela se fait souvent avec les données de Likert . Par exemple,none=0
,moderate=1
,substantial=2
. Ensuite, vous pouvez représenter graphiquement cette variable sur une échelle continue. L'inconvénient est que vous devez trouver un score raisonnable (par exemple, 0, 1 et 5 seraient une représentation plus vraie).Colophon : Ces tracés ont été réalisés avec la fonction Graph Builder du progiciel JMP (que j'aide à développer). Bien qu'il soit créé de manière interactive, un script, par exemple, pour le tracé de la zone, sans les personnalisations de coloration, est:
la source
Tout d'abord, voici ma lecture du graphique fourni des données pour ceux qui souhaitent jouer (expérimenter, si vous voulez). NB: des erreurs ponctuelles sont certainement possibles, tout comme des erreurs grossières.
Voici une refonte du design original. Un détail des données originales simplifie les choses: le nombre de personnes dans chacune des combinaisons de prédicteurs est le même, donc les fréquences de traçage et les pourcentages de traçage sont les mêmes. Ici, au lieu d'un graphique à barres empilées (subdivisées, segmentées), nous séparons les barres dans un graphique à barres bidirectionnel ou une conception de tracé de tableau.
La plupart des détails graphiques ne sont que des détails. Plusieurs petites faiblesses dans un graphique peuvent nuire à son efficacité et plusieurs petites améliorations peuvent également aider.
Pour le préciser:
Trois panneaux ne sont pas nécessaires ici, avec leur répétition d'axes, de légende et de texte.
Une légende est toujours une malédiction autant qu'une bénédiction, obligeant le lecteur à faire des va-et-vient mentalement (ou à mémoriser la légende, pas quelque chose qui fait appel, aussi facile soit-il). Le texte informatif juste à côté des barres est plus facile à suivre.
Le code couleur de la salade de fruits est dispensable. Cela semble aussi arbitraire: une amélioration "substantielle" est un gros problème, mais je trouve même le jaune fort une couleur tamisée. Mais nous n'avons pas besoin de couleur lorsque nous avons du texte à expliquer.
Bien que certains crient avec horreur de violer la distinction entre la figure et le tableau, nous pouvons aussi montrer les fréquences. Il est utile de pouvoir penser "4 personnes dans cette catégorie".
Il y a ici hommage au tracé traditionnel de la réponse sur l'axe vertical, tout comme dans l'original.
Cela dit, il est difficile de voir beaucoup de structure dans ces données. Dans ce cas, il est également difficile de partager le blâme entre (a) des données sans trop de structure et (b) les faiblesses d'une conception graphique pour identifier non seulement les effets des prédicteurs mais aussi les interactions possibles. Le traitement semble moins important que l'état de base. Mais alors, si la ligne de base était "légère", dans quelle mesure y avait-il une amélioration "substantielle"? Je m'arrêterai là pour arrêter de me ridiculiser quand l'étude des données de santé mentale n'est certainement pas une spécialité, surtout si les données s'avèrent être fausses. Mais s'ils sont réels, nous pourrions le faire avec un échantillon beaucoup plus grand. (Nous disons généralement cela, mais voilà.)
MODIFIER Le graphique peut naturellement être compliqué par un schéma de couleurs ordinales si vous le souhaitez:
Pour mémoire: les graphiques utilisaient le code Stata, y compris mon propre programme
tabplot
téléchargeable à l'aidessc inst tabplot
.la source
J'aime utiliser un axe x à 2 niveaux pour des données comme celle-ci. Ainsi, vos catégories d'axe des x pour un seul graphique peuvent être:
... avec les mêmes dénombrements par catégories [aucune / modérée / substantielle] barres d'histogramme.
la source
Le tracé Mosaic n'est-il pas spécialement conçu à cet effet?
En R ce serait comme
Chaque variable catégorielle va à un bord du carré, qui est subdivisé par ses étiquettes. (Ainsi, si vous subdivisez chaque bord à un seul niveau, au plus 4 variables catégorielles peuvent être représentées. À mon humble avis, au-delà de 3, il devient compliqué et plus difficile à interpréter). La taille des rectangles est proportionnelle à la fréquence. C'est l'idée principale derrière l'intrigue mosaïque et c'est la même chose dans cette réponse et la réponse de Paweł Kleka.
Les différences sont dans les dispositions de ces rectangles et «subtilités» fournies par un R-package spécifique utilisé pour ce type de tracé. Comme vous le voyez dans la réponse de Paweł Kleka, le
graphics
package subdivise le bord supérieur à 2 niveaux au lieu d'utiliser le bord droit. J'ai utilisé unvcd
package avec des options par défaut, de sorte que la couleur indique le degré d'association entre les variables. Le gris signifie que les données sont cohérentes avec (vous ne pouvez pas rejeter l'hypothèse de) l'indépendance des variables. Le bleu signifie qu'il existe une association positive entre une ligne de base "sévère" et une amélioration "substantielle" pour le traitement "0" et "1". (Surprise, surprise! Je le traduis comme suit: si vous souffrez d'une dépression sévère, vous vous améliorerez probablement sensiblement, que vous receviez ou non un traitement.On peut ajuster l'intrigue en fonction de ses besoins, voir par exemple ici . Le paquet a également plusieurs vignettes, google "exemple de mosaïque vcd" (comme je viens de le faire). L'article de Wikipédia cité au tout début explique également comment construire ce type d'intrigue et d'intuition derrière.
Lorsque vous comparez ma photo avec la photo de la réponse de Paweł Kleka, peu importe, ce «traitement» se trouve sur le bord gauche de chaque photo. Vous pouvez facilement changer l'emplacement du bord en changeant la dernière ligne de mon code et ajuster la mise en page en fonction de vos besoins. La pratique courante est que vers la gauche va la variable la plus importante ou la variable avec le moins d'étiquettes. Vous pouvez également modifier l'ordre des étiquettes (par exemple, de sorte que sur le bord droit, l'ordre soit "non modérément substantiel") en rendant la variable de facteur correspondante dans R ordonnée et en ajustant ses niveaux.
la source
Je suggère d'utiliser un tracé en mosaïque
la source
Une option que je considérerais est d'utiliser des ensembles parallèles. Certaines comparaisons seront plus faciles que d'autres, mais vous pouvez toujours voir les relations entre trois variables catégorielles.
Voici un exemple avec des données Titanic Survival:
Dans R (compte tenu de vos balises), j'ai utilisé ggparallel pour l'implémenter. Certaines personnes ont discuté ici sur CV comment l'implémenter d'autres manières.
la source
Les informations peuvent également être transmises à l'aide d'un graphique linéaire simple:
L'amélioration est indiquée par différents types de lignes tandis que le groupe de lignes de base est affiché en couleurs. Ceux-ci et le paramètre de l'axe des x (traitement ici) peuvent également être échangés si vous le souhaitez.
la source
Semblable aux ensembles parallèles, comme indiqué par nazareno ci-dessus, vous pouvez utiliser des tracés alluviaux qui sont disponibles à partir du package alluvial R. http://www.r-bloggers.com/alluvial-diagrams/
la source