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 , uma variável observada pode ser explicado por outro conjunto de variáveis observadas, .
Como posso testar se esse processo mudou com o tempo? Observe que não estou tentando testar se a distribuição para a variávelmudou ao longo do tempo. Quero testar se a relação entre oareia 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 dado como uma maneira de modelar o processo subjacente que gerou .
Os especialistas em domínio sugeriram que talvez possamos tentar usar esse modelo para prever as variáveis s dado o s 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
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?
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?
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.
Respostas:
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
R
pacotestrucchange
que os computa. Se você não éR
usuário, leia apenas a teoria, está bem descrita aqui.fonte
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
fonte
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.
fonte
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 tempoT , por exemplo Yt= F(X1 1t, ... ,Xtd; 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 T pode-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.
fonte