Buscando un patrón de eventos en una serie de tiempo

8

Tengo un experimento de curso de tiempo que sigue a 8 grupos de tratamiento de 12 peces durante 24 horas con observaciones realizadas a intervalos de 5 segundos. Entre las mediciones realizadas se encuentra qué tan lejos viaja cada pez (en mm) entre las observaciones. Las 24 horas se dividen en 1 período oscuro y 1 período claro.

Aquí hay una gráfica de los movimientos de los 12 peces individuales en el grupo de tratamiento H durante la primera hora del período oscuro:

grupo de control durante la primera hora de oscuridad

Puede ver que algunos peces tienen largos períodos de inactividad, algunos períodos cortos y otros no tienen ninguno durante esta ventana en particular . Necesito combinar los datos de los 12 peces en el grupo de tratamiento para identificar la duración y la frecuencia de los períodos de descanso durante todo el período oscuro y todo el período de luz. Necesito hacer esto para cada grupo de tratamiento. Luego necesito comparar las diferencias entre sus períodos de descanso y frecuencias.

No soy una chica de estadísticas, y estoy completamente en el mar. El problema se asemeja a la alineación de secuencias para mí (mi fondo de bioinfomática), por lo que estoy pensando en los modelos de Hidden Markov, pero esto puede estar muy fuera de lugar. ¿Podría alguien sugerir un buen enfoque para este problema y quizás un pequeño ejemplo en R?

¡Gracias!

dnagirl
fuente
1
Esto parece tener varios subproblemas. Primero, necesitas encontrar y extraer los períodos de inactividad para cada pez. Una persona puede hacerlo simplemente mirando, pero si tiene muchos datos, tal vez desee hacerlo automáticamente. En segundo lugar, debe combinarlos para todos los peces en un grupo. En tercer lugar, debe compararlos entre grupos. ¿Con cuál de estos necesitas ayuda? Desde que mencionaste HMMs, supongo que el primero. Si es así, un método trivial sería solo encontrar cualquier intervalo cuando el movimiento = 0. ¿Por qué no funcionaría? Si hay un breve aumento durante el descanso, ¿lo cuenta como un período prolongado
SheldonCooper
o dos cortos períodos? Si el movimiento no es 0, pero está muy cerca de 0, ¿quieres contarlo como descanso?
SheldonCooper
@SheldonCooper: es el primer problema con el que tengo problemas. La actividad mínima no debe considerarse como una interrupción del descanso. Entonces, la muestra c93 tiene 1 (o posiblemente 2) período (s) de inactividad, pero la muestra c87 tiene 4. Estaba pensando en normalizar la escala de actividad a 1 en función de los máximos individuales para que el cambio en la actividad sea proporcional en lugar de absoluto. También pensé que, dado que estas observaciones aparecen más o menos en ciclo, quizás el análisis de Fourier podría ser el enfoque apropiado.
dnagirl
1
Creo que necesitaremos una definición formal de "inactividad" o "descanso". Está bien si lo declaras en términos de lo que hace el pez en lugar de en términos de cómo se ven las parcelas (podemos traducir más adelante), pero tiene que ser formal. Si una definición formal es exactamente con lo que necesita ayuda, aquí hay algunas cosas a considerar: 1. No creo que haya una definición estándar de "inactividad en series de tiempo" que pueda simplemente tomar y usar; 2. podría ser útil conocer más contexto sobre sus experimentos para llegar a una definición;
SheldonCooper
3. En biología, las personas a menudo aceptan definiciones simples y directas como "la inactividad es cualquier período continuo cuando el movimiento es inferior a 0.1, posiblemente interrumpido por picos de altura no más de 2 y duración no más de 20 segundos, espaciados al menos 5 minutos de diferencia ". Claro, esta definición es frágil y los umbrales parecen arbitrarios (¿qué pasa si están separados 4 minutos y 55 segundos?), Pero el objetivo principal es eliminar el sesgo que una persona podría tener al clasificar los períodos de descanso con sentido común.
SheldonCooper

Respuestas:

1

Creo que un análisis basado en HMM podría ser útil para usted. Como sabe que está buscando una distinción entre descanso y movimiento, puede simplemente postular un modelo de 2 estados. Para los HMM, debe especificar la probabilidad de emisión para cada estado. Mi primer intento sería usar un exponencial (¿o un gamma?) Para la fase de reposo (ya que está limitado por cero desde abajo y una distribución normal para el otro estado (debe establecer los parámetros iniciales en un valor razonable). luego puede calcular la distribución del estado posterior junto con las estimaciones de máxima verosimilitud para sus parámetros. La secuencia del estado posterior puede proporcionarle la duración estimada de los períodos de descanso y actividad (solo cuente el número de estados sucesivos). Incluso podría poner el período oscuro / claro como covariable en el modelo.

Este http://cran.r-project.org/web/packages/depmixS4/index.html es un gran paquete para HMM. Esta http://cran.r-project.org/web/packages/depmixS4/vignettes/depmixS4.pdf viñeta tiene información muy útil sobre su aplicación y el uso de restricciones y covariables con HMM también.

Un problema que estoy viendo es que tienes múltiples peces. Debe comenzar ajustando un HMM para cada pez por separado. Tal vez podría combinar peces si de alguna manera pudiera "normalizar" la actividad de modo que pudieran producir los mismos parámetros de probabilidad de emisión. O podría usar el número de pez como una covariable.

Algún código de ejemplo:

require(depmixS4)
set.seed(1)
mod <- depmix( activity~1, data=yourdata, nstates=2,
               family=gaussian() );
fitted <- fit(mod)

pero hay muchas, muchas posibilidades, ¡mira los enlaces de arriba!

¡Buena suerte con tu proyecto!

thias
fuente