Como lidar com séries temporais que mudam de sazonalidade ou outros padrões?

22

fundo

Estou trabalhando em um conjunto de dados de séries temporais de leituras de medidores de energia. A duração da série varia de acordo com o metro - para alguns, tenho vários anos, outros apenas alguns meses etc. Muitos exibem sazonalidade significativa e muitas vezes múltiplas camadas - dentro do dia, semana ou ano.

Uma das coisas em que tenho trabalhado é agrupar essas séries temporais. Meu trabalho é acadêmico no momento e, enquanto estou fazendo outras análises dos dados, tenho um objetivo específico de realizar alguns agrupamentos.

Fiz alguns trabalhos iniciais em que calculei vários recursos (porcentagem usada nos fins de semana versus dia da semana, porcentagem usada em diferentes intervalos de tempo etc.). Depois, passei a analisar o uso do Dynamic Time Warping (DTW) para obter a distância entre séries diferentes e o agrupamento com base nos valores das diferenças, e encontrei vários documentos relacionados a isso.

Questão

A sazonalidade de uma série específica alterada fará com que meu cluster esteja incorreto? E se sim, como faço para lidar com isso?

Minha preocupação é que as distâncias obtidas pela DTW possam ser enganosas nos casos em que o padrão em uma série temporal mudou. Isso pode levar ao armazenamento em cluster incorreto.

Caso o exposto acima não seja claro, considere estes exemplos:

Exemplo 1

Um medidor tem leituras baixas da meia-noite às 8h, as leituras aumentam acentuadamente durante a próxima hora e permanecem altas das 9h às 17h, depois diminuem acentuadamente durante a próxima hora e ficam baixas das 18h até meia-noite. O medidor continua esse padrão consistentemente todos os dias por vários meses, mas depois muda para um padrão em que as leituras simplesmente permanecem em um nível consistente ao longo do dia.

Exemplo 2

Um medidor mostra aproximadamente a mesma quantidade de energia consumida a cada mês. Após vários anos, ele muda para um padrão em que o uso de energia é maior durante os meses de verão, antes de retornar à quantidade usual.

Direções possíveis

  • Gostaria de saber se posso continuar comparando séries temporais inteiras, mas dividi-las e considerá-las como uma série separada se o padrão mudar consideravelmente. No entanto, para fazer isso, eu precisaria ser capaz de detectar essas alterações. Além disso, simplesmente não sei se essa é uma maneira adequada ou se trabalha com os dados.
  • Também considerei dividir os dados e considerá-los como muitas séries temporais separadas. Por exemplo, eu poderia considerar cada combinação dia / metro como uma série separada. No entanto, eu precisaria fazer o mesmo se quisesse considerar os padrões semanais / mensais / anuais. Eu acho que isso funcionaria, mas é potencialmente bastante oneroso e eu odiaria seguir esse caminho se houver uma maneira melhor que eu esteja perdendo.

Notas adicionais

Essas são coisas que surgiram nos comentários, ou coisas em que pensei devido a comentários, que podem ser relevantes. Estou colocando aqui para que as pessoas não precisem ler tudo para obter informações relevantes.

  • Estou trabalhando em Python, mas tenho rpy para aqueles lugares onde R é mais adequado. No entanto, não estou necessariamente procurando uma resposta em Python - se alguém tiver uma resposta prática sobre o que deve ser feito, fico feliz em descobrir os detalhes da implementação.
  • Tenho bastante código de "rascunho" funcional - fiz algumas execuções na DTW, fiz alguns tipos diferentes de clustering etc. Acho que compreendo amplamente a direção que estou tomando e o que devo fazer. Estou procurando realmente está relacionado a como eu processo meus dados antes de encontrar distâncias, executar agrupamentos, etc. Dado isso, suspeito que a resposta seria a mesma, independentemente de as distâncias entre séries serem calculadas por DTW ou por uma distância euclidiana mais simples (ED).
  • Achei esses documentos especialmente informativos sobre séries temporais e DTW e podem ser úteis se for necessário algum conhecimento sobre a área de tópicos: http://www.cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass
fonte
Uma pergunta muito boa, e é ótimo ver tanto entusiasmo! Acho que você pode definir um pouco a sua pergunta, por isso é mais convidativo para outras pessoas lerem e depois dar uma resposta.
Rubens
@ Rubens Thanks! Vou trabalhar novamente quando estiver em casa esta noite. Posso ver onde seria útil incluir mais informações sobre como cheguei a esse ponto e por que. Eu estava preocupado com o fato de ficar muito tempo, mas vou separar o plano de fundo e questionar um pouco mais para evitar que fique ilegível.
Jo Douglass
Pode não ser uma pergunta de "estatística pura", mas precisa de uma resposta de estatística pura. Você lutará até pensar em termos puramente estatísticos.
Spacedman
@ Spacedman - Congratulo-me com as respostas da maneira que as pessoas consideram a melhor maneira de respondê-la, com a ressalva de que talvez eu tenha mais perguntas se a resposta for pesada em fórmulas ou referências a conceitos estatísticos que ainda não entendo.
Jo Douglass
Jo, você encontrou a resposta certa para sua pergunta? Estou na mesma situação e preciso de ajuda. Obrigado
LSola

Respostas:

14

