EST562 - Análise de Séries Temporais

Especialização em Estatística Computacional Aplicada - Prof. Thiago Rezende

Autor
Afiliação

Igor Souza

Data de Publicação

27 de abril de 2024

Introdução

O relatório apresentado a seguir foi produzido para fins acadêmicos. Trata-se do trabalho prático final da disciplina Análise de Séries Temporais. O objetivo é aplicar os conceitos vistos em sala de aula. Toda a análise foi realizada usando a linguagem R (v. 4.3.1)1.

Dados

Para o trabalho, foi escolhida a série temporal mensal de vendas de veículos pelas concessionárias - automóveis disponibilizada pelo portal de dados abertos do Banco Central do Brasil e cuja a fonte é a Federação Nacional da Distribuição de Veículos Automotores. Atualmente, o período da série é de 01/01/1990 a 01/02/2024.


Conceito: unidades comercializadas de automóveis, geradas pelos emplacamentos. Todo emplacamento de veículo origina emissão de uma nota fiscal de venda. Os emplacamentos englobam as vendas diretas e vendas a varejo. O que diferencia uma venda direta de uma venda a varejo é a identificação do emissor dessa Nota Fiscal. Se o CNPJ do emissor for de um fabricante de veículos, esta será uma venda direta. Já as demais, serão consideradas vendas a varejo2.


Tabela 1 - Amostra da base de dados utilizada
data total
2003-09-01 98.472
2002-07-01 96.199
2016-06-01 139.567
2023-08-01 153.478
2003-06-01 76.772
2007-02-01 118.806
1994-10-01 102.604
2005-07-01 110.037
1994-02-01 73.365
2020-09-01 161.071
2017-05-01 163.284
1991-03-01 50.278
2017-03-01 158.055
2001-08-01 107.488
2016-11-01 148.675
1994-12-01 115.876
1999-02-01 44.579
2010-06-01 192.457
1998-06-01 99.928
2009-05-01 195.720


Sobre a série temporal, é interessante observar as mudanças abruptas de nível em dezembro de 1997 e em fevereiro de 2015. Essa constatação influenciou o ajuste de um dos modelos a seguir. Entre 2020 e 2021 também houve uma nova mudança, provavelmente devido à pandemia de COVID-19. No entanto, nesse caso, a mudança de nível foi breve.


Tabela 2 - Sumário do total de veículos vendidos
Mínimo 1º Quartil Mediana Média 3º Quartil Máximo
total 23.705 96.042 127.773 137.072 176.562 325.722



Os dados têm um coeficente de variação de 0,422. A assimetria é de 0,431 enquanto que a curtose é de 2,66, indicando que a distribuição a) tende aos maiores valores e b) é platicúrtica (< 3), o que significa uma menor propenção a outliers.

O teste de Shapiro-Wilk evidencia ao nível de 95% de confiança que os dados não seguem uma distribuição Normal. Dada essa característica, foi aplicado uma transformação de Box-Cox (\(\lambda\): 0,697). A transformação usando raíz quadrada não resolveu o problema inteiramente mas foi útil para estabilizar os dados.

Finalmente, o teste de Ljung-Box evidencia com 95% de confiança que há correlação nos resíduos até, no mínimo, o lag 120.


    Shapiro-Wilk normality test

data:  dados$total
W = 0.97826, p-value = 7.973e-06

    Shapiro-Wilk normality test

data:  dados$total_sqrt
W = 0.99258, p-value = 0.03971

    Box-Ljung test

data:  dados_treino_ts
X-squared = 9433.2, df = 120, p-value < 2.2e-16

Os métodos a seguir serão aplicados nos dados transformados usando raíz quadrada. Para os ajustes dos modelos, serão utilizados os dados até 01/12/2022. As demais observações servirão de base de comparação para as \(h = 14\) predições realizadas pelos diferentes modelos.

Modelos

Regressão linear

Modelo 1

Tempo (\(t\)) e \(t^2\), em uma tentativa de captura de uma tendência quadrática.


