Como testar se o processo que gerou uma série temporal mudou ao longo do tempo

7

Problema

Eu tenho dados de séries temporais gerados por uma máquina em dois períodos disjuntos de tempo - aproximadamente um mês em 2016 e outro mês em 2018.

Os especialistas no domínio sugerem a hipótese de que a cada passo t, uma variável observada Yt pode ser explicado por outro conjunto de variáveis ​​observadas, X1 1t,,Xdt.

Como posso testar se esse processo mudou com o tempo? Observe que não estou tentando testar se a distribuição para a variávelYmudou ao longo do tempo. Quero testar se a relação entre oXEuareia Y mudou ao longo do tempo.

Abordagem atual

Suponha que eu ajuste um modelo de série temporal (por exemplo, um Processo Gaussiano) nos dados de 2016 para prever Yt dado X1 1t,,Xdt como uma maneira de modelar o processo subjacente que gerou Yt.

Os especialistas em domínio sugeriram que talvez possamos tentar usar esse modelo para prever as variáveis Yts dado o Xts de 2018 e use os resíduos de alguma forma para inferir que o modelo (representando o processo em 2016) é ou não é o mesmo em 2018. Não sei como continuar depois deste ponto.

O que eu estou considerando

  1. Devo testar se os resíduos de 2016 e 2018 são gerados a partir da mesma distribuição ou executar um teste de adequação usando algo como o teste de Kolmogorov-Smirnov? Minha preocupação com essa abordagem é que os dados fora da amostra de 2018 provavelmente apresentem erros maiores que os dados de treinamento dentro da amostra de 2016, portanto esse teste provavelmente dará origem a falsos positivos. Existe alguma maneira de ajustar / considerar esse efeito?

  2. Devo ajustar dois modelos, um para 2016 e outro para 2018, e usar alguma maneira de testar se esses dois modelos são "iguais" ou "diferentes"? Por exemplo, uma possibilidade é calcular a divergência de KL entre os 2 Processos Gaussianos ajustados respectivamente nos dados de 2016 e 2018. Existem outras sugestões ou problemas com essa abordagem?

  3. Eu vi alguns posts sobre cointegração. Mas eu não entendo completamente esse conceito. Isso é relevante?

Em geral, como alguém pode abordar esse tipo de problema? Tentei pesquisar online, mas talvez devido à falta de precisão da minha consulta (não conheço esta área), não estou obtendo muitos resultados relevantes. Aprecio até dicas / comentários simples sobre o (s) tópico (s) / palavras-chave a serem pesquisadas ou livros / artigos a serem analisados.

Por favor, note que estou procurando abordagens baseadas em princípios (preferencialmente estatísticas) e não métodos baseados em heurísticas. Bons exemplos são as respostas que sugerem o teste de Chow e suas variantes abaixo.

alquimista
fonte
3
Você pode pesquisar a Detecção de ponto de mudança (consulte também esta revisão recente ).
Qeschaton 17/07/2018
@qeschaton Obrigado. Uma rápida digitalização do documento e a pesquisa do termo no Google sugerem que os algoritmos de detecção de pontos de mudança detectam quando uma sequência é alterada. Na verdade, espero descobrir uma maneira de detectar quando o relacionamento entre as entradas e saídas que gerou as saídas mudou. Examinarei o artigo mais de perto e espero que haja variações adequadas ao meu problema atual. Obrigado.
Lightalchemist

Respostas:

2

A mudança estrutural pode ser testada não apenas com o teste de Chow mencionado por @John Stax Jakobsen.

Existem muitos outros testes, especialmente os testes de família de flutuação geralmente funcionam bem.

Aqui você tem uma boa introdução ao Rpacote strucchangeque os computa. Se você não é Rusuário, leia apenas a teoria, está bem descrita aqui.

Łukasz Deryło
fonte
Obrigado! A referência e as palavras-chave "testes de flutuação" são muito úteis. Agora, tenho um nome mais preciso para procurar quando estou fazendo minha pesquisa de literatura.
Lightalchemist
1

Se for razoável modelar o relacionamento com uma regressão linear, uma maneira fácil de testar uma quebra estrutural é o teste de comida.

veja o artigo wiki aqui

Johan Stax Jakobsen
fonte
1

Um dos recursos que coloquei no meu pacote de previsão favorito foi o Teste CHOW para investigar esse ponto de interrupção nos parâmetros mais significativos. Antes disso, eu tinha que tratar / ajustar os pulsos / pulsos sazonais.

Obviamente, se houver mudanças de nível ou tendências de tempo identificadas, esse teste será ignorado.

O Teste CHOW pressupõe erros independentes em cada grupo, conforme é exigido no teste F que ele usa.

Minha implementação inclui a possibilidade de causais contemporâneos e / ou atrasados, especificados pelo usuário, dentro do GLM.

IrishStat
fonte
0

Primeiro, eu apenas encaixaria alguns modelos de caixa preta (por exemplo, GBM ou floresta aleatória) que levam diretamente em consideração a variável de tempo T, por exemplo Yt=F(Xt1 1,,Xdt;T). Pode ser útil testar várias granularidades deT, como medido em anos civis (2016, 2018), meses decorridos desde 2016 etc. etc. Para avaliar a importância de Tpode-se olhar para gráficos de importância variável (consulte, por exemplo, a Seção “15.3.2 Importância Variável” em Elementos de Aprendizagem Estatística ) ou simplesmente largar oT variável, reinstale o modelo e compare o desempenho do modelo.

Como alternativa, você pode manter seu modelo (processo Gaussiano) e comparar os resíduos de 2016 e 2018. Concordo com sua intuição de que a comparação da distribuição de resíduos dentro da amostra (2016) e fora da amostra (2018) obteria resultados enganosos. No entanto, isso pode ser corrigido rapidamente particionando seus dados da seguinte forma: divida os dados de 2016 em um subconjunto de treinamento (usado para ajustar o modelo) e um subconjunto de validação (usado para avaliar a qualidade do seu modelo), defina também o segundo conjunto de dados de validação usando o subconjunto de Dados de 2018. Em seguida, ajuste seu modelo usando o subconjunto de treinamento e teste o desempenho (calcule resíduos, MSE, etc.) em dois subconjuntos de validação (2016 e 2018). Para descartar o acaso (seu resultado pode diferir apenas por causa da má sorte), convém repetir todo o exercício (divisão de dados, modelo de ajuste,

Além disso, como você mencionou, você pode ajustar dois modelos diferentes (um baseado nos dados de 2016 e outro apenas nos dados de 2018). Nesse caso, eu também dividiria os dados de cada ano em subconjuntos de treinamento e validação e avaliaria o desempenho do modelo com base nos subconjuntos de validação. Como medida de semelhança, você pode usar: RMSE, QQ-plot, testes estatísticos mencionados ou calculando os intervalos de confiança para previsões provenientes de ambos os modelos e verificando se os intervalos de confiança se sobrepõem.

aivanov
fonte