Como deflacionar uma série no R

Algumas pessoas ainda devem se lembrar de quando era possível "fazer o rancho", as compras do mês, com apenas cem reais no bolso, mas já faz bastante tempo que uma simples ida ao supermercado é deveras custosa. O carro popular que podia ser adquirido por menos de R$ 30 mil nos anos 1990 é facilmente vendido por não menos de R$ 50 mil hoje. Ou seja, com uma nota de R$ 100 não se compra a mesma quantidade de bens hoje do que era possível há 20 anos e isso constitui um problema econômico básico, motivo pelo qual devemos deflacionar valores monetários para poder compará-los no tempo.

Sendo assim, se queremos ter uma visão realística quando analisando uma série de preços, devemos transformar os valores nominais para valores deflacionados, ou reais, contabilizando o efeito inflacionário do período. Apesar de ser um procedimento padrão, costumam haver alguns equívocos, de modo que iremos esclarecer alguns pontos e explorar uma abordagem moderna da técnica usando a linguagem R.

Para transformar uma série de preços para valores reais, são necessárias duas coisas: os dados nominais e um índice de preços adequado. A série de dados nominais pode ser qualquer uma que mede algo em valores correntes (R$), como por exemplo a série do salário mínimo, disponibilizada pelo IPEADATA. Já o índice de preços adequado pode vir de diversas fontes, os mais conhecidos no Brasil são o Índice Nacional de Preços ao Consumidor Amplo (IPCA), o Índice Nacional de Preços ao Consumidor (INPC) e o Índice Geral de Preços - Mercado (IGP-M), este divulgado pela FGV e aqueles pelo IBGE. O que esses índices fazem é medir o preço de uma cesta de produtos em um dado período de tempo, geralmente um mês cheio, em relação a um outro período de tempo base.

Com esses dois dados, basta aplicar a fórmula de deflacionamento a seguir:

Onde:

é o valor real, ou deflacionado, no período i na data-base j

 

é o índice de preços fixado na data-base j

 

é o índice de preços no período i

 

é o valor ou preço nominal no período i

 

Com esta fórmula é possível obter o valor deflacionado a partir da multiplicação do valor nominal em um dado período pela razão entre o índice de preços na data-base de referência em relação ao índice no período de análise/interesse. Agora vamos exemplificar com dados para facilitar o entendimento.

Como exemplo, usaremos os dados do salário mínimo do Brasil a partir de 2000 e o INPC para deflacionar a série. Podemos obter esses dados no R com o código a seguir:

# Instalar/carregar pacotes
if(!require("pacman")) install.packages("pacman")
pacman::p_load(
"deflateBR",
"dplyr",
"lubridate",
"httr",
"sidrar",
"purrr",
"ggplot2",
"deflateBR",
"tidyr",
"magrittr"
)

## Coletar dados
# Salário mínimo nominal (código IPEADATA = MTE12_SALMIN12) usando web-scrapping
dados_nominal <- httr::GET(
"http://ipeadata.gov.br/api/odata4/ValoresSerie(SERCODIGO='MTE12_SALMIN12')"
)

# Dados do INPC usando API do Sidra/IBGE
dados_indice <- sidrar::get_sidra(api = "/t/1736/n1/all/v/2289/p/all/d/v2289%2013")

## Tratar dados e filtrar desde o ano 2000
# Salário mínimo nominal
nominal <- httr::content(dados_nominal)[[2]] %>% 
dplyr::bind_rows() %>% 
dplyr::select("date" = `VALDATA`, "nominal" = `VALVALOR`) %>% 
dplyr::mutate(date = lubridate::as_date(date)) %>% 
dplyr::filter(date >= as.Date("2000-01-01"))

# INPC
indice <- dados_indice %>% 
dplyr::select(
"date" = `Mês (Código)`,
"indice" = `Valor`
) %>%
dplyr::mutate(date = lubridate::ym(date))

## Juntar dados
salario_minimo <- dplyr::left_join(nominal, indice, by = "date") %>% 
tidyr::drop_na()

Os dados obtidos podem ser visualizados na tabela abaixo:

Agora vamos supor que queremos saber o salário mínimo real de novembro de 2020 na data-base de abril de 2021. Primeiro calculamos o chamado fator de deflacionamento, que é a fração entre parênteses na fórmula acima, fixando a data-base em abril/2021. O resultado e o cálculo podem ser vistos a seguir:

# Calcular fator de deflacionamento
salario_minimo %<>% 
dplyr::mutate(
fator = (indice[date == "2021-04-01"]/indice)
)

Em seguida, para transformar o valor nominal (R$ 1.045,00) em valor real, basta multiplicá-lo por 1,0384, isto é, R$ 1.045,00 de novembro de 2020 equivale a R$ 1.085,12 em abril de 2021.

Agora que sabemos o procedimento passo a passo do cálculo de deflacionamento, vamos aplicar a fórmula na série do salário mínimo e plotar um gráfico comparativo.

# Calcular salário mínimo real
salario_minimo %<>% 
dplyr::mutate(
real = (indice[date == "2021-04-01"]/indice) * nominal
)