Call:
lm(formula = total ~ tempo + tempo_quad, data = dados_treino_lm_01)

Residuals:
     Min       1Q   Median       3Q      Max 
-204.253  -40.348    0.106   38.708  153.852 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.958e+02  7.671e+00   25.52   <2e-16 ***
tempo        1.533e+00  8.923e-02   17.18   <2e-16 ***
tempo_quad  -2.648e-03  2.177e-04  -12.17   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 50.63 on 393 degrees of freedom
Multiple R-squared:  0.6108,    Adjusted R-squared:  0.6088 
F-statistic: 308.3 on 2 and 393 DF,  p-value: < 2.2e-16

Análise dos resíduos

A análise dos resíduos deixa claro que há um componente de sazonalidade que não está sendo capturado pelo modelo.

Teste de Durbin-Watson
 lag Autocorrelation D-W Statistic p-value
   1       0.8045471     0.3896325       0
 Alternative hypothesis: rho != 0

Modelo 2

Adicionando o componente de sazonalidade.


Call:
lm(formula = total ~ tempo + tempo_quad + sazonalidade, data = dados_treino_lm_02)

Residuals:
     Min       1Q   Median       3Q      Max 
-192.038  -39.015    2.097   35.717  138.125 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)     1.775e+02  1.108e+01  16.016  < 2e-16 ***
tempo           1.530e+00  8.708e-02  17.569  < 2e-16 ***
tempo_quad     -2.648e-03  2.124e-04 -12.467  < 2e-16 ***
sazonalidade2  -9.674e+00  1.216e+01  -0.795 0.426866    
sazonalidade3   1.738e+01  1.216e+01   1.429 0.153816    
sazonalidade4   7.249e+00  1.216e+01   0.596 0.551532    
sazonalidade5   1.583e+01  1.216e+01   1.301 0.193888    
sazonalidade6   1.621e+01  1.216e+01   1.333 0.183367    
sazonalidade7   2.682e+01  1.216e+01   2.205 0.028025 *  
sazonalidade8   3.490e+01  1.216e+01   2.870 0.004337 ** 
sazonalidade9   2.395e+01  1.216e+01   1.969 0.049700 *  
sazonalidade10  2.870e+01  1.216e+01   2.360 0.018791 *  
sazonalidade11  2.555e+01  1.216e+01   2.101 0.036318 *  
sazonalidade12  4.039e+01  1.216e+01   3.321 0.000984 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 49.4 on 382 degrees of freedom
Multiple R-squared:  0.6398,    Adjusted R-squared:  0.6275 
F-statistic: 52.18 on 13 and 382 DF,  p-value: < 2.2e-16

Análise dos resíduos

A incorporação de um componente de sazonalidade não foi o suficiente para a melhoria da qualidade do modelo. Os resíduos permanecem exibindo um padrão sazonal e o teste de Durbin-Watson indica que há correlação de ordem 1 nos resíduos.

Teste de Durbin-Watson
 lag Autocorrelation D-W Statistic p-value
   1       0.8459556     0.3054439       0
 Alternative hypothesis: rho != 0

Modelo 3

Inclusão de duas intervenções do tipo passo (contínua) e de um termo autoregressivo (resíduos defasados).


Call:
lm(formula = total ~ tempo + tempo_quad + sazonalidade + passo_t1 + 
    passo_t2 + residuo_def, data = dados_treino_lm_03)

Residuals:
     Min       1Q   Median       3Q      Max 
