PAINEL MACRO

Author

VICTOR

O script analisado desenvolve um painel macroeconômico em ambiente R focado no comportamento do IPCA (Índice de Preços ao Consumidor Amplo) e no cumprimento das metas de inflação no Brasil no período de 2015 a 2024. O código é estruturado de forma lógica, passando pelas etapas de importação, tratamento, modelagem (criação de variáveis analíticas) e visualização gráfica de dados.

# puxando os dados de meta de inflação e ipca acumulado

library(readxl)
library(dplyr)

O código inicia-se com o carregamento das bibliotecas fundamentais para manipulação de dados (dplyr e readxl). Duas fontes de dados primárias em formato Excel são importadas de diretórios locais

# ── 1. IPCA TRIMESTRAL 
ipca_trim <- read_excel("C:/Users/viale/OneDrive/Desktop/CD/ipca_acum_trim.xlsx",
                        sheet = "Sheet 1") %>%
  select(Ano, T1, T2, T3, T4) %>%
  mutate(across(T1:T4, ~ round(.x, 2)))

Dados Trimestrais do IPCA (ipca_trim): Onde são selecionadas as variáveis de interesse (Ano e os quatro trimestres) , arredondando os valores decimais para duas casas.

# ── 2. METAS DE INFLAÇÃO ───────

list.files("C:/Users/viale/OneDrive/Desktop/CD")
 [1] "1 atividade de CD"                  "arquivo em r atividade caio.R"     
 [3] "ATIVIDADE CAIO 28.05.R"             "atividade caio.R"                  
 [5] "ATIVIDADE DO SENHOR CAIO"           "CD.Rproj"                          
 [7] "df.laborshare.rds"                  "GetBCBData.R"                      
 [9] "IP-R - Dados & RScript.zip"         "IP-R.R"                            
[11] "ipca_acum_trim.xlsx"                "join.R"                            
[13] "lista_sidra_geobr.pdf"              "main.R"                            
[15] "METAS DE INFLAÇÃO 2015_2024.xlsx"   "MIP2015_12s (1).xlsx"              
[17] "MIP2015_12s.RData"                  "MIP2015_12s.xlsx.xlsx"             
[19] "SCRIPT TESTE CAIO 17.03.R"          "tabela1853.xlsx"                   
[21] "tabela1853_organizada.xlsx"         "tabela6579.xlsx"                   
[23] "teste caio atividade sidrar.R"      "Vale_Perobelli_2020_Livro_IP_R.pdf"
metas <- read_excel("C:/Users/viale/OneDrive/Desktop/CD/METAS DE INFLAÇÃO 2015_2024.xlsx",
                    sheet = "METAS IPCA 2015_2024.xlsx",
                    skip = 2)

colnames(metas) <- c("Ano", "Centro", "Piso", "Teto", "IPCA_Realizado", "Situacao")

metas <- metas %>%
  filter(!is.na(Ano) & Ano != "Média") %>%
  mutate(across(Centro:IPCA_Realizado, ~ round(.x * 100, 2)),
         Ano = as.integer(Ano))

print(metas)
# A tibble: 10 × 6
     Ano Centro  Piso  Teto IPCA_Realizado Situacao      
   <int>  <dbl> <dbl> <dbl>          <dbl> <chr>         
 1  2015   4.5   2.5   6.5           10.7  Estourada     
 2  2016   4.5   2.5   6.5            6.29 Cumprida      
 3  2017   4.5   3     6              2.95 Abaixo do piso
 4  2018   4.5   3     6              3.75 Cumprida      
 5  2019   4.25  2.75  5.75           4.31 Cumprida      
 6  2020   4     2.5   5.5            4.52 Cumprida      
 7  2021   3.75  2.25  5.25          10.1  Estourada     
 8  2022   3.5   2     5              5.79 Estourada     
 9  2023   3.25  1.75  4.75           4.62 Cumprida      
10  2024   3     1.5   4.5            4.83 Estourada     
print(ipca_trim)
# A tibble: 10 × 5
     Ano    T1    T2    T3    T4
   <dbl> <dbl> <dbl> <dbl> <dbl>
 1  2015  7.85  8.56  9.11 10.2 
 2  2016  9.01  8.51  8.17  6.12
 3  2017  4.48  2.96  2.51  2.91
 4  2018  2.65  4.31  4.44  3.69
 5  2019  4.49  3.32  2.86  4.23
 6  2020  3.26  2.12  3.1   4.44
 7  2021  5.95  8.05  9.8   9.63
 8  2022 10.8  11.3   6.97  5.66
 9  2023  4.57  3.13  5.07  4.53
