8 votos

Visualización de datos longitudinales con resultado binario

Para datos longitudinales con un resultado numérico, puedo usar espaguetis parcelas para visualizar los datos. Por ejemplo algo como esto (tomado de la UCLA Estadísticas del sitio):

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)

enter image description here

Pero ¿qué pasa si mi resultado es binario 0 o 1? Por ejemplo, en el "ohio" de datos en R el binario "resp" Variable 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)

enter image description here

Los espaguetis a la parcela da a una bonita figura, pero no es muy informativo y no me dicen mucho. ¿Cuál sería la forma más adecuada para visualizar este tipo de datos? Tal vez algo que incluye una probabilidad de valor en el eje y?

14voto

user2735206 Puntos 51

Hay muy pocas maneras de trabajar alrededor de ella.

Variación de las variables ligeramente para desprestigiar a el, aparte de las líneas

En primer lugar, ya que tanto la edad y los resultados son muy discretos, podemos darnos el lujo de leve fluctuación de ellos con el fin de mostrar algunas de las tendencias. El truco es usar la transparencia en el color de la línea, de modo que es más fácil discernir la magnitud de la superposición.

library(geepack)
set.seed(6277)

ohio2 <- ohio[2049:2148,]
head(ohio2, n=12)

jitteredResp <- ohio2$resp + rnorm(100,0,0.02)   # $
jitteredAge  <- ohio2$age+9 + rnorm(100,0,0.02)  # $
age          <- ohio2$age+9                      # $
id           <- ohio2$id                         # $
wheeze       <- ohio2$resp                       # $

#### Variation 1 ####
plot(jitteredAge, jitteredResp, type="n", axes=F,
     xlab="Age to the nearest year, jittered",
     ylab="Wheeze status, jittered")
for (i in id){
  par(new=T)
  lines(age[id==i], jitteredResp[id==i], col="#FF000008", lwd=2)
}
axis(side=1, at=seq(7,10))
axis(side=2, at=c(0,1),  label=c("No", "Yes"))

enter image description here

Llegar de lujo

También es posible el uso de este tipo de curvas para mostrar el flujo de los sujetos. Es como una modificación de la tabla anterior, pero utilizando el ancho de la línea para representar la frecuencia en lugar de usar la superposición.

enter image description here

Mostrar el destino de cada caso

Esto puede sonar contra-intuitivo, pero si que se ponen de los casos a cabo de una manera sistemática, funciona igual de bien para decir el conjunto de la historia. Aquí el resultado de cada caso se muestra a lo largo de un color gris de la línea de referencia. Yo no agregar una leyenda, pero el uso de legend comando se pueden añadir fácilmente. El azul es "resp = 0" y el Rojo "resp = 1". Tiempo (edad) se extiende en el eje x. Sus datos están convenientemente presorted por resultado el patrón, así que no tuve que hacer nada. Si no están presorted, usted tendría que usar comandos como dcast en el paquete reshape2 masaje los datos un poco.

#### Variation 2 ####
my.col             <- vector()
my.col[wheeze ==1] <- "#D7191C"
my.col[wheeze ==0] <- "#2C7BB6"

plot(age, id, type="n", frame=F, xlab="Age, year", ylab="", axes=F, xlim=c(7,10))
abline(h=id, col="#CCCCCC")
axis(side=1, at=seq(7,10))
mtext(side=2, line=1, "Individual cases")
points(age, id, col=my.col, pch=16)

enter image description here

La tabulación de la

La visualización no es la única manera de salir. Ya que no sólo sería, en la mayoría, de 16 modelos diferentes, también se puede incluir entre ellos. Uso + y - crear patrones como + + + + y + - - -, y, a continuación, para cada uno de estos patrones, adjuntar el conteo y porcentaje. Esto puede mostrar la información de la misma eficacia.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X