# Visualização de dados
ggplot2::ggplot(salario_minimo, ggplot2::aes(x = date))+
ggplot2::geom_line(
ggplot2::aes(y = nominal, colour = "Salário Mínimo - Nominal"), size = 1.5
) +
ggplot2::geom_line(
ggplot2::aes(y = real, colour = "Salário Mínimo - Real"), size = 1.5
) +
ggplot2::scale_colour_manual(NULL, values = c("#282f6b", "#b22200")) + 
ggplot2::scale_y_continuous(n.breaks = 8) +
ggplot2::labs(
x = NULL,
y = "R$",
title = "Salário Mínimo no Brasil",
subtitle = "Valores em Reais deflacionados pelo INPC a preços de abril/2021.",
caption = "Fonte: analisemacro.com.br com dados de IBGE e IPEA."
) +
ggplot2::theme(
legend.position = "bottom",
plot.title = ggplot2::element_text(face = "bold"),
plot.subtitle = ggplot2::element_text(face = "italic"),
legend.text = ggplot2::element_text(face = "bold")
)

 

Perceba que, apesar de ser simples e fácil, é um pouco trabalhoso obter os dados do índice, tratar, fazer o cálculo, etc., para enfim obter nossa série deflacionada, mesmo que em nosso exemplo tenhamos "quebrado" o procedimento em etapas adicionais para fins de didática. Felizmente, existe um pacote no R chamado deflateBR que facilita essas tarefas em uma única função, criado pelo Fernando Meireles.

Com a função deflate, tudo que precisamos é apontar a série que queremos deflacionar, o vetor de datas correspondentes, uma data-base e um índice de preços que pode ser: IPCA, IGP-M, IGP-DI, IPC ou INPC. Vamos ao exemplo anterior usando essa função. criaremos uma outra coluna em nosso objeto nomeando-a "deflacionado" para diferenciar dos valores anteriores já calculados:

# Deflacionar usando o pacote deflateBR
salario_minimo %<>% 
dplyr::mutate(
deflacionado = deflateBR::deflate(
nominal_values = nominal,
nominal_dates = date %m+% months(1), # evitar que a função pegue valor com 1 lag
real_date = format(tail(date, 1), "%m/%Y"), 
index = "inpc"
)
)

# Verificar se valores são iguais
all.equal(salario_minimo$real, salario_minimo$deflacionado)

# [1] TRUE

Note que o cálculo foi exatamente o mesmo, mas bastou que indicássemos para a função o que e por qual índice necessitamos deflacionar, muito mais simples e prático.

Por fim, vamos confrontar nossos cálculos com os cálculos do IPEA, haja visto que o mesmo disponibiliza em sua plataforma a série do salário mínimo real. Assim certificamos de que fizemos tudo corretamente:

# Salário mínimo real IPEA (código IPEADATA = GAC12_SALMINRE12) usando web-scrapping
dados_real <- httr::GET(
"http://ipeadata.gov.br/api/odata4/ValoresSerie(SERCODIGO='GAC12_SALMINRE12')"
)

# Salário mínimo real IPEA
real <- httr::content(dados_real)[[2]] %>% 
dplyr::bind_rows() %>% 
dplyr::select("date" = `VALDATA`, "ipea" = `VALVALOR`) %>% 
dplyr::mutate(date = lubridate::as_date(date)) %>% 
dplyr::filter(date >= as.Date("2000-01-01"))

# Juntar dados e arredondar casas decimais
salario_minimo <- left_join(salario_minimo, real, by = "date") %>% 
dplyr::mutate(dplyr::across(real:ipea, ~round(.x, 2)))

# Verificar se valores são iguais
all.equal(salario_minimo$real, salario_minimo$ipea)

# [1] TRUE

Assim, demonstramos duas formas de deflacionar valores usando o R, ambas equivalentes entre si.

 

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como analisar a relação de risco-retorno de ações?

O que é retorno? O que é o risco? Como exatamente os definimos e como podemos avaliar os ativos com base nessas medidas? Neste artigo, apresentamos uma introdução concisa à análise e gestão de ativos financeiros, destacando a eficácia do Python na coleta, tratamento e análise de dados financeiros. Exploraremos como utilizar a linguagem para avaliar o risco-retorno de ações.

Retropolando a série do desemprego no Brasil

Nosso objetivo neste exercício será estender a taxa de desemprego fornecida pela Pesquisa de Nacional por Amostra de Domicílios Contínua (PNAD Contínua) através daquela fornecida pela Pesquisa Mensal de Emprego (PME). Serão construídas duas séries: uma normal, outra dessazonalizada. Faremos todo o exercício utilizando o Python.

Variáveis Instrumentais no R: qual o impacto do gasto de segurança no crime?

Diversos métodos econométricos têm como principal finalidade melhorar o processo de investigar o efeito de uma variável sobre a outra, e um importante método encontra-se no uso de Variáveis Instrumentais na análise de regressão linear. Mas como podemos utilizar essa ferramenta para auxiliar no estudo da avaliação de impacto?

Neste post, oferecemos uma breve introdução a esse importante método da área de inferência causal, acompanhado de um estudo de caso para uma compreensão mais aprofundada de sua aplicação. Os resultados foram obtidos por meio da implementação em R, como parte integrante do nosso curso sobre Avaliação de Políticas Públicas utilizando esta linguagem de programação.

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.