Para datos longitudinales con un resultado numérico, puedo usar diagramas de espagueti para visualizar los datos. Por ejemplo, algo como esto (tomado del sitio de estadísticas de UCLA):
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)
¿Pero qué pasa si mi resultado es binario 0 o 1? Por ejemplo, en los datos de "ohio" en R, la variable binaria "resp" indica la presencia de una enfermedad respiratoria:
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)
La trama de espagueti da una buena figura, pero no es muy informativa y no me dice mucho. ¿Cuál sería una forma adecuada de visualizar este tipo de datos? ¿Quizás algo que incluye un valor de probabilidad en el eje y?
ohio
datos (2.15) (al menos no como parte de la base). ¿Está en una versión más nueva o a través de alguna otra biblioteca? Esta sería una aplicación interesante para un mapa de calor con individuos en el eje Y y resultados en el eje X, luego trazar 1 respuestas como negras y 0 respuestas como blancas. La clasificación de la matriz proporcionará una visión general de la prevalencia de los diferentes patrones.geepack
paquete.Respuestas:
Hay bastantes formas de solucionarlo.
Agitando ligeramente las variables para difuminar las líneas
Primero, dado que tanto la edad como el resultado son muy discretos, podemos permitirnos un poco de inquietud para mostrar algunas tendencias. El truco consiste en utilizar la transparencia en el color de la línea para que sea más fácil discernir la magnitud de la superposición.
Ponerse elegante
También es posible utilizar este tipo de curvas para mostrar el flujo de los sujetos. Es como una modificación del gráfico anterior, pero usar el ancho de la línea para representar la frecuencia en lugar de superponerse.
Muestra el destino de cada caso.
Esto puede sonar contra intuitivo, pero si presenta los casos de manera sistemática, funciona igual de bien para contar la historia agregada. Aquí el resultado de cada caso se muestra a lo largo de una línea de referencia de color gris. No
legend
agregué una leyenda allí, pero usando el comando se puede agregar con bastante facilidad. El azul es "resp = 0" y el rojo es "resp = 1". El tiempo (edad) se extiende en el eje x. Sus datos se clasifican convenientemente según el patrón de resultados, por lo que no tuve que hacer nada. Si no están clasificados previamente, tendría que usar el comando comodcast
en el paquetereshape2
para masajear un poco los datos.Tabulación
La visualización no es la única salida. Como solo habría, como máximo, 16 patrones diferentes, también puede tabularlos. Use
+
y-
para crear patrones como+ + + +
y+ - - -
, y luego para cada uno de estos patrones, adjunte los recuentos y porcentajes. Esto puede mostrar la información con la misma eficacia.fuente