Relatório AM #35 - Política Fiscal

A política fiscal refere-se na forma que o governo faz uso dos gastos e das receitas. Sua condução afeta diversas variáveis econômicas, portanto, seu acompanhamento é necessário, como forma de antever os rumos da economia. É possível acessar facilmente os dados fiscais do Brasil através do Banco Central com diversos pacotes no R. Nós ensinamos como realizar não só a coleta no R, mas também o tratamento e a visualização dos dados no nosso Curso de Análise de Conjuntura.

No Relatório AM dessa semana, ensinaremos como realizar a coleta através do pacote {GetBCBData}. Também utilizaremos dados do IPCA para deflacionar os valores e do PIB para compararmos com os gastos com juros.

Carregamos os pacotes necessários.


# Carregar pacotes
if (!require("pacman")) install.packages("pacman")
pacman::p_load(
"GetBCBData",
"sidrar",
"magrittr",
"dplyr",
"lubridate",
"purrr",
"timetk",
"tidyr",
"stringr",
"ggplot2",
"ggthemes",
"flextable"
)

Definimos objetos para facilitar a criação do código.

## Funções e objetos úteis

# Cores para gráficos e tabelas
colors <- c(
blue = "#282f6b",
red = "#b22200",
yellow = "#eace3f",
green = "#224f20",
purple = "#5f487c",
orange = "#b35c1e",
turquoise = "#419391",
green_two = "#839c56",
light_blue = "#3b89bc",
gray = "#666666"
)

# Fonte para gráficos e tabelas
foot_bcb <- "Fonte: analisemacro.com.br com dados do BCB."

# Definir padrão de gráficos
theme_am <- function() {
ggthemes::theme_clean() %+replace%
ggplot2::theme(
plot.background = ggplot2::element_rect(colour = NA),
legend.background = ggplot2::element_rect(colour = NA),
strip.text = ggplot2::element_text(size = 8, face = "bold")
)
}
ggplot2::theme_set(theme_am())

Coletamos os dados através do pacote {GetBCBData}. Primeiro devemos buscar os códigos das variáveis através do Sistema Gerenciador de Séries do Banco Central. Cada código refere-se a um conjunto de dados. Salvamos esses valores em um objeto. Para o IPCA, utilizaremos o pacote {sidrar} para buscar valores do SIDRA.

Após isso, seguimos para a importação dos dados, do tratamento e após para a visualização.

## Parâmetros e códigos para coleta de dados
parametros <- list(

## Resultado do Setor Público Consolidado
# NFSP sem desvalorização cambial
# Fluxo mensal corrente - Total - R$ (milhões)
resultado_spc = c(
"Resultado primário - INSS" = 7854,
"Resultado primário - Governo Federal" = 7853, 
"Resultado primário - Governos Estaduais" = 4643, 
"Resultado primário - Governos Municipais" = 4644, 
"Resultado primário - Empresas Estatais" = 4645, 
"Resultado primário - Setor Público Consolidado" = 4649, 
"Juros nominais - Governo Federal" = 4607,
"Juros nominais - Banco Central" = 4608, 
"Juros nominais - Governos Estaduais" = 4610, 
"Juros nominais - Governos Municipais" = 4611, 
"Juros nominais - Empresas Estatais" = 4612, 
"Juros nominais - Setor Público Consolidado" = 4616,
"Resultado nominal - Setor Público Consolidado" = 4583
),

# PIB acumulado dos últimos 12 meses - Valores correntes (R$ milhões)
pib = c("PIB 12 meses" = 4382),

# IPCA - Número-índice (base: dezembro de 1993 = 100)
ipca = "/t/1737/n1/all/v/2266/p/all/d/v2266%2013"

)

 

 

 

</pre>
## Coleta dos dados

# IPCA para deflacionar valores
raw_ipca <- sidrar::get_sidra(api = parametros$ipca)

# PIB para cálculos em "% PIB
raw_pib <- GetBCBData::gbcbd_get_series(
id = parametros$pib,
first.date = "2001-12-01",
use.memoise = FALSE
)

# Resultado do Setor Público Consolidado
raw_resultado_spc <- GetBCBData::gbcbd_get_series(
id = parametros$resultado_spc,
first.date = "2001-12-01",
use.memoise = FALSE
)
<pre>

 

 

</pre>
## Tratamento dos dados

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

