Detecção de forma para dados de séries temporais

8

Eu tenho uma grande coleção de séries temporais - medições feitas a cada 15 minutos (96 medições em um dia) ao longo de 1 ano em vários locais diferentes.

Dividi cada série temporal em 365 séries temporais menores e separadas, uma para cada dia do ano. Observando essas séries temporais, certamente existem muitas formas distintas para um único dia. Alguns parecem sinusoidais, outros são constantes, outros parecem um processo estocástico aleatório, alguns parecem parabólicos e outros parecem U's.

O que eu gostaria de fazer é usar um algoritmo que possa encontrar essas formas comuns. Pensei em cluster e em usar os centróides do cluster para definir formas comuns, mas queria verificar com a comunidade se isso está correto. Até agora, vi o Dynamic Time Warp como uma métrica, mas parece que essa métrica requer muita computação. Eu também encontrei

http://mox.polimi.it/it/progetti/pubblicazioni/quaderni/13-2008.pdf de SE.

Também vi É possível fazer cluster de séries temporais com base no formato da curva? mas essa pergunta foi de 2010 e pode estar desatualizada.

Outra idéia que tive foi fazer composições automáticas de matrizes formatadas como:

Matriz é uma matriz de todas as séries temporais observadas no dia . Cada linha da matriz é uma série temporal de comprimento 96. Então, eu faria 365 composições de autogestão e usaria os autovetores como formas comuns. Isso soa razoável?MEuEuMEu

Obrigado!

JCWong
fonte

Respostas:

7

Eu não me aprofundaria muito no agrupamento de séries temporais com base em uma complexa análise de curvas, pois você provavelmente tem muito ruído em seus dados e provavelmente obtém clusters estranhos (sem sentido).

Acho que uma maneira mais fácil será descobrir o padrão principal de seus dados, que provavelmente será baseado em tendências e sazonalidades (dias da semana, fins de semana, feriados ...). Você pode encontrar isso plotando algumas estatísticas de cada dia (média, tendência da manhã, tendência da noite ...) com a hora (dia do ano, dia da semana, dia do mês ...) no eixo x. Isso fornecerá a linha de base de seus dados e, portanto, seus clusters básicos.

Por exemplo, em R, se você tiver sua data na coluna 1 e sua média na coluna 2, poderá plotar facilmente sua linha de base do padrão de dias da semana:

data[,3] <- as.factor(weekdays(data[,1]))
plot(data[,3],data[,2],main='mean by Day of Week')

O próximo passo pode ser identificar seus discrepantes e verificar se você pode encontrar um padrão lá.

Se você prefere trabalhar em ordem inversa; executando análises automáticas como as que você sugeriu ou mais séries temporais ajustadas como LB_Keogh ou kml , tudo bem. Mas você precisa retornar à interpretação significativa das descobertas com a lógica acima.

Cara
fonte