Prevendo o faturamento da empresa com modelos SARIMA

Empresas grandes ou pequenas sempre estão interessadas em gerar alguma previsibilidade sobre seu faturamento. O problema básico de um empreendimento desses é a ausência de variáveis preditoras. Apenas em poucos casos, teremos variáveis em uma frequência adequada que conseguem explicar o faturamento de uma empresa. Pode ser interessante, portanto, utilizar modelos univariados, onde a nossa variável de interesse pode ser explicada pelas suas próprias defasagens. Para ilustrar, considere que um processo autorregressivo de ordem p pode ser representado como

(1)   \begin{equation*} y_{t} = \beta_{0} + \beta_{1}y_{t-1} + \beta_{2}y_{t-2} + ... + \beta_{p}y_{t-p} + \varepsilon_{t} \end{equation*}

Ou, alternativamente, utilizando o operador defasagem L^{k}y_{t} = y_{t-k} como

(2)   \begin{equation*} (1-\beta_{1}L - \beta_{2}L^2 - ... \beta_{p} L^p)y_{t} = \beta_{0} + \varepsilon_{t} \end{equation*}

Ou ainda em  notação polinomial

(3)   \begin{equation*} \beta_{p}(L)y_{t} = c + \varepsilon_{t}  \end{equation*}

Onde c=\beta_{0}. Considerando, assim, um processo AR(1), como

(4)   \begin{equation*} y_{t} = c + \beta_{1}y_{t-1} + \varepsilon_{t} \end{equation*}

teremos um ruído branco quando \beta_{1} = 0, um passeio aleatório quando \beta_{1} = 1 e c=0 ou, quando c \neq 0, um \emph{passeio aleatório com drift}.  Analogamente, podemos representar um processo de média móvel MA(q) como

(5)   \begin{equation*} y_{t} = \mu + \varepsilon_{t} + \theta_{1}\varepsilon_{t-1} + ... + \theta_{q}\varepsilon_{t-q}  \end{equation*}

Ou, alternativamente, utilizando o operador defasagem, como

(6)   \begin{equation*} y_{t} = \mu + (1 + \theta_{1}L + \theta_{2}L^2 + ... \theta_{q}L^q)\varepsilon_{t}  \end{equation*}

Ou ainda em notação polinomial

(7)   \begin{equation*} y_{t} = \mu + \theta_{q}(L)\varepsilon_{t}  \end{equation*}

Utilizando o mesmo código acima, a propósito, podemos gerar alguns processos MA(1), modificando apenas o valor de \theta_{1}. Ademais, como vimos, podemos combinar as equações 1 e 5, construindo assim um processo ARMA(p,q), que pode ser representado como

(8)   \begin{equation*} y_{t} = c + \beta_{1}y_{t-1} + \beta_{2}y_{t-2} + ... + \beta_{p}y_{t-p} + \varepsilon_{t} + \theta_{1}\varepsilon_{t-1} + ... + \theta_{q}\varepsilon_{t-q}  \end{equation*}

Onde, novamente, c=\beta_{0}. Alternativamente, utilizando o operador defasagem

(9)   \begin{equation*} (1-\beta_{1}L - \beta_{2}L^2 - ... \beta_{p}L^p)y_{t} = c + (1 + \theta_{1}L + \theta_ {2}L^2 + ... \theta_{q}L^q)\varepsilon_{t}  \end{equation*}

Ou ainda, em notação polinomial

(10)   \begin{equation*} \beta_{p}(L)y_{t} = c + \theta_{q}(L)\varepsilon_{t}  \end{equation*}

Por suposto, podemos, enfim, generalizar nossa análise para um modelo ARIMA(p,d,q), onde d será a ordem de integração do processo, como vimos na seção anterior. Ele pode ser representado em termos de notação polinomial como

(11)   \begin{equation*} \beta_{p}(L)(1 - L)^{d} y_{t} = c + \theta_{q}(L)\varepsilon_{t}  \end{equation*}

A equação 11 faz referência aos modelos ARIMA não sazonais. Os modelos ARIMA também são capazes de modelar uma ampla gama de dados sazonais. Um modelo ARIMA sazonal é formado pela inclusão de termos sazonais adicionais, na forma ARIMA (p,d,q) (P,D,Q)_m, onde o segundo componente faz referência à parte sazonal e m significa o número de períodos por estação. Em termos formais,

(12)   \begin{equation*} \phi_{P}(L^s) \beta_{p}(L) (1 - L^s)^D (1 - L)^{d} y_{t} = c + \theta_{q}(L) \Theta_{Q} (L^s) \varepsilon_{t}  \end{equation*}

