É possível automatizar a previsão de séries temporais?


18

Eu gostaria de criar um algoritmo capaz de analisar qualquer série temporal e "escolher automaticamente" o melhor método de previsão tradicional / statiscal (e seus parâmetros) para os dados analisados.

Seria possível fazer algo assim? Se sim, você pode me dar algumas dicas sobre como isso pode ser abordado?


3
Não, isso não pode ser alcançado razoavelmente. Freqüentemente, não há dados suficientes para distinguir entre dois modelos razoáveis, independentemente de todos os modelos possíveis. Conseguir um melhor modelo exigiria que a física fosse conhecida em termos absolutos, e com muita freqüência as premissas de modelagem nem sequer são conhecidas e / ou não são testadas / não podem ser testadas.
Carl

3
Não. Não há como determinar qual modelo é o melhor. Python não é relevante nesta discussão. No entanto, existem tentativas com bons resultados. Por exemplo, projeto github.com/facebook/prophet . Também possui ligação Python.
Cagdas Ozgenc

3
Estou votando para deixar em aberto porque acho uma pergunta razoável - mesmo que a resposta seja "não". Eu sugiro remover o python do título, porque não é relevante ou especialmente sobre o tópico aqui.
mkt - Restabelece Monica

1
Eu removi o python do título, conforme sugerido. Obrigado por suas respostas.
StatsNewbie123

2
Veja o teorema "sem almoço grátis".
21418 AdamO:

Respostas:


20

Primeiro, é necessário observar que a abordagem descrita pelo IrishStat é específica para os modelos ARIMA, não para qualquer conjunto genérico de modelos.

Para responder à sua pergunta principal "É possível automatizar a previsão de séries temporais?":

Sim, ele é. No meu campo de previsão de demanda, a maioria dos pacotes de previsão comercial o faz. Vários pacotes de código aberto também o fazem, principalmente as funções auto.arima () (previsão ARIMA automatizada) e ETS () (previsão de suavização exponencial automatizada) de Rob Hyndman do pacote de previsão de código aberto em R, veja aqui para obter detalhes sobre essas duas funções . Há também uma implementação em Python do auto.arima chamada Pyramid , embora, na minha experiência, ela não seja tão madura quanto os pacotes R.

Os produtos comerciais que mencionei e os pacotes de código aberto que mencionei funcionam com base na ideia de usar critérios de informação para escolher a melhor previsão: você ajusta vários modelos e, em seguida, seleciona o modelo com o menor AIC, BIC, AICc, etc .... (normalmente, isso é feito no lugar da validação fora da amostra).

No entanto, há uma grande ressalva: todos esses métodos funcionam em uma única família de modelos. Eles escolhem o melhor modelo possível entre um conjunto de modelos ARIMA ou o melhor modelo possível entre um conjunto de modelos de suavização exponencial.

É muito mais desafiador fazê-lo se você quiser escolher entre diferentes famílias de modelos, por exemplo, se você quiser escolher o melhor modelo do ARIMA, suavização exponencial e método Theta. Em teoria, você pode fazê-lo da mesma maneira que em uma única família de modelos, ou seja, usando critérios de informação. No entanto, na prática, você precisa calcular o AIC ou o BIC exatamente da mesma maneira para todos os modelos considerados, e esse é um desafio significativo. Talvez seja melhor usar a validação cruzada de séries temporais ou validação fora da amostra em vez de critérios de informação, mas isso será muito mais intensivo em termos computacionais (e tedioso para codificar).

O pacote Profeta do Facebook também automatiza a geração de previsões com base em modelos aditivos gerais. Veja aqui para detalhes . No entanto, o Profeta se encaixa apenas em um único modelo, embora seja um modelo muito flexível com muitos parâmetros. A suposição implícita do Profeta é que um GAM é "o único modelo para governar todos eles", o que pode não ser teoricamente justificado, mas é muito pragmático e útil para cenários do mundo real.

Outra ressalva que se aplica a todos os métodos mencionados acima: Presumivelmente, você deseja fazer previsões automatizadas de séries temporais porque deseja prever várias séries temporais, muitas para analisar manualmente. Caso contrário, você poderia apenas fazer suas próprias experiências e encontrar o melhor modelo por conta própria. Você precisa ter em mente que uma abordagem de previsão automatizada nunca encontrará o melhor modelo para todas as séries temporais - ela fornecerá um modelo razoavelmente bom em média ao longo de todas as séries temporais, mas ainda é possível que alguns dessas séries temporais terão modelos melhores que os selecionados pelo método automatizado. Veja este postpara um exemplo disso. Simplificando, se você optar pela previsão automatizada - terá que tolerar previsões "boas o suficiente" em vez das melhores previsões possíveis para cada série temporal.


Obrigado por uma resposta tão perspicaz. Honestamente, minha idéia inicial ao fazer essa pergunta era poder escolher entre diferentes famílias de modelos.
StatsNewbie123

E se o algoritmo fosse aplicado a um domínio mais específico, como previsão de negócios (para planejamento de produção e gerenciamento de estoque, por exemplo)? Você acha que poderia alcançar melhores resultados?
StatsNewbie123

