Como reverter a primeira diferença de uma série temporal?

 

Modelagem de séries temporais frequentemente exige a aplicação de transformações nas variáveis, tal como a bem conhecida primeira diferença. Formalmente, podemos descrever essa transformação como:

Ou seja, dado uma série temporal regularmente espaçada, subtraímos do valor em t o valor anterior (t-1), obtendo a série dita "na primeira diferença" ou "nas diferenças".

A mudança de nível da série geralmente contorna diversas características "não desejadas" pelo analista como tendência, sazonalidade, etc., mas dificulta a interpretação dos valores - especialmente quando pretende-se comunicá-los para públicos não técnicos. Para este objetivo é de grande utilidade saber como diferenciar uma série temporal e, sobretudo, também como reverter a transformação.

Para reverter a primeira diferença de uma série utilizamos a soma cumulativa, representada como:

Ou seja, no final teremos um vetor com a soma de cada valor em t com todos os anteriores, valores estes que neste caso podem representar a série na primeira diferença que se deseja reverter.

Exemplo no R

Para exemplificar, vamos aplicar um exercício simples no R com o objetivo de 1) tomar a primeira de uma série e 2) reverter a transformação para obter a série original.

Para esse exemplo você precisará dos seguintes pacotes:


library(magrittr) # CRAN v2.0.1
library(GetBCBData) # CRAN v0.6
library(dplyr) # CRAN v1.0.7
library(timetk) # CRAN v2.6.2
library(tsibble) # CRAN v1.0.1
library(tidyr) # CRAN v1.1.4

Utilizaremos uma série conhecidamente não estacionária: a taxa de câmbio (R$/US$). Primeiro, importamos a série diretamente do banco de dados do Banco Central (SGS/BCB) e tratamos os dados para obter um tibble:


dados <- GetBCBData::gbcbd_get_series(
id = 3696,
first.date = "2000-01-01",
use.memoise = FALSE
) %>%
dplyr::select("date" = "ref.date", "value") %>%
dplyr::as_tibble()
dados

Uma rápida visualização dos dados:


timetk::plot_time_series(
.data = dados,
.date_var = date,
.value = value,
.smooth = FALSE,
.title = "Taxa de câmbio (R$/US$)"
)

Para criar a série na primeira diferença usamos a função tsibble::difference1, com seus argumentos padrão:

dados %<>%
dplyr::mutate(value_diff = tsibble::difference(value))
dados

Quando a diferença é aplicada inevitavelmente perdemos uma observação (a primeira), sendo preenchida no objeto como um NA. Sendo assim, a reversão dessa série para o seu nível (valores originais) requer uma artimanha: devemos substituir o valor NA pelo valor original da série correspondente a esse período dos dados e, então, usar a função cumsum para calcular a soma cumulativa.
dados %<>%
dplyr::mutate(
value_diff = dplyr::if_else(is.na(value_diff), value, value_diff),
value_revert = cumsum(value_diff)
)
dados
Checando se a série revertida corresponde aos valores originais:
all.equal(dados$value_revert, dados$value)
# [1] TRUE

Os cálculos ocorreram conforme o esperado: a série original da taxa de câmbio importada do BCB é igual à série que aplicamos e revertemos a primeira diferença.

Simples, não?

Por fim, vale comparar visualmente o comportamento da série em nível e na diferença (primeiro gráfico):


dados %>%
dplyr::select(
"date",
"Nível" = "value",
"1ª diferença" = "value_diff",
"Série revertida" = "value_revert"
) %>%
tidyr::pivot_longer(
cols = -"date",
names_to = "variable"
) %>%
timetk::plot_time_series(
.date_var = date,
.value = value,
.facet_vars = variable,
.smooth = FALSE,
.title = "Taxa de câmbio (R$/US$)",
.interactive = FALSE
)

 


[1] Para um equivalente em base R veja ?diff.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Ancoragem de Expectativas da Inflação no Brasil: uma avaliação utilizando a linguagem de programação R

Expectativas ancoradas significam que a inflação permanece próxima da meta mesmo após choques relevantes, tornando menos custosa a atuação do Banco Central no combate a pressões inflacionárias. Neste exercício, analisamos diferentes medidas para avaliar a ancoragem das expectativas no Brasil, utilizando a linguagem de programação R como ferramenta para a construção desse exercício, realizando a coleta, tratamento, cálculos e visualização dos resultados.

Como fazer previsões para a inflação desagregada medida pelo IPCA?

Neste artigo investigamos se a previsão desagregada da inflação é capaz de gerar previsões mais acuradas do que a previsão agregada. Utilizamos o Índice Nacional de Preços ao Consumidor Amplo (IPCA) como medida de interesse, aplicando um modelo simples e um modelo de passeio aleatório para comparação. Todo o processo pode ser feito de maneira automatizada utilizando a linguagem de programação R.

Qual o melhor modelo para prever a inflação medida pelo IPCA?

Neste exercício, testamos 18 modelos diferentes com um conjunto fixo de regressores para previsão da taxa de inflação, medida pelo IPCA. Implementamos o método da validação cruzada, visando obter resultados robustos para comparação de métricas de performance. Apresentamos os resultados gerais e desagregados por horizontes de previsão, além de automatizar todo o processo utilizando a linguagem Python.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de 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.