Uma vez que tenhamos chegado a modelos representados pela equação 11 e pela equação 12, podemos agora assim apresentar a metodologia proposta por Box et al. (2016). Ela consiste, basicamente, nos seguintes passos:

  • Identificação: uso dos dados e de qualquer outra informação sobre como as séries foram geradas para construir um modelo univariado;
  • Estimação: uso dos dados para construir inferências sobre os parâmetros condicionadas à adequação do modelo escolhido;
  • Diagnóstico: Avaliar o quão bem o modelo estimado se adequa aos dados efetivamente observados;
  • Previsão: Uma vez escolhido o melhor modelo, passa-se à etapa de previsão.

Para ilustrar, vamos considerar o faturamento de uma empresa específica. Nosso objetivo é construir um modelo SARIMA e a partir dele gerar previsões para os próximos 12 meses. Para começar, nós carregamos os seguintes pacotes:


library(tidyverse)
library(ggplot2)
library(forecast)
library(scales)
library(xtable)

Uma vez carregados os pacotes, podemos importar os dados de faturamento com o código a seguir:


data = read_csv2('data.csv',
col_types = list(col_date(format='%d/%m/%Y'),
col_integer()))

Uma vez que tenhamos importados os dados, podemos utilizar o pacote ggplot2 para visualizar a nossa variável de interesse.


ggplot(data, aes(date, faturamento))+
geom_line(size=.8)+
scale_x_date(breaks='1 year',
date_labels = '%Y')+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='Mil',
title='Faturamento mensal')

Ao observar o gráfico, vemos que existe uma tendência positiva associada ao faturamento da empresa, configurando a nossa série como não estacionária. Em outras palavras, de modo a modelar a nossa série, um primeiro passo é torná-la estacionária. A seguir, um plotamos um boxplot da série.

A mediana da série é de R$ 11.766 mil, o 1º quartil termina em R$ 8.729 mil e o terceiro quartil em R$ 16.807 mil. O IQR da série é, portanto, de R$ 8.077,25 mil. A seguir, verificamos se a série em questão apresenta alguma sazonalidade.

A seguir, plotamos a série sem tendência.

Todos esses aspectos devem ser levados em consideração no momento de construirmos nosso modelo univariado. Uma vez que tenhamos investigado a série, podemos construir nosso modelo SARIMA, plotando o ajuste do modelo como abaixo.

A seguir, plotamos o gráfico com a previsão 12 passos à frente.

A acurácia associada ao modelo é bastante razoável, tratando-se de um modelo univariado. Em outras palavras, a ausência de variáveis preditoras não nos impede de criar um modelo preditivo com acurácia razoável para prever o faturamento de uma determinada empresa. De fato, modelos univariados são bastante utilizados no dia a dia para gerar previsões.

 

Box, G. E. P.; Jenkins, G. M.; Reinsel, G. C., and Ljung, G. M. Time Series Analysis. Editora Wiley,
2016.

________________________

(*) A metodologia completa está disponível no nosso Curso de Séries Temporais usando o R.

(**) O código completo do exercício estará disponível essa semana no Clube do Código.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Criando um Dashboard de análise de Ações no Python

Um Dashboard é um painel de controle que consolida uma variedade de informações sobre um determinado objeto de estudo em um ou mais painéis. Ele simplifica significativamente o processo de análise de dados, oferecendo uma visão global e fácil de entender. Uma maneira simples de construir um Dashboard para acompanhar uma ação específica é utilizando duas ferramentas: Quarto e Python. Neste post, mostramos o resultado da criação de um Dashboard de Ação.

Analisando séries temporais no Python e esquecendo de vez o Excel

Séries temporais representam uma disciplina extremamente importante em diversas áreas, principalmente na economia e na ciência de dados. Mas, afinal, como lidar com esses dados que se apresentam ao longo do tempo? Neste exercício, demonstraremos como compreender uma série temporal e como o Python se destaca como uma das melhores ferramentas para analisar esse tipo de dado.

Cálculo do Retorno Econômico de uma Política Pública

Como podemos traduzir os efeitos de uma política pública para valores monetários? Essa é uma tarefa árdua que requer algumas premissas, entretanto, com métodos bem definidos, é possível obter estimativas precisas dos ganhos e os gastos de uma política pública.

Neste exercício, demonstramos tal método usando a política hipotética "Mãe Paranense”, um conjunto de ações que visam reduzir a mortalidade materna e infantil no estado. Usamos a linguagem R como ferramenta para analisar os dados.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.