10  2024  3.86  4.15  4.34  4.73
library(dplyr)

Metas de Inflação (metas): Uma tabela histórica contendo os limites e resultados da inflação. O script ajusta o cabeçalho manualmente para refletir os conceitos de Centro, Piso, Teto, IPCA Realizado e Situação. Há também o tratamento de escala (multiplicando por 100 para converter taxas decimais em porcentagem) e a filtragem de linhas indesejadas (como totais de “Média”)

# Join das duas tabelas por Ano
tabela_final <- left_join(metas, ipca_trim, by = "Ano")

Após a higienização, os dados são unificados por meio de um left_join baseado no ano comum. Com a tabela consolidada (tabela_final), o código realiza análises condicionais avançadas através da criação de variáveis binárias (dummies) Uma dummy geral indica se a inflação geral estourou a meta (1 para descumprida, 0 para cumprida) Quatro dummies trimestrais determinam se o IPCA acumulado naquele período específico ficou acima do Centro da Meta estipulado para o ano correspondente

# ADMITINDO VALORES DE 1 SE O IPCA SAI DA META, E 0 SE CUMPRE A META

tabela_final <- tabela_final %>%
  mutate(Dummy = ifelse(Situacao == "Cumprida", 0, 1))

print(tabela_final)
# A tibble: 10 × 11
     Ano Centro  Piso  Teto IPCA_Realizado Situacao         T1    T2    T3    T4
   <dbl>  <dbl> <dbl> <dbl>          <dbl> <chr>         <dbl> <dbl> <dbl> <dbl>
 1  2015   4.5   2.5   6.5           10.7  Estourada      7.85  8.56  9.11 10.2 
 2  2016   4.5   2.5   6.5            6.29 Cumprida       9.01  8.51  8.17  6.12
 3  2017   4.5   3     6              2.95 Abaixo do pi…  4.48  2.96  2.51  2.91
 4  2018   4.5   3     6              3.75 Cumprida       2.65  4.31  4.44  3.69
 5  2019   4.25  2.75  5.75           4.31 Cumprida       4.49  3.32  2.86  4.23
 6  2020   4     2.5   5.5            4.52 Cumprida       3.26  2.12  3.1   4.44
 7  2021   3.75  2.25  5.25          10.1  Estourada      5.95  8.05  9.8   9.63
 8  2022   3.5   2     5              5.79 Estourada     10.8  11.3   6.97  5.66
 9  2023   3.25  1.75  4.75           4.62 Cumprida       4.57  3.13  5.07  4.53
10  2024   3     1.5   4.5            4.83 Estourada      3.86  4.15  4.34  4.73
# ℹ 1 more variable: Dummy <dbl>
print(tabela_final)
# A tibble: 10 × 11
     Ano Centro  Piso  Teto IPCA_Realizado Situacao         T1    T2    T3    T4
   <dbl>  <dbl> <dbl> <dbl>          <dbl> <chr>         <dbl> <dbl> <dbl> <dbl>
 1  2015   4.5   2.5   6.5           10.7  Estourada      7.85  8.56  9.11 10.2 
 2  2016   4.5   2.5   6.5            6.29 Cumprida       9.01  8.51  8.17  6.12
 3  2017   4.5   3     6              2.95 Abaixo do pi…  4.48  2.96  2.51  2.91
 4  2018   4.5   3     6              3.75 Cumprida       2.65  4.31  4.44  3.69
 5  2019   4.25  2.75  5.75           4.31 Cumprida       4.49  3.32  2.86  4.23
 6  2020   4     2.5   5.5            4.52 Cumprida       3.26  2.12  3.1   4.44
 7  2021   3.75  2.25  5.25          10.1  Estourada      5.95  8.05  9.8   9.63
 8  2022   3.5   2     5              5.79 Estourada     10.8  11.3   6.97  5.66
 9  2023   3.25  1.75  4.75           4.62 Cumprida       4.57  3.13  5.07  4.53
10  2024   3     1.5   4.5            4.83 Estourada      3.86  4.15  4.34  4.73
# ℹ 1 more variable: Dummy <dbl>
tabela_final <- tabela_final %>%
  mutate(
    Dummy_T1 = ifelse(T1 > Centro, 1, 0),
    Dummy_T2 = ifelse(T2 > Centro, 1, 0),
    Dummy_T3 = ifelse(T3 > Centro, 1, 0),
    Dummy_T4 = ifelse(T4 > Centro, 1, 0)
  )

