Pour les données longitudinales avec un résultat numérique, je peux utiliser des tracés de spaghetti pour visualiser les données. Par exemple quelque chose comme ça (tiré du site UCLA Stats):
tolerance<-read.table("http://www.ats.ucla.edu/stat/r/faq/tolpp.csv",sep=",", header=T)
head(tolerance, n=10)
interaction.plot(tolerance$time, tolerance$id, tolerance$tolerance,
xlab="time", ylab="Tolerance", legend=F)
Mais que se passe-t-il si mon résultat est binaire 0 ou 1? Par exemple, dans les données "ohio" de R, la variable binaire "resp" indique la présence d'une maladie respiratoire:
library(geepack)
ohio2 <- ohio[2049:2148,]
head(ohio2, n=12)
resp id age smoke
2049 1 512 -2 1
2050 0 512 -1 1
2051 0 512 0 1
2052 0 512 1 1
2053 1 513 -2 1
2054 0 513 -1 1
2055 0 513 0 1
2056 1 513 1 1
2057 1 514 -2 1
2058 0 514 -1 1
2059 0 514 0 1
2060 1 514 1 1
interaction.plot(ohio2$age+9, ohio2$id, ohio2$resp,
xlab="age", ylab="Wheeze status", legend=F)
L'intrigue des spaghettis donne une belle figure, mais n'est pas très informative et ne me dit pas grand-chose. Quelle serait une manière appropriée de visualiser ce type de données? Peut-être quelque chose qui inclut une valeur de probabilité sur l'axe des y?
ohio
données (2.15) (du moins pas dans le cadre de la base). Est-ce dans une version plus récente ou via une autre bibliothèque? Ce serait une application intéressante pour une carte thermique avec des individus sur l'axe Y et des résultats sur l'axe X, puis tracer 1 réponses en noir et 0 réponses en blanc. Le tri de la matrice donnera alors un aperçu de la prévalence des différents modèles.geepack
colis.Réponses:
Il existe plusieurs façons de contourner ce problème.
Agiter légèrement les variables pour étaler les lignes
Tout d'abord, étant donné que l'âge et le résultat sont bien distincts, nous pouvons nous permettre de les agiter légèrement afin de montrer certaines tendances. L'astuce consiste à utiliser la transparence dans la couleur de la ligne afin qu'il soit plus facile de discerner l'ampleur du chevauchement.
Être chic
Il est également possible d'utiliser ce type de courbes pour montrer le flux des sujets. C'est comme une modification du graphique ci-dessus, mais en utilisant la largeur de la ligne pour représenter la fréquence plutôt qu'en utilisant le chevauchement.
Montrez le sort de chaque cas
Cela peut sembler contre-intuitif, mais si vous exposez les cas de manière systématique, cela fonctionne tout aussi bien pour raconter l'histoire agrégée. Ici, le résultat de chaque cas est affiché le long d'une ligne de référence de couleur grise. Je n'y ai pas ajouté de légende, mais en utilisant la
legend
commande, elle peut être ajoutée assez facilement. Le bleu est "resp = 0" et le rouge est "resp = 1". Le temps (âge) est réparti sur l'axe des x. Vos données sont commodément triées par modèle de résultat, donc je n'ai rien eu à faire. S'ils ne sont pas pré-triés, vous devrez utiliser la commande commedcast
dans le packagereshape2
pour masser un peu les données.Tabulation
La visualisation n'est pas la seule issue. Puisqu'il n'y aurait, au maximum, que 16 modèles différents, vous pouvez également les tabuler. Utilisez
+
et-
pour créer des modèles comme+ + + +
et+ - - -
, puis pour chacun de ces modèles, associez les nombres et le pourcentage. Cela peut montrer les informations de manière tout aussi efficace.la source