# puxando os dados de meta de inflação e ipca acumulado
library(readxl)
library(dplyr)PAINEL MACRO
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.
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