2
@JoanaClaudino sim, isso seria mais fácil - essa é a essência do que os pacotes de previsão de demanda comercial fazem. Mas é mais fácil porque, normalmente, quando você se limita a um domínio comercial específico, pode se limitar a uma família específica de modelos (as séries temporais provenientes do mesmo domínio comercial terão características semelhantes em termos de sazonalidade, densidade de dados, etc ... por isso, é seguro assumir que uma família será adequada para todos eles)
Skander H. - Restabelece Monica

Ok, entendi agora. Obrigado mais uma vez por uma grande ajuda.
StatsNewbie123

11

Minha abordagem sugerida abrange modelos muito mais gerais que o ARIMA, pois incluem o potencial para bonecos sazonais que podem mudar ao longo do tempo, vários níveis, várias tendências, parâmetros que podem mudar ao longo do tempo e até variações de erro que podem mudar ao longo do tempo. Essa família é mais precisamente chamada de modelos ARMAX, mas, para total transparência, exclui uma variante (rara) que possui estrutura multiplicativa.

Você pediu dicas e acredito que isso pode ser bom para você começar.

Sugiro que você escreva um código para seguir / emular este fluxograma / fluxo de trabalho. O "melhor modelo" pode ser encontrado avaliando o critério que você especificar ... pode ser o MSE / AIC dos dados ajustados ou pode ser o MAPE / SMAPE dos dados retidos ou qualquer critério de sua escolha.

Esteja ciente de que o detalhamento de cada uma dessas etapas pode ser bastante simples se você não tiver conhecimento de alguns dos requisitos / objetivos / restrições específicos da análise de séries temporais, mas pode ser (deve ser!) Mais complexo se você tiver um entendimento / aprendizagem / apreciação das complexidades / oportunidades presentes na análise completa das séries temporais.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Foi-me pedido que forneça mais orientações sobre como se deve automatizar a modelagem de séries temporais (ou modelagem em geral) /stats//search?q=peeling+an+onion contém algumas das minhas orientações sobre "descascar cebolas" e tarefas relacionadas.

Na verdade, a AUTOBOX detalha e mostra as etapas intermediárias, pois forma um modelo útil e pode ser um professor útil nesse sentido. Toda a idéia científica é "adicionar o que parece ser necessário" e "excluir o que parece ser menos que útil". Esse é o processo iterativo sugerido por Box e Bacon em tempos anteriores.

Os modelos precisam ser suficientemente complexos (sofisticados o suficiente), mas não muito complexos (sofisticados). Assumir que métodos simples trabalhem com problemas complexos não é consistente com o método científico, seguindo Roger Bacon e muitos seguidores de Bacon. Como Roger Bacon disse uma vez e eu parafraseei com frequência: Fazer ciência é procurar padrões repetidos. Detectar anomalias é identificar valores que não seguem padrões repetidos. Pois quem conhece os caminhos da natureza notará mais facilmente seus desvios e, por outro lado, quem conhece seus desvios descreverá com mais precisão seus caminhos. Aprende-se as regras observando quando as regras atuais falham. Na pauta de Bacon, identificando quando o "melhor modelo / teoria" atualmente identificado não é adequado, pode-se iterar para "uma melhor representação".

Nas minhas palavras "Tukey propôs a Análise Exploratória de Dados (EDA), que sugeriu esquemas de refinamento de modelos com base na evidente deficiência de modelo sugerida pelos dados". Este é o coração da AUTOBOX e da ciência. A EDA é para ver o que os dados podem nos dizer além da tarefa formal de modelagem ou teste de hipóteses.

O teste decisivo de um programa de modelagem automática é bastante simples. Separa o sinal e o ruído sem ajustar demais? Evidências empíricas sugerem que isso pode e já foi feito. A precisão das previsões geralmente é enganosa, porque o futuro não é responsável pelo passado e depende de qual origem você seleciona os resultados e pode variar.


Muito obrigado. Sua resposta é extremamente útil!
StatsNewbie123

Obrigado, IrishStat. Isso é perspicaz. Somos sempre justificados para manter um parâmetro em vez de "excluir parâmetro", apesar de o parâmetro não ser estatisticamente significativo?
ColorStatistics

1
Sim. se lhe der uma resposta mais "agradável". Um coeficiente de inclinação que não seja diferente de 0,0 pode fornecer uma previsão mais realista (se não for estatisticamente significativa). Caso contrário, transportar coeficientes em excesso é ilógico e causa incerteza maior na previsão de variância. Alguns autores incapazes de lidar com testes de necessidade e suficiência cegamente / ingenuamente assumem que a identificação do modelo é um processo de uma etapa, enquanto Box e Jenkins (e todo mundo!) Estão preocupados em tornar o modelo tão complexo quanto necessário, mas não excessivamente complexo. Albert E., JW Tukey et al para mais sobre isso.
IrishStat

3
"Essa abordagem de previsão automatizada sugerida encontrará o melhor modelo para cada série temporal, adaptando a forma do modelo, ou seja, personalizando-o como um traje personalizado". Essa é uma afirmação bastante forte - se precisa, significa que essa abordagem venceria as competições M3 e M4. Tem?
Skander H. - Restabelece Monica

1
@ joana-claudino Estou particularmente interessado em seu projeto ISEG, pois também estou interessado em desenvolver uma versão em Python dos meus procedimentos sugeridos. Claro que isso seria fora do SE.
IrishStat
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.