Dicas para criar um modelo de previsão de séries temporais

Agora que você sabe o que é uma série temporal, está na hora de aprender as técnicas para criar seu próprio modelo preditivo!

Paulo Vasconcellos
TechBlogHotmart
6 min readJul 25, 2018

--

Escolhendo o modelo: ARIMA

Agora que nossa série está devidamente configurada, podemos escolher nosso modelo de previsão. Um dos mais famosos modelos utilizados é o ARIMA, cujo a sigla significa AutoRegressive Integrated Moving Average. Basicamente, o ARIMA utiliza dados passados para prever o futuro, usando dois principais recursos: a autocorrelação e médias móveis. Além disso, ARIMA possui algumas vertentes, como modelos que permitem identificar e considerar a sazonalidade (SARIMA), modelos AR, MA, ARMA e por aí vai.

Parâmetros p, d e q

Todo modelo preditivo possui suas próprias características e, consequentemente, seus próprios parâmetros. Árvores de Decisão possuem parâmetros diferentes de uma Regressão Linear, por exemplo, como tamanho das folhas e nós. Assim é com o ARIMA também, ele possui seus próprios parâmetros (que no campo de séries temporais são chamados de “termos”), que serão utilizados para afiar o seu modelo. Nesse post, irei dar ênfase em três principais:, p, d e q.

Cada letra de p, d e q representam uma parte da sigla ARIMA. Como pode ver abaixo, o “p” está para o “AR” do nome do modelo, enquanto “d” está para “I” e, por fim, “q” está para “MA”

Quando você está construindo o modelo, você irá passar esses parâmetros na forma de uma tupla, sendo que p, d e q são números inteiros. Alguns exemplos de parâmetros que você passa na hora de criar seu modelo são: (1, 1, 1), (2,0,1), (0,0,1), e etc.

Uma curiosidade rápida

Lembra que falei que cada letra representa uma parte do ARIMA? Se você passa esses três parâmetros sem incluir um deles (ao colocar o número 0), você tem um tipo de modelo diferente. Por exemplo, se você passa os parâmetros (0, 0, 1), você não terá mais um modelo ARIMA, e sim um modelo MA; se você utiliza (1,0,0), você terá um modelo AR; se usar (1,0,1), você criou um modelo ARMA. Bem legal, né?

Escolhendo o número de termos

Beleza, você já sabe o que é uma série temporal, modelo ARIMA e parâmetros p, d e q, mas, como você sabe que número de termos (parâmetros) utilizar? E se eu colocar (100, 0, 100), meu modelo irá performar melhor? Calma, vamos um passo de cada vez.

Funções ACF e PACF

Para saber quantos termos utilizar no treino de seu modelo, você irá fazer uso de duas funções muito úteis: a Função de Autocorrelação (ACF) e a Função de Autocorrelação Parcial (PACF). Ao utilizá-las em seu código, você irá visualizar dois gráficos semelhantes ao abaixo:

Esse gráfico, chamado de gráfico de pirulito (do inglês lollipop chart) nos mostra a quantidade de termos que precisaremos informar. Existem diferentes formas de interpretá-lo, onde uma das mais utilizadas é a seguinte:

Quantidade de termos em p

Ambos os gráficos terão o primeiro pirulito com valor 1. Para saber o quanto de termos AR irá precisar, olhe para o gráfico de ACF (parte superior da imagem acima) e veja se o segundo lollipop caiu exponencialmente. Se caiu, olhe para o gŕafico de PACF (parte inferior da imagem acima) e conte quantos pirulitos passam o valor crítico (faixa azulada horizontal) antes de retornarem para dentro da faixa. No caso da nossa imagem acima, nosso p teria oito termos.

Quantidade de termos em q

Um processo muito semelhante é feito para saber a quantidade de termos q. Olhe para o gráfico de PACF (parte superior da imagem acima) e veja se o segundo lollipop caiu exponencialmente. Se caiu, olhe para o gŕafico de ACF (parte inferior da imagem acima) e conte quantos pirulitos passam o valor crítico (faixa azulada horizontal) antes de retornarem para dentro da faixa. No caso da nossa imagem acima, nosso q teria cinco termos.

Treinando o modelo

Após descobrir a quantidade de termos que precisará utilizar no seu modelo, é hora de treiná-lo treinar seu modelo. Existem diversas ferramentas e linguagens que te permitem você treinar um modelo ARIMA, como as linguagens R e Python. A propósito, o código abaixo mostra como você pode fazer para treinar seu modelo de séries temporais usando ARIMA:

Perceba que dentro da função ARIMA existe um parâmetro chamado “order”, que contém justamente a quantidade de termos que identificamos para os parâmetro p, d, q. A última linha, que contém a função “fit”, será a responsável por treinar o modelo utilizando tais parâmetros.

Após ter seu modelo treinado, você poderá começar a realizar suas próprias previsões. Em Python, por exemplo, esse processo é feito utilizando a função “forecast(número_de_periodos)”, que irá te retornar a previsão para o período definido, que pode ser dias, meses, anos, etc.

Lidando com a sazonalidade

A gente sabe que em um mundo ideal, haverá dias em que seu valor observado será diferente do normal. Ainda utilizando nosso exemplo de vendedor de picolé na praia, você deve concordar comigo que haverá dias em que você venderá mais (verão, dias com altas temperaturas, etc.), mas também terá dias em que as vendas irão cair, como no inverno e dias chuvosos. Esse efeito é chamado sazonalidade.

Cada negócio tem sua própria forma de sazonalidade. Ela pode ser diária, como no caso do vendedor de picolé, mas ela pode ser anual (imagine um negócio que tem picos de vendas durante eleições e Copa do Mundo), ou pode ser até por hora. Quando falamos em previsão de séries temporais, há uma forma de lidarmos com isso: usando o modelo SARIMA.

A sigla SARIMA tem o mesmo significado que ARIMA, onde o “S” representa a sazonalidade. Seu processo de construção é exatamente o mesmo que mostramos anteriormente, onde você terá que verificar se sua série é estacionária, usar as funções ACF e PACF para ver a quantidade de termos e etc. Sua principal diferença está no momento de treinar o modelo, onde você usará uma nova função e irá adicionar mais um argumento. Em Python, é feito dessa forma:

Perceba que agora utilizamos a função SARIMAX e passamos o parâmetro “seasonal_order”, onde definimos os parâmetros P, D e Q para a sazonalidade. O número “7” que você vê no final do parâmetro é o número de periodicidade em uma temporada. Geralmente é “7” para dados diárias, “12” para dados mensais, e por aí vai.

Dicas para criar seu modelo

Agora que você sabe os princípios básicos de time series forecasting, você deve estar louco para começar a fazer seus próprios modelos. Nessas linhas finais, quero trazer algumas dicas que me ajudaram muito no meu processo de aprendizagem:

Site da Universidade Duke

Essa seção do site da Universidade Duke contém os mais completos conteúdos sobre previsão de séries temporais que já vi. Use-o quando quiser entender mais a fundo as regras que expliquei nesse artigo.

Biblioteca Prophet do Facebook

O Prophet é uma biblioteca do Facebook criada para que você possa criar seus modelos de séries temporais. A simplicidade e documentação bem clara são os melhores pontos positivos do Prophet. Embora tenha algumas limitações, certamente deve ser sua primeira opção quando você criar sua primeira time series forecasting. Ela está disponível para R e Python.

--

--

Paulo Vasconcellos
TechBlogHotmart

Principal Data Scientist @ Hotmart | Msc in Computer Science | Co-founder @ Data Hackers