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.