¿Cuáles son buenas maneras de trazar distribuciones a lo largo del tiempo usando R?

8

Tengo ~ 400 individuos y> 10k puntos de tiempo cada uno (resultados de simulación) que me gustaría poder monitorear a medida que cambian con el transcurso del tiempo. Trazar a todos los individuos es demasiado desordenado, trazar la media + -sd, min / max o cuantiles es muy poca información para mi gusto. Me pregunto qué han hecho otras personas para visualizar este tipo de datos. Si hubiera menos puntos de datos, usaría beanplots para cada punto de tiempo, pero eso no funcionaría para tantos puntos de tiempo.

Lívido
fuente
¿Desea examinar medidas repetidas (distribución de valores dentro de grupos de nivel de persona) o resultados de panel (funciones de respuesta variable dentro de la persona a lo largo del tiempo) o solo está examinando los resultados en función del tiempo? Las gráficas de frijoles (o gráficas de violín) ignoran la agrupación, pero se pueden usar para visualizar observaciones que son discretas en el tiempo. ¿Has considerado suavizadores populares como LOESS o suavizar splines?
AdamO
@AdamO Solo quiero ver la distribución de los resultados a lo largo del tiempo. Estoy interesado en cómo cambia la distribución de una estadística de nivel individual ("nivel de actividad") como una forma de ver una red de individuos. Cada uno de los individuos interactúa con un subconjunto de los demás, esto también cambia con el tiempo.
Livid
Los suavizadores son capaces de hacer eso. No es una trama de espagueti que muestra estadísticas individuales, pero puede visualizar una tendencia promedio a lo largo del tiempo.
AdamO
@ AdamO No entiendo la sugerencia de suavizar ya que simplemente puedo trazar el promedio en cada paso de tiempo para ver eso.
Lívido el
1
@Glen_b Simplemente calcularía los cuantiles en cada punto de tiempo y haría una serie temporal de ellos en lugar de usar diagramas de caja, aunque espero ver distribuciones complejas.
Lívido

Respuestas:

1

Yo usaría un suavizador, como:

geom_smooth(method='loess')

o submuestreo sus datos y trazo solo cada 5 individuos, y cada 10 pasos de tiempo (por ejemplo).

library(ggplot2)    
# Data looks like:
#   Subject   Timestep  Y
#   1         1         0.5
#   1         2         0.6    
#   1         3         0.6
#   1         4         0.7
temp=subset(data, ((as.numeric(subject)%%5)==0) & ((as.numeric(Timestep)%%10)==0))
qplot(Timestep,Y,data=temp)

o ambos.

S. Robinson
fuente
1

Estas son algunas sugerencias geniales. Mi sugerencia es usar gráficos de medio violín como se muestra en http://biostat.mc.vanderbilt.edu/HmiscNew usando la función de Hmiscpaquete R summarySy los latticegráficos.

Frank Harrell
fuente