-161.812  -12.315    1.063   13.641   86.122 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)     1.727e+02  6.140e+00  28.129  < 2e-16 ***
tempo           1.763e+00  9.324e-02  18.903  < 2e-16 ***
tempo_quad     -2.791e-03  2.097e-04 -13.313  < 2e-16 ***
sazonalidade2  -9.779e+00  6.296e+00  -1.553 0.121219    
sazonalidade3   1.794e+01  6.299e+00   2.848 0.004639 ** 
sazonalidade4   7.631e+00  6.299e+00   1.212 0.226412    
sazonalidade5   1.604e+01  6.298e+00   2.546 0.011294 *  
sazonalidade6   1.624e+01  6.298e+00   2.579 0.010294 *  
sazonalidade7   2.668e+01  6.299e+00   4.236 2.87e-05 ***
sazonalidade8   3.458e+01  6.299e+00   5.490 7.36e-08 ***
sazonalidade9   2.345e+01  6.300e+00   3.723 0.000227 ***
sazonalidade10  2.803e+01  6.300e+00   4.449 1.13e-05 ***
sazonalidade11  2.471e+01  6.301e+00   3.921 0.000105 ***
sazonalidade12  3.937e+01  6.303e+00   6.247 1.12e-09 ***
passo_t1       -3.578e+01  8.270e+00  -4.326 1.94e-05 ***
passo_t2       -2.778e+01  7.564e+00  -3.673 0.000275 ***
residuo_def     7.171e-01  3.653e-02  19.630  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 25.58 on 379 degrees of freedom
Multiple R-squared:  0.9042,    Adjusted R-squared:  0.9002 
F-statistic: 223.6 on 16 and 379 DF,  p-value: < 2.2e-16

Análise dos resíduos

No modelo 3, a inclusão das intervenções e dos resíduos defasados eliminou por completo a correlação de ordem 1 nos resíduos.

Teste de Durbin-Watson
 lag Autocorrelation D-W Statistic p-value
   1     -0.08026602      2.148552   0.204
 Alternative hypothesis: rho != 0

Comparação dos modelos de regressão linear

# Comparison of Model Performance Indices

Name                | Model |  AIC (weights) | AICc (weights) |  BIC (weights) |    R2 | R2 (adj.) |   RMSE |  Sigma
--------------------------------------------------------------------------------------------------------------------
modelo_reglinear_01 |    lm | 4237.0 (<.001) | 4237.1 (<.001) | 4252.9 (<.001) | 0.611 |     0.609 | 50.436 | 50.628
modelo_reglinear_02 |    lm | 4228.3 (<.001) | 4229.6 (<.001) | 4288.1 (<.001) | 0.640 |     0.627 | 48.521 | 49.402
modelo_reglinear_03 |    lm | 3709.8 (>.999) | 3711.6 (>.999) | 3781.5 (>.999) | 0.904 |     0.900 | 25.020 | 25.575


Analisando a comparação acima, confirma-se que o modelo 3 é o melhor dentre os modelos ajustados anteriormente, uma vez que ele consegue explicar 90% da variação nos dados e possui também o menor AIC (medida de comparação de modelos - quanto menor melhor).

SARIMA

Como ficou explícito durante a análise dos resíduos dos modelos anteriores a presença de sazonalidade na série temporal, o modelo SARIMA foi o segundo escolhido para a análise dos dados. Mas antes da aplicação do modelo, é necessário primeiro a realização de um teste de raíz unitária para a verificação de estacionaridade (ou falta de) da série.


    Phillips-Perron Unit Root Test

data:  dados_treino_ts
Dickey-Fuller = -4.7628, Truncation lag parameter = 5, p-value = 0.01

    Augmented Dickey-Fuller Test

data:  dados_treino_ts
Dickey-Fuller = -2.126, Lag order = 7, p-value = 0.524
alternative hypothesis: stationary

Curiosamente, os testes mostram cenários opostos. O teste de Phillips-Perron diz que a série é estacionária. Já o teste de Dickey-Fuller mostra que a série não possui raiz unitária, o que indica uma série não estacionária e, portanto, a necessidade da aplicação de uma diferença. Analisando os gráficos da série temporal durante a fase de exploração dos dados, é nítido que a série não mantém seu nível durante o período de análise, o que configura uma série não estacionária.

Identificação

Para o processo de identificação do modelo, foi utilizado o método de Box-Jenkins. Utilizar o método mencionado significa fazer uma análise das autocorrelações (FAC) e das autocorrelações parciais (FACP) para a identificação dos parâmetros do modelo.

