Cluster de séries temporais

8

Tenho muitas séries temporais nesta coluna do formato 1, na qual tenho o formato de data (d / m / ano) e muitas colunas que representam séries temporais diferentes, como aqui:

DATE         TS1     TS2     TS3 ...
24/03/2003   0.00    0.00    ...
17/04/2003  -0.05    1.46
11/05/2003   0.46   -3.86
04/06/2003  -2.21   -1.08
28/06/2003  -1.18   -2.16
22/07/2003   0.00    0.23

Com o R, como posso agrupar as séries temporais que mostram tendências semelhantes?

daveal81
fonte
3
Na sua aplicação, o que é uma tendência ?
cardeal
4
Há pelo menos três outras perguntas que cobrem esse tópico ou tópicos muito semelhantes: stats.stackexchange.com/q/3331/1036 , stats.stackexchange.com/q/2777/1036 , stats.stackexchange.com/q/3238/1036 .
Andy W
uma tendência na minha aplicação é um grupo de curvas em um gráfico de TS com forma semelhante, ou seja, um grupo de curvas que mostram tendências sazonais e outro que mostra uma tendência longa de andorinha-do-mar, ......
daveal81
sim este tema [link] stats.stackexchange.com/questions/3331/... negrito code é muito semelhante ao que eu quero fazer
daveal81

Respostas:

6

Passo 1

Realize uma transformação rápida de Fourier nos dados da série temporal. Isso decompõe seus dados de séries temporais em componentes de média e frequência e permite usar variáveis ​​para cluster que não mostram autocorrelação pesada, como muitas séries temporais brutas.

Passo 2

Se as séries temporais tiverem valor real, descarte a segunda metade dos elementos de transformação rápida de Fourier porque são redundantes.

etapa 3

Separe as partes reais e imaginárias de cada elemento de transformação rápida de Fourier.

Passo 4

Execute o agrupamento baseado em modelo nas partes reais e imaginárias de cada elemento de frequência.

Etapa 5

Plote os percentis da série temporal por cluster para examinar sua forma.

Como alternativa, você pode omitir os componentes DC da transformação rápida de Fourier para evitar que seus clusters sejam baseados na média e, em vez disso, nas séries definidas pela transformação de Fourier, que representa o formato da série temporal.

Você também desejará calcular as amplitudes e ângulos de fase da transformação rápida de Fourier, para poder explorar a distribuição dos espectros de séries temporais nos clusters. Veja esta resposta StackOverflow sobre como fazer isso para dados com valor real.

Você também pode plotar os percentis da forma das séries temporais por cluster, computando a série Fourier a partir das amplitudes e ângulos de fase (a estimativa da série temporal resultante não corresponderá perfeitamente à série temporal original). Você também pode plotar os percentis dos dados brutos das séries temporais por cluster. Aqui está um exemplo de tal gráfico, que surgiu de uma análise harmônica dos dados do NDVI que fiz hoje:

1º, 25º, 50º, 75º e 99º percentis de medidas NDVI no nível do período por clusters derivados de clustering baseado em modelo usando o pacote Mclust em R

Finalmente, se sua série temporal não for estacionária (ou seja, mudança de média e variância ao longo do tempo), pode ser mais apropriado usar uma transformação wavelet em vez de uma transformação Fourier. Você faria isso à custa de informações sobre frequências enquanto obtinha informações sobre a localização.

Equilíbrio Brash
fonte
Btw, acabei de fazer isso hoje !!!
Equilíbrio Brash
1
você seria capaz de fornecer um código de exemplo para executar suas etapas?
6134
Olá, @pocketfullofcheese. Precisarei encontrá-lo na área de trabalho remota do centro de pesquisa em que fui colega quando fiz isso. Pode demorar um pouco, mas eu coloquei no meu backlog.
Equilíbrio Brash
Caso alguém veja meu comentário acima, não consegui acessar o código antes de perder o acesso à área de trabalho remota. Me desculpe.
Brash Equilibrium