# PIB
pib <- raw_pib %>%
dplyr::select("date" = `ref.date`, "pib" = `value`)

# Resultado do Setor Público Consolidado
resultado_spc <- raw_resultado_spc %>%
dplyr::select("date" = `ref.date`, "variable" = `series.name`, "nominal" = value) %>%
purrr::reduce(
.x = list(., ipca, pib),
.f = dplyr::left_join,
by = "date"
) %>%
dplyr::as_tibble() %>%
dplyr::group_by(variable) %>%
dplyr::mutate(
# Deflacionar valores
real = (ipca[date == max(date)] / ipca) * nominal,
# Acumular valores nominais em 12 meses (% PIB)
nominal_acum_12m_pib = timetk::slidify_vec(
.x = nominal,
.f = sum,
.period = 12,
.align = "right"
) / pib * 100,
# Acumular valores reais em 12 meses
real_acum_12m = timetk::slidify_vec(
.x = real,
.f = sum,
.period = 12,
.align = "right"
)
) %>%
tidyr::drop_na() %>%
dplyr::ungroup()
<pre>

Criamos um gráfico da variação acumulada em 12 meses dos Juros Nominais, Resultado Nominal e Resultado Primário.

# Setor Público Consolidado (Res. Primário, Juros e Res. Nominal)
resultado_spc %>% 
dplyr::filter(stringr::str_detect(variable, "Setor Público Consolidado")) %>% 
dplyr::mutate(variable = stringr::str_remove_all(variable, " - Setor Público Consolidado")) %>% 
ggplot2::ggplot(ggplot2::aes(x = date, y = real_acum_12m / 1000, color = variable)) +
ggplot2::geom_hline(yintercept = 0, color = colors["red"], linetype = "dashed") +
ggplot2::geom_line(size = 1.5) + 
ggplot2::facet_wrap(~variable, scales = "free_y") + 
ggplot2::scale_color_manual(NULL, values = unname(colors[1:6])) +
ggplot2::labs(
title = "Setor Público Consolidado",
subtitle = "Valores acumulados em 12 meses",
y = "R$ Bilhões",
x = "",
caption = foot_bcb
) +
ggplot2::theme(legend.position = "none")

Visualizamos os gastos com juros em razão do PIB.

# Gastos com juros - % PIB acumulado em 12 meses
resultado_spc %>% 
dplyr::filter(stringr::str_detect(variable, "Juros nominais - ")) %>% 
dplyr::mutate(variable = stringr::str_remove_all(variable, "Juros nominais - ")) %>% 
ggplot2::ggplot(ggplot2::aes(x = date, y = nominal_acum_12m_pib, color = variable)) +
ggplot2::geom_hline(yintercept = 0, color = colors["red"], linetype = "dashed") +
ggplot2::geom_line(size = 1.5) + 
ggplot2::facet_wrap(~variable, scales = "free_y") + 
ggplot2::scale_color_manual(NULL, values = unname(colors[1:6])) +
ggplot2::labs(
title = "Gastos com juros",
subtitle = "Valores acumulados em 12 meses, % do PIB",
y = "% do PIB",
x = "",
caption = foot_bcb
) +
ggplot2::theme(legend.position = "none")

______________________________________

Você confere o script completo no nosso Curso de Análise de Conjuntura usando o R. A apresentação da PMC também está disponível no Clube AM.

______________________________________

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como automatizar o tratamento de dados feito no Excel usando o Python?

Segundo a pesquisa “State of Data Science”, profissionais de dados gastam 3 horas/dia (38% do tempo) apenas preparando os dados, antes mesmo de analisá-los. Neste artigo advogamos que este gasto de tempo pode ser drasticamente reduzido ao utilizar ferramentas open source, como Pandas e Python, para automatizar tarefas repetitivas que costumam ser feitas em Excel.

A gramática dos gráficos: como deixar de criar gráficos no Excel e usar o plotnine no Python

A etapa de visualização de dados refere-se a uma parte fundamental da análise de dados, pois permite não somente compreender os dados que estamos analisando, mas como também é uma ferramenta útil para explanar os resultados encontrados. Mas qual a forma mais fácil de construir um gráfico, como podemos melhorar a produtividade nesta tarefa? É onde podemos aplicar a gramática dos gráficos e construir com a biblioteca plotnine no Python.

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.