Procurando por padrão de eventos em uma série temporal

8

Eu tenho um experimento de curso de tempo que segue 8 grupos de tratamento de 12 peixes por 24 horas com observações feitas em intervalos de 5 segundos. Entre as medições feitas está o quão longe cada peixe viaja (em mm) entre as observações. As 24 horas são divididas em 1 período escuro e 1 período claro.

Aqui está um gráfico dos movimentos dos 12 peixes individuais no grupo de tratamento H durante a primeira hora do período escuro:

grupo controle durante a 1ª hora de escuridão

Você pode ver que alguns peixes têm longos períodos de inatividade, alguns curtos e outros não durante essa janela em particular . Preciso combinar os dados de todos os 12 peixes no grupo de tratamento de forma a identificar a duração e a frequência dos períodos de descanso durante todo o período escuro e todo o período luminoso. Eu preciso fazer isso para cada grupo de tratamento. Então eu preciso comparar as diferenças entre os comprimentos e frequências dos períodos de descanso.

Eu não sou uma garota de estatísticas e estou completamente no mar. O problema se assemelha ao alinhamento de sequência para mim (minha formação em bioinformática), então estou pensando nos modelos Hidden Markov, mas isso pode estar muito errado. Alguém poderia sugerir uma boa abordagem para esse problema e talvez um pequeno exemplo em R?

Obrigado!

dnagirl
fonte
1
Isso parece ter vários subproblemas. Primeiro, você precisa encontrar e extrair os períodos de inatividade para cada peixe. Uma pessoa pode fazê-lo apenas olhando, mas se você tiver muitos dados, talvez queira fazê-lo automaticamente. Segundo, você precisa combiná-los para todos os peixes em um grupo. Terceiro, você precisa compará-los entre os grupos. Com quais deles você precisa de ajuda? Desde que você mencionou os HMMs, estou supondo o primeiro. Nesse caso, um método trivial seria apenas encontrar qualquer intervalo quando movimento = 0. Por que não funcionaria? Se há um breve pico durante o repouso, você contá-lo como um longo período
SheldonCooper
ou dois curtos períodos? Se o movimento não for 0, mas estiver muito próximo de 0, você quer contar isso como descanso?
SheldonCooper
@ SheldonCooper: é o primeiro problema com o qual estou tendo problemas. Atividade mínima não deve contar como uma interrupção do descanso. Portanto, a amostra c93 possui 1 (ou possivelmente 2) período (s) de inatividade, mas a amostra c87 possui 4. Eu estava pensando em normalizar a escala de atividade para 1 com base em máximos individuais, para que a mudança na atividade seja proporcional e não absoluta. Eu também pensava que, uma vez que essas observações parecem aproximadamente ciclo, talvez a análise de Fourier possa ser a abordagem apropriada.
dnagirl
1
Acho que precisaremos de uma definição formal de "inatividade" ou "descanso". Tudo bem se você indicar em termos do que o peixe faz, e não em termos de aparência das parcelas (podemos traduzir mais tarde), mas deve ser formal. Se uma definição formal é exatamente com a qual você precisa de ajuda, aqui estão algumas coisas a considerar: 1. Não acho que exista uma definição padrão de "inatividade em séries temporais" que você possa usar e usar; 2. pode ser útil conhecer mais contexto sobre seus experimentos para chegar a uma definição;
SheldonCooper
3. na biologia, as pessoas geralmente aceitam definições simples e diretas, como "inatividade é qualquer período contínuo em que o movimento é menor que 0,1, possivelmente interrompido por picos de altura não superior a 2 e duração não superior a 20 segundos, espaçados pelo menos 5 minutos de intervalo ". Certamente, essa definição é frágil e os limites parecem arbitrários (e se estiverem espaçados a 4 minutos e 55 segundos?), Mas o principal objetivo é remover o viés que uma pessoa pode ter ao classificar períodos de descanso usando o bom senso.
SheldonCooper

Respostas:

1

Eu acho que uma análise baseada no HMM pode ser útil para você. Como você sabe que está procurando uma distinção entre repouso e movimento, basta postular um modelo de dois estados. Para HMMs, você precisa especificar a probabilidade de emissão para cada estado. Minha primeira tentativa seria usar um exponencial (ou uma gama?) Para a fase de repouso (uma vez que era delimitada por zero a partir de baixo e uma distribuição normal para o outro estado (você deve definir os parâmetros iniciais para um valor razoável). pode calcular a distribuição do estado posterior juntamente com as estimativas de probabilidade máxima para seus parâmetros. A sequência do estado posterior pode fornecer os comprimentos estimados dos períodos de descanso e atividade (basta contar o número de estados sucessivos). período escuro / claro como covariável no modelo.

Este http://cran.r-project.org/web/packages/depmixS4/index.html é um ótimo pacote para HMMs. Esta http://cran.r-project.org/web/packages/depmixS4/vignettes/depmixS4.pdf vinheta possui informações muito úteis sobre sua aplicação e o uso de restrições e covariáveis ​​com HMMs também.

Um problema que estou vendo é que você tem vários peixes. Você deve começar instalando um HMM para cada peixe separadamente. Talvez você possa combinar peixes se, de alguma forma, "normalizar" a atividade, de forma que eles produzam os mesmos parâmetros de probabilidade de emissão. Ou você pode usar o número do peixe como covariável.

Algum código de exemplo:

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

mas há muitas, muitas possibilidades, confira os links acima!

Boa sorte com seu projeto!

thias
fonte