¿Cómo encontrar agrupaciones (trayectorias) entre datos longitudinales?

11

Contexto

Quiero establecer la escena antes de ampliar un poco la cuestión.

Tengo datos longitudinales, mediciones tomadas en sujetos aproximadamente cada 3 meses, el resultado primario es numérico (como en continuo a 1dp) en el rango de 5 a 14 con el grueso (de todos los puntos de datos) entre 7 y 10. Si hago un El gráfico de espagueti (con la edad en el eje xy una línea para cada persona) obviamente es un desastre, ya que tengo> 1500 sujetos, pero hay una clara huella hacia valores más altos con el aumento de la edad (y esto se sabe).

La pregunta más amplia: lo que nos gustaría hacer es primero poder identificar grupos de tendencias (aquellos que comienzan alto y permanecen altos, aquellos que comienzan bajo y permanecen bajos, aquellos que comienzan bajos y aumentan a altos, etc.) y luego podemos mire los factores individuales que están asociados con la membresía del 'grupo de tendencia'.

Mi pregunta aquí se refiere específicamente a la primera parte, la agrupación por tendencia.

Pregunta

  • ¿Cómo podemos agrupar trayectorias longitudinales individuales?
  • ¿Qué software sería adecuado para implementar esto?

He visto Proc Traj en SAS y M-Plus sugerido por un colega, que estoy investigando, pero me gustaría saber qué piensan los demás sobre esto.

nzcoops
fuente
1
Es solo un punto de partida, pero quizás vea algunas de las respuestas a esta pregunta: stats.stackexchange.com/questions/2777/…
Jeromy Anglim
Gracias Jeromy, la opción kml es interesante, me gusta la idea dado que está en R, pero no estoy seguro de poder usar su marco con mis datos, dado que los sujetos vienen en diferentes edades para sus visitas en lugar de 'visita 1'. visita 2 ', etc. y algunos tienen 10 visitas, mientras que otros tienen 50 + ...
nzcoops
Comprobar kml paquete : parece proporcionar la funcionalidad que necesita. El artículo en JoSS lo describe en detalle. También kml3dy kmlShapepodría ser de interés.
radek

Respuestas:

11

He usado el Mfuzz en R para agrupar conjuntos de datos de microarrays de curso de tiempo. Mfuzz usa "agrupación suave". Básicamente, los individuos pueden aparecer en más de un grupo.

Como @Andy señala en el comentario, el documento original utiliza datos de CTN. Sin embargo, sospecho que debería funcionar bien para sus datos discretos. Especialmente porque solo estás explorando el conjunto de datos. Aquí hay un ejemplo rápido en R:

##It's a bioconductor package
library(Mfuzz)
library(Biobase)

## Simulate some data
## 6 time points and 90 individuals
tps = 6;cases = 90
d = rpois(tps*cases, 1)  ##Poisson distribution with mean 1
m = matrix(d, ncol=tps, nrow=cases)

##First 30 individuals have increasing trends
m[1:30,] = t(apply(m[1:30,], 1, cumsum))

##Next 30 have decreasing trends
##A bit hacky, sorry
m[31:60,] = t(apply(t(apply(m[31:60,], 1, cumsum)), 1, rev))

##Last 30 individuals have random numbers from a Po(1)

##Create an expressionSet object
tmp_expr = new('ExpressionSet', exprs=m)

##Specify c=3 clusters
cl = mfuzz(tmp_expr, c=3, m=1.25)
mfuzz.plot(tmp_expr,cl=cl, mfrow=c(2, 2))

Da la siguiente trama:

Agrupamiento Mfuzz

csgillespie
fuente
Gracias por la referencia, no me había encontrado con esto antes. ¿Sería apropiado este algoritmo de agrupamiento con datos distribuidos de recuento bajo como el OP había mencionado (o datos dicotómicos)? El documento de referencia (Futschik y Carlisle 2005) utilizó datos que se transformaron para ser continuos.
Andy W
@Andy: Buen punto. He incluido una simulación rápida. Todo parece estar bien, pero puede haber una solución más óptima.
csgillespie
Gracias @csgillespie, trataré de probar esto. Por cierto, mis datos son continuos, no discretos, ¿no estoy seguro de si la pregunta no fue lo suficientemente clara o si fue un error tipográfico en su respuesta? Tengo que revertir mi R para instalar Mfuzz, que comience la diversión.
nzcoops
@csgillespie: esto es genial. Estoy jugando con eso ahora mismo con algunos datos reales. ¿Sabes si hay una manera de hacer que calcule el número de grupos?
Macro
4

Espero que haya un paquete MPLUS para hacer lo que necesita. Hay un artículo en Psychometrika sobre casi exactamente este tema.

springerlink.com/content/25r110007g417187

excepto que los datos son binarios y las trayectorias son trayectorias de probabilidad. Los autores utilizan el análisis de clase latente (implementado mediante el uso de un modelo de mezcla finita penalizado) para agrupar trayectorias. También sé que el primer autor escribió algunos otros documentos hace unos 10 años con Bengt Muthen (creador de MPLUS) sobre el análisis de clase latente en entornos similares (con trayectorias). Por ejemplo,

http://onlinelibrary.wiley.com/doi/10.1111/j.0006-341X.1999.00463.x/abstract

suena muy similar a lo que estás hablando, excepto que el resultado es binario. El caso continuo es mucho más simple, por lo que haría una búsqueda bibliográfica hacia atrás (es decir, mira los documentos a los que hacen referencia estos documentos) para encontrar algo que coincida con lo que ha descrito con mayor precisión.

Para obtener más información, puede preguntar directamente a los propietarios de MPLUS qué paquete necesita usar para hacer lo que necesita. En general, responden bastante rápido y son muy útiles:

http://www.statmodel.com/cgi-bin/discus/discus.cgi

Macro
fuente