print(tabela_final)
# A tibble: 10 × 15
     Ano Centro  Piso  Teto IPCA_Realizado Situacao         T1    T2    T3    T4
   <dbl>  <dbl> <dbl> <dbl>          <dbl> <chr>         <dbl> <dbl> <dbl> <dbl>
 1  2015   4.5   2.5   6.5           10.7  Estourada      7.85  8.56  9.11 10.2 
 2  2016   4.5   2.5   6.5            6.29 Cumprida       9.01  8.51  8.17  6.12
 3  2017   4.5   3     6              2.95 Abaixo do pi…  4.48  2.96  2.51  2.91
 4  2018   4.5   3     6              3.75 Cumprida       2.65  4.31  4.44  3.69
 5  2019   4.25  2.75  5.75           4.31 Cumprida       4.49  3.32  2.86  4.23
 6  2020   4     2.5   5.5            4.52 Cumprida       3.26  2.12  3.1   4.44
 7  2021   3.75  2.25  5.25          10.1  Estourada      5.95  8.05  9.8   9.63
 8  2022   3.5   2     5              5.79 Estourada     10.8  11.3   6.97  5.66
 9  2023   3.25  1.75  4.75           4.62 Cumprida       4.57  3.13  5.07  4.53
10  2024   3     1.5   4.5            4.83 Estourada      3.86  4.15  4.34  4.73
# ℹ 5 more variables: Dummy <dbl>, Dummy_T1 <dbl>, Dummy_T2 <dbl>,
#   Dummy_T3 <dbl>, Dummy_T4 <dbl>
library(ggplot2)
library(tidyr)

Para a etapa visual, utiliza-se a biblioteca ggplot2. O código emprega duas estratégias distintas de apresentação. Gráfico 1 (Evolução Trimestral): Antes de plotar, os dados passam por uma transformação de formato largo para longo (pivot_longer). Isso viabiliza a criação de um gráfico de linhas multifacetado onde se pode observar a sazonalidade e a trajetória da inflação ao longo de cada trimestre de 2015 a 2024.

# Transformar para formato longo
ipca_longo <- tabela_final %>%
  select(Ano, T1, T2, T3, T4) %>%
  pivot_longer(cols = T1:T4, names_to = "Trimestre", values_to = "IPCA")
# Gráfico
ggplot(ipca_longo, aes(x = factor(Ano), y = IPCA, color = Trimestre, group = Trimestre)) +
  geom_line(size = 1) +
  geom_point(size = 2.5) +
  labs(
    title = "IPCA Trimestral — Brasil (2015–2024)",
    x = "Ano",
    y = "IPCA (%)",
    color = "Trimestre"
  ) +
  theme_minimal()
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.

# Gráfico IPCA realizado vs. Centro da Meta
ggplot(tabela_final, aes(x = Ano)) +
  geom_line(aes(y = IPCA_Realizado), color = "steelblue", size = 1) +
  geom_point(aes(y = IPCA_Realizado), color = "steelblue", size = 2.5) +
  geom_line(aes(y = Centro), color = "red", linetype = "dashed", size = 1) +
  geom_ribbon(aes(ymin = Piso, ymax = Teto), alpha = 0.1, fill = "red") +
  labs(
    title = "IPCA Realizado vs. Meta de Inflação — Brasil (2015–2024)",
    x = "Ano",
    y = "IPCA (%)"
  ) +
  theme_minimal()

Gráfico 2 (IPCA Realizado vs. Meta de Inflação): Esta visualização foca na performance institucional do Banco Central. O gráfico plota a linha do IPCA realizado em contraste com a linha tracejada do Centro da Meta. O grande acerto técnico deste trecho é o uso de geom_ribbon, que cria uma área sombreada representando a banda de tolerância (entre o Piso e o Teto) , facilitando a identificação imediata dos anos em que a meta foi descumprida. O código está funcional, bem estruturado e atende perfeitamente ao propósito de análise macroeconômica. Contudo, para fins de boas práticas e robustez, destacam-se alguns pontos Caminhos Absolutos: O código utiliza caminhos fixos de máquina local (C:/Users/viale/…). Para tornar o projeto reprodutível por outros usuários, recomenda-se o uso do pacote here ou a configuração de um RProject, permitindo caminhos relativos. Redundâncias: Há carregamentos repetidos da biblioteca dplyr e linhas duplicadas de print(tabela_final) que podem ser limpas na versão final do relatório.No Gráfico 2, os parâmetros size = 1 estão desatualizados na sintaxe mais recente do ggplot2 (onde se usa linewidth = 1), embora ainda funcionem. Além disso, a conversão do IPCA trimestral (T1 a T4) para porcentagem multiplicada por 100 não ficou explícita no código como foi feito na tabela de metas, o que pode gerar distorção de escala nos eixos se os arquivos originais utilizarem padrões diferentes