Análise da série temporal do ICMS: um modelo em R

 

 

 

A existência de um ambiente de desenvolvimento integrado para o software livre R representa um avanço significativo para o trabalho científico, permitindo aumentar a produtividade dos pesquisadores ao reduzir as tarefas de coleta, tratamento, análise e exposição de dados. O RStudio é a interface desse software, facilitando sua utilização. Ambos são gratuitos e open source.

Em diversos sites nacionais e internacionais, podem ser encontradas rotinas para a construção de modelos, bem como explicações sobre testes de verificação relativos à estacionariedade, normalidade, diagnóstico e previsão de modelos ARIMA (p, d, q) para séries temporais. O termo “p” refere-se à ordem autoregressiva do modelo, “d” é relativo à diferenciação, e “q” refere-se às médias móveis.

Neste exercício, usaremos como exemplo a arrecadação do Imposto sobre Circulação de Mercadorias e Serviços (ICMS) no período de janeiro de 2000 a abril de 2024. Apresentaremos um script detalhado para estimação e previsão de uma série temporal, seguindo as melhores práticas estatísticas. Este script é especialmente útil para aqueles interessados em aplicar algoritmos de R para análise de séries temporais univariadas. No Excel, o conjunto de dados, denominado icms_data, deve ser organizado em apenas duas colunas: date e valor. Realizada esta operação, o script realiza as demais tarefas.

# Carregar bibliotecas necessárias
library(tidyverse)
library(ggfortify)
library(xts)
library(tseries)
library(timeSeries)
library(changepoint)
library(readxl)
library(TSstudio)
library(forecast)
library(seasonal)
library(ggplot2)
library(urca)

# Carregar o conjunto de dados "icmsn" do arquivo Excel
icmsn_data <- read_excel("/Users/robertocalazans/icmsn.xlsx")

# Selecionar a coluna relevante para a série temporal
icmsn <- ts(icmsn_data$icmsn, start = c(2000, 1), frequency = 12)
dicmsn <- diff(icmsn)

# Decomposição STL da série temporal
stl_decomp <- stl(icmsn, s.window = "periodic", robust = FALSE)

# Detecção de mudanças na média e variância usando changepoint
cpt_meanvar <- changepoint::cpt.meanvar(icmsn)

# Criar um data frame para visualização 
icmsn_df <- data.frame(date = as.Date(time(icmsn)), value = as.numeric(icmsn))

# Visualização dos pontos de mudança da variância
p <- autoplot(cpt_meanvar) +
  ggtitle("Detecção de mudanças na variância") +
  theme_minimal() +
  scale_x_continuous(breaks = seq(2000, end(icmsn)[1], by = 1))
print(p)

# Plotar a decomposição STL separadamente com ggplot2
autoplot(stl_decomp) +
  ggtitle("Decomposição STL do ICMS nominal do RS") +
  theme_minimal()