Mesmo aplicando uma diferenciação nos dados, a identificação de um padrão na FAC e na FACP se tornou uma tarefa complexa. Uma saída para o problema foi o uso de um método empírico de definição dos parâmetros. A função forecast::auto.arima(y, seasonal = T) sugeriu o modelo ARIMA(1,1,2)(1,0,0)[12]. Como é evidente a não estacionaridade da série, o parâmetro de diferenciação sazonal \(D\) foi alterado, de 0 para 1.

Estimação

Verificação

$fit

Call:
arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S), 
    include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc, 
        REPORT = 1, reltol = tol))

Coefficients:
          ar1     ma1      ma2     sar1
      -0.5743  0.2608  -0.5165  -0.3979
s.e.   0.1243  0.1199   0.0527   0.0474

sigma^2 estimated as 867.7:  log likelihood = -1840.51,  aic = 3691.02

$degrees_of_freedom
[1] 379

$ttable
     Estimate     SE t.value p.value
ar1   -0.5743 0.1243 -4.6206  0.0000
ma1    0.2608 0.1199  2.1761  0.0302
ma2   -0.5165 0.0527 -9.8087  0.0000
sar1  -0.3979 0.0474 -8.3853  0.0000

$ICs
     AIC     AICc      BIC 
9.637133 9.637410 9.688674 


    Shapiro-Wilk normality test

data:  modelo_sarima$fit$residuals
W = 0.95954, p-value = 5.602e-09

Uma análise dos resultados confirma que ainda há correlação e não Normalidade dos resíduos. Em simulações realizadas, uma diferenciação \(D = 2\) não resolveu o problema. Essa quebra dos pressupostos impactará significamente na confiabilidade das predições.

Alisamento exponencial

Antes do ajuste do terceiro e último modelo, é interessante apresentar a decomposição da série temporal em estudo.

Após a análise do gráfico acima, o modelo de Holt-Winters foi ajustado considerando um nível, uma tendência e uma sazonalidade aditiva.

Sumário ajuste Holt-Winters
             Length Class  Mode     
fitted       1536   mts    numeric  
x             396   ts     numeric  
alpha           1   -none- numeric  
beta            1   -none- numeric  
gamma           1   -none- numeric  
coefficients   14   -none- numeric  
seasonal        1   -none- character
SSE             1   -none- numeric  
call            3   -none- call     

Análise dos resíduos

Comparação

A métrica escolhida para ser um critério de qualidade entre os modelos foi o Erro Quadrático Médio (EQM).

  • Regressão linear: 626,014;

  • SARIMA: 839,232;

  • Alisamento exponencial: 763,407.

O menor EQM mostra que a regressão linear possui o menor erro de predição.

Predição

Para finalizar, os modelos ajustados foram utilizados para a realização de \(h = 14\) predições, que foram comparadas aos dados reais observados.

O gráfico com as predições deixa claro que, ao mesmo tempo que a regressão linear possui as melhores métricas de ajuste, o alisamento exponencial gerou as melhores predições. O pior modelo nesse cenário é o SARIMA, mas com as importantes ressalvas que o desempenho ruim é devido ao fato da não Normalidade dos dados (astsa::sarima() não oferece a opção de ajuste pelo método de mínimos quadrados - cuja suposição de Normalidade é opcional) e da dificuldade em encontrar os melhores parâmetros através do método de Box-Jenkins. Sugestões de melhorias nos comentários são sempre bem-vindas.

Notas de rodapé

  1. R Core Team (2023). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria. https://www.R-project.org/↩︎

  2. Banco Central do Brasil. Portal de Dados Abertos. Vendas de veículos pelas concessionárias - Automóveis. Disponível em: https://dadosabertos.bcb.gov.br/dataset/7384-vendas-de-veiculos-pelas-concessionarias---automoveis. Acesso em: 26/04/2023.↩︎