Depois de ler sua pergunta, fiquei curioso sobre o tópico clustering de séries temporais e distorção dinâmica do tempo (DTW) . Portanto, realizei uma pesquisa limitada e criei um entendimento básico (para mim) e o seguinte conjunto de referências relevantes do IMHO (para você). Espero que você ache isso útil, mas tenha em mente que pulei intencionalmente trabalhos de pesquisa, pois estava mais interessado nos aspectos práticos do tópico.

Recursos:

Aleksandr Blekh
fonte
1
Vários desses recursos estão sendo pesquisados ​​- implementei uma versão modificada do trabalho nos pontos 2 e 4, por exemplo -, portanto, provavelmente estamos na mesma página agora. E a grande maioria do que sei é baseada nos artigos ou artigos de Eamonn Keogh. Mas há alguns aqui que eu não tinha lido, e o sobre agrupamento de séries temporais de compartilhamento de bicicletas é interessante - obrigado! Não estou vendo nada que responda especificamente à minha pergunta, mas aponte se perdi alguma coisa durante a leitura.
Jo Douglass
1
Além disso, se você ainda acha isso interessante, os artigos de Keogh realmente valem uma leitura. Eles são surpreendentemente fáceis de ler e bastante práticos, tendo em vista o uso de muitos conjuntos de dados e o fornecimento de informações suficientes para que alguém possa recriar todos os experimentos. O mais recente é interessante, e é o que eu estava trabalhando quando fui deixado de lado por minha pergunta. cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass
1
@ JoDouglass: De nada! Não pretendia responder sua pergunta diretamente (devido ao meu conhecimento limitado do tópico), mas esperava que fosse útil, o que parece ser o caso. Obrigado por bons comentários e pela referência - procurarei nos documentos e tentarei ter uma idéia melhor. Há muito o que aprender, é um pouco demais.
Aleksandr Blekh
1
Esmagador é certo, eu estava me chutando por escolher este tópico por um tempo! Mas sinto que estou chegando lá - e tem sido muito interessante aprender. Eu tenho várias coisas em funcionamento como uma espécie de versões aproximadas do que preciso fazer, e acho que é mais sobre como processar meus dados antes de executá-los nos meus modelos agora. Esse link de compartilhamento de bicicleta é interessante para mim, pois é o primeiro que eu vi discutindo a média de séries temporais desde a leitura do recente artigo de Keogh que mencionei.
Jo Douglass
1
@ JoDouglass: Quando eu disse "avassalador", eu quis dizer todo o domínio da ciência de dados (incluindo IA / ML e estatísticas, especificamente). Ainda estou para encontrar um recurso , que apresenta um alto nível de discussão de várias abordagens e / ou métodos como temas , integrados em uma abrangente , mas parcimoniosa , quadro .
Aleksandr Blekh
4

Se você deseja apenas buscar padrões sazonais, consulte a autocorrelação . Se você está procurando um modelo que possa aprender padrões sazonais e fazer previsões com ele, Holt-Winters é um bom começo e o ARIMA seria uma boa coisa para acompanhar. Aqui está [pdf] o tutorial que me tirou do chão.

TheGrimmScientist
fonte
O trabalho é (por enquanto) acadêmico, e não puramente prático. Posso fazer algumas previsões muito tarde ou no futuro, mas estou mais interessado em explorar os dados passados ​​no momento. O agrupamento é um objetivo em si, assim como algumas idéias que quero explorar além desse ponto.
Jo Douglass
Desculpe, pressione enter prematuramente. Eu examinei a autocorrelação em certa medida e a executei em um subconjunto de meus dados há um tempo atrás, mas não estava muito claro para mim o que eu poderia obter com isso. Os dados são bastante barulhentos. Às vezes, os padrões de sazonalidade são bastante óbvios na visualização, mas inexatos em seus horários - portanto, posso estar procurando por padrões semelhantes, mas não em um cronograma agradável e uniforme. Foi-me dito que a autocorrelação provavelmente seria problemática nesses dados, mas feliz por ter uma outra olhada, se houver valor. Não quero apenas encontrar a sazonalidade, mas entendê-la é um objetivo.
Jo Douglass
Trabalhe nesse tutorial pelo menos até e incluindo o 2.5. Ele usa R, o que é especialmente bom para o seu ambiente acadêmico. Ele ensinará a autocorrelação, que soa exatamente como o que você está procurando (não é possível dizer se não era adequado porque você não sabia o que estava procurando, ou os dados são realmente muito barulhentos). Se o problema é o ruído, a suavização exponencial é uma maneira de ajudar com isso, que será ensinado como parte do modelo Holt-Winters. Mesmo que tudo isso não lhe dê a resposta, certamente tornará o seu próximo passo muito mais claro.
TheGrimmScientist
Eu li o tutorial, mas ele aborda principalmente coisas que eu já sei. Na verdade, estou trabalhando em Python e estou um pouco longe demais para mudar o R, embora pretenda pegar o rpy em algum momento, caso haja algumas coisas que não encontrei em nenhuma biblioteca do Python. Reescrevi minha pergunta, caso isso ajude - como eu digo, o agrupamento é um objetivo em si, não estou procurando uma direção totalmente diferente para seguir. Receio que o tutorial não Realmente não respondo minha pergunta.
Jo Douglass