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?
time-series
forecasting
python
Estatísticas
fonte
fonte
Respostas:
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.
fonte
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.
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.
fonte