PIB

Author

julia, marilia, eduarda

rm(list = ls())

library(sidrar)
Warning: pacote 'sidrar' foi compilado no R versão 4.5.3
library(geobr)
Warning: pacote 'geobr' foi compilado no R versão 4.5.3
library(sf)
Warning: pacote 'sf' foi compilado no R versão 4.5.3
Linking to GEOS 3.14.1, GDAL 3.12.1, PROJ 9.7.1; sf_use_s2() is TRUE
library(dplyr)
Warning: pacote 'dplyr' foi compilado no R versão 4.5.3

Anexando pacote: 'dplyr'
Os seguintes objetos são mascarados por 'package:stats':

    filter, lag
Os seguintes objetos são mascarados por 'package:base':

    intersect, setdiff, setequal, union
library(ggplot2)
Warning: pacote 'ggplot2' foi compilado no R versão 4.5.3
library(tidyverse)
Warning: pacote 'tidyverse' foi compilado no R versão 4.5.3
Warning: pacote 'tibble' foi compilado no R versão 4.5.3
Warning: pacote 'tidyr' foi compilado no R versão 4.5.3
Warning: pacote 'readr' foi compilado no R versão 4.5.3
Warning: pacote 'purrr' foi compilado no R versão 4.5.3
Warning: pacote 'stringr' foi compilado no R versão 4.5.3
Warning: pacote 'forcats' foi compilado no R versão 4.5.3
Warning: pacote 'lubridate' foi compilado no R versão 4.5.3
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ lubridate 1.9.5     ✔ tibble    3.3.1
✔ purrr     1.2.2     ✔ tidyr     1.3.2
✔ readr     2.2.0     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors


── 1. COLETA ──────────────────────────────────────────────────────────────────

dados_raw <- get_sidra(
  api = "/t/5938/n3/all/v/37,513,517,6575,525,543/p/2002,2021/d/v37%200,v513%200,v517%200,v6575%200,v525%200,v543%200"
)
All others arguments are desconsidered when 'api' is informed

── 2. LIMPEZA ─────────────────────────────────────────────────────────────────

dados <- dados_raw %>%
  select(
    cod_uf   = `Unidade da Federação (Código)`,
    uf       = `Unidade da Federação`,
    ano      = `Ano`,
    variavel = `Variável`,
    valor    = `Valor`
  ) %>%
  mutate(
    cod_uf = as.numeric(cod_uf),
    ano    = as.integer(ano),
    valor  = as.numeric(valor),
    variavel_label = case_when(
      grepl("^Produto Interno Bruto",    variavel) ~ "PIB corrente",
      grepl("agropecuária",              variavel, ignore.case = TRUE) ~ "VAB Agropecuária",
      grepl("indústria",                 variavel, ignore.case = TRUE) ~ "VAB Indústria",
      grepl("serviços, exclusive",       variavel, ignore.case = TRUE) ~ "VAB Serviços",
      grepl("administração, defesa",     variavel, ignore.case = TRUE) ~ "VAB Adm. Pública",
      grepl("Impostos, líquidos",        variavel, ignore.case = TRUE) ~ "Impostos líquidos",
      TRUE ~ variavel
    )
  )

Confirma os rótulos

dados %>% distinct(variavel, variavel_label)
                                                                                                                                variavel
1                                                                                               Produto Interno Bruto a preços correntes
2                                                                              Valor adicionado bruto a preços correntes da agropecuária
3                                                                                 Valor adicionado bruto a preços correntes da indústria
4 Valor adicionado bruto a preços correntes dos serviços, exclusive administração, defesa, educação e saúde públicas e seguridade social
5                      Valor adicionado bruto a preços correntes da administração, defesa, educação e saúde públicas e seguridade social
6                                                                     Impostos, líquidos de subsídios, sobre produtos a preços correntes
     variavel_label
1      PIB corrente
2  VAB Agropecuária
3     VAB Indústria
4      VAB Serviços
5  VAB Adm. Pública
6 Impostos líquidos

── 3. MALHA ───────────────────────────────────────────────────────────────────

mapa <- read_state(year = 2020)
ℹ Using year/date 2020

── 4. FUNÇÃO PARA UM MAPA INDIVIDUAL GRANDE ──────────────────────────────────

gerar_mapa <- function(var_label, ano_sel, titulo_fill = var_label,
                       fmt = NULL, paleta = "plasma") {
  
  df <- dados %>% filter(variavel_label == var_label, ano == ano_sel)
  
  mapa_dados <- mapa %>%
    left_join(df, by = c("code_state" = "cod_uf"))
  
  if (is.null(fmt))
    fmt <- function(x) scales::comma(x, big.mark = ".", decimal.mark = ",")
  
  ggplot(mapa_dados) +
    geom_sf(aes(fill = valor)) +
    scale_fill_viridis_c(option = paleta, labels = fmt, na.value = "grey80") +
    theme_void() +
    labs(
      title = paste0(var_label, " – ", ano_sel),
      fill  = titulo_fill
    )
}

── 5. FORMATAÇÕES ─────────────────────────────────────────────────────────────

fmt_bi    <- function(x) paste0(round(x / 1e3, 1), " bi")
fmt_reais <- function(x) paste0("R$ ", scales::comma(x, big.mark = ".", decimal.mark = ","))
fmt_pct   <- function(x) paste0(round(x, 1), "%")

── 6. GERA CADA MAPA INDIVIDUALMENTE ─────────────────────────────────────────

PIB CORRENTE

gerar_mapa("PIB corrente", 2002, fmt = fmt_bi)

gerar_mapa("PIB corrente", 2021, fmt = fmt_bi)

Análise: Os mapas de PIB corrente mostram a distribuição geográfica da riqueza produzida entre os estados brasileiros em 2002 e 2021. Em ambos os períodos, observa-se forte concentração econômica nos estados do Sudeste (especialmente São Paulo) e Sul, refletindo a histórica centralização industrial e de serviços nessas regiões. Comparando os dois anos, percebe-se crescimento absoluto do PIB em praticamente todos os estados — resultado da inflação acumulada e do crescimento real da economia no período —, mas a hierarquia regional se mantém relativamente estável, indicando que, apesar do crescimento, as desigualdades regionais persistem ao longo das duas décadas.

VAB AGROPECUÁRIA

gerar_mapa("VAB Agropecuária", 2002, fmt = fmt_bi, paleta = "inferno")

gerar_mapa("VAB Agropecuária", 2021, fmt = fmt_bi, paleta = "inferno")

Análise: O Valor Adicionado Bruto (VAB) da agropecuária revela um padrão espacial bem distinto do PIB total: os estados do Centro-Oeste (Mato Grosso, Mato Grosso do Sul, Goiás) e algumas áreas do Sul se destacam fortemente, refletindo a vocação agrícola dessas regiões — especialmente impulsionada pela expansão da soja e da pecuária. Entre 2002 e 2021, é esperado um crescimento expressivo nesses estados, acompanhando o boom de commodities agrícolas brasileiro, enquanto estados predominantemente urbanos e industriais (como São Paulo) mantêm participação proporcionalmente menor nesse setor, mesmo com produção agropecuária relevante em termos absolutos.

VAB INDÚSTRIA

gerar_mapa("VAB Indústria", 2002, fmt = fmt_bi)

gerar_mapa("VAB Indústria", 2021, fmt = fmt_bi)

Análise: O VAB industrial concentra-se majoritariamente no eixo Sul-Sudeste, com São Paulo, Rio de Janeiro, Minas Gerais e Rio Grande do Sul liderando a produção industrial do país. Esse padrão é coerente com a histórica formação do parque industrial brasileiro, instalado nessas regiões desde o século XX. Comparando 2002 e 2021, é possível observar se houve avanço da industrialização em outras regiões (como Nordeste e Centro-Oeste) ou se a concentração regional se manteve praticamente inalterada — um indício de que o processo de desconcentração industrial no Brasil ainda é lento e desigual.

VAB SERVIÇOS

gerar_mapa("VAB Serviços", 2002, fmt = fmt_bi, paleta = "magma")

gerar_mapa("VAB Serviços", 2021, fmt = fmt_bi, paleta = "magma")

Análise: O setor de serviços é, em geral, o maior componente do PIB brasileiro, e o mapa confirma essa importância ao mostrar valores elevados especialmente nos estados mais populosos e urbanizados, como São Paulo, Rio de Janeiro e Minas Gerais. A predominância desse setor reflete a transição estrutural da economia brasileira, cada vez mais voltada para serviços (comércio, finanças, tecnologia, educação, saúde) em detrimento da indústria. O crescimento entre 2002 e 2021 tende a ser o mais acentuado entre os setores analisados, acompanhando a tendência mundial de “terciarização” das economias.

VAB ADM. PÚBLICA

gerar_mapa("VAB Adm. Pública", 2002, fmt = fmt_bi, paleta = "cividis")

gerar_mapa("VAB Adm. Pública", 2021, fmt = fmt_bi, paleta = "cividis")

Análise: O VAB de administração pública tende a ser mais homogêneo entre os estados, já que reflete principalmente gastos com funcionalismo público, saúde e educação — serviços presentes em todas as unidades federativas, ainda que em proporções diferentes. Estados com menor diversificação econômica (geralmente no Norte e Nordeste) costumam apresentar maior peso relativo da administração pública em seu PIB, justamente por terem menor desenvolvimento dos demais setores produtivos. A comparação entre 2002 e 2021 permite avaliar se essa dependência do setor público aumentou ou diminuiu ao longo do período.

COLETA E LIMPEZA DE DADOS

rm(list = ls())

library(sidrar)
library(geobr)
library(sf)
library(dplyr)
library(ggplot2)
library(tidyverse)

dados_raw <- get_sidra(
  api = "/t/5938/n3/all/v/37,513,517,6575,525,543/p/2002,2021/d/v37%200,v513%200,v517%200,v6575%200,v525%200,v543%200"
)
All others arguments are desconsidered when 'api' is informed
#limpeza
dados <- dados_raw %>%
  select(
    cod_uf   = `Unidade da Federação (Código)`,
    uf       = `Unidade da Federação`,
    ano      = `Ano`,
    variavel = `Variável`,
    valor    = `Valor`
  ) %>%
  mutate(
    cod_uf = as.numeric(cod_uf),
    ano    = as.integer(ano),
    valor  = as.numeric(valor),
    variavel_label = case_when(
      grepl("^Produto Interno Bruto",    variavel) ~ "PIB corrente",
      grepl("agropecuária",              variavel, ignore.case = TRUE) ~ "VAB Agropecuária",
      grepl("indústria",                 variavel, ignore.case = TRUE) ~ "VAB Indústria",
      grepl("serviços, exclusive",       variavel, ignore.case = TRUE) ~ "VAB Serviços",
      grepl("administração, defesa",     variavel, ignore.case = TRUE) ~ "VAB Adm. Pública",
      grepl("Impostos, líquidos",        variavel, ignore.case = TRUE) ~ "Impostos líquidos",
      TRUE ~ variavel
    )
  )

4. FUNÇÃO PARA UM MAPA INDIVIDUAL GRANDE

#malha
mapa <- read_state(year = 2020)
ℹ Using year/date 2020
#mapa individual
gerar_mapa <- function(var_label, ano_sel, titulo_fill = var_label,
                       fmt = NULL, paleta = "plasma") {
  
  df <- dados %>% filter(variavel_label == var_label, ano == ano_sel)
  
  mapa_dados <- mapa %>%
    left_join(df, by = c("code_state" = "cod_uf"))
  
  if (is.null(fmt))
    fmt <- function(x) scales::comma(x, big.mark = ".", decimal.mark = ",")
  
  ggplot(mapa_dados) +
    geom_sf(aes(fill = valor)) +
    scale_fill_viridis_c(option = paleta, labels = fmt, na.value = "grey80") +
    theme_void() +
    labs(
      title = paste0(var_label, " – ", ano_sel),
      fill  = titulo_fill
    )
}

#formatações
fmt_bi    <- function(x) paste0(round(x / 1e3, 1), " bi")
fmt_reais <- function(x) paste0("R$ ", scales::comma(x, big.mark = ".", decimal.mark = ","))
fmt_pct   <- function(x) paste0(round(x, 1), "%")

#mapa individual
#corrente
gerar_mapa("PIB corrente", 2002, fmt = fmt_bi)

gerar_mapa("PIB corrente", 2021, fmt = fmt_bi)

#vab agro
gerar_mapa("VAB Agropecuária", 2002, fmt = fmt_bi, paleta = "inferno")

gerar_mapa("VAB Agropecuária", 2021, fmt = fmt_bi, paleta = "inferno")

#vap indo
gerar_mapa("VAB Indústria", 2002, fmt = fmt_bi)

gerar_mapa("VAB Indústria", 2021, fmt = fmt_bi)

# vab serv
gerar_mapa("VAB Serviços", 2002, fmt = fmt_bi, paleta = "magma")

gerar_mapa("VAB Serviços", 2021, fmt = fmt_bi, paleta = "magma")

# vab adm pub
gerar_mapa("VAB Adm. Pública", 2002, fmt = fmt_bi, paleta = "cividis")

gerar_mapa("VAB Adm. Pública", 2021, fmt = fmt_bi, paleta = "cividis")

FORMATAÇÕES

fmt_bi    <- function(x) paste0(round(x / 1e3, 1), " bi")
fmt_reais <- function(x) paste0("R$ ", scales::comma(x, big.mark = ".", decimal.mark = ","))
fmt_pct   <- function(x) paste0(round(x, 1), "%")

#mapa individual
#corrente
gerar_mapa("PIB corrente", 2002, fmt = fmt_bi)

gerar_mapa("PIB corrente", 2021, fmt = fmt_bi)

#vab agro
gerar_mapa("VAB Agropecuária", 2002, fmt = fmt_bi, paleta = "inferno")

gerar_mapa("VAB Agropecuária", 2021, fmt = fmt_bi, paleta = "inferno")

#vap indo
gerar_mapa("VAB Indústria", 2002, fmt = fmt_bi)

gerar_mapa("VAB Indústria", 2021, fmt = fmt_bi)

# vab serv
gerar_mapa("VAB Serviços", 2002, fmt = fmt_bi, paleta = "magma")

gerar_mapa("VAB Serviços", 2021, fmt = fmt_bi, paleta = "magma")

# vab adm pub
gerar_mapa("VAB Adm. Pública", 2002, fmt = fmt_bi, paleta = "cividis")

gerar_mapa("VAB Adm. Pública", 2021, fmt = fmt_bi, paleta = "cividis")

COLETA — SÉRIE NACIONAL DE DEFLATOR E VOLUME FUNÇÃO PARA UM MAPA INDIVIDUAL GRANDE

anos <- 2001:2021

deflator_volume_raw <- get_sidra(
  api = paste0("/t/6784/n1/all/v/9810,9811/p/", paste(anos, collapse = ",")))
All others arguments are desconsidered when 'api' is informed

LIMPEZA

deflator_volume <- deflator_volume_raw %>%
  select(
    ano      = `Ano`,
    variavel = `Variável`,
    valor    = `Valor`
  ) %>%
  mutate(
    ano    = as.integer(ano),
    valor  = as.numeric(valor),
    variavel_label = case_when(
      grepl("deflator", variavel, ignore.case = TRUE) ~ "Deflator (efeito preços)",
      grepl("volume",   variavel, ignore.case = TRUE) ~ "Volume (crescimento real)",
      TRUE ~ variavel
    )
  )

PERÍODOS CRÍTICOS PARA DESTACAR

periodos_criticos <- tibble::tribble(
  ~inicio, ~fim,   ~label,
  2008.5,  2009.5, "Crise financeira\nglobal",
  2014.5,  2016.5, "Recessão\n2014–2016",
  2019.5,  2020.5, "Pandemia\n(COVID-19)"
)

GRÁFICO — VOLUME x DEFLATOR COM CONTEXTO HISTÓRICO

ggplot() +
  geom_rect(
    data = periodos_criticos,
    aes(xmin = inicio, xmax = fim, ymin = -Inf, ymax = Inf),
    fill = "grey85", alpha = 0.5
  ) +
  geom_text(
    data = periodos_criticos,
    aes(x = (inicio + fim) / 2, y = Inf, label = label),
    vjust = 1.3, size = 2.8, color = "grey40", lineheight = 0.85
  ) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey60") +
  geom_line(
    data = deflator_volume,
    aes(x = ano, y = valor, color = variavel_label),
    linewidth = 1.1
  ) +
  geom_point(
    data = deflator_volume,
    aes(x = ano, y = valor, color = variavel_label),
    size = 1.8
  ) +
  scale_color_manual(values = c(
    "Volume (crescimento real)" = "#2c7fb8",
    "Deflator (efeito preços)"  = "#d95f02"
  )) +
  scale_x_continuous(breaks = seq(2001, 2021, 2)) +
  labs(
    title    = "PIB do Brasil: crescimento real (volume) vs efeito de preços (deflator)",
    subtitle = "Variação anual, 2001–2021 — áreas sombreadas marcam períodos de crise",
    x = NULL, y = "Variação (%)", color = NULL
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")

Análise: Este gráfico compara o crescimento real do PIB (volume) com o efeito de preços (deflator) ao longo de 2001-2021, destacando os períodos de crise (faixas sombreadas). Observa-se que, em momentos de crise — como a crise financeira global de 2008-2009, a recessão de 2014-2016 e a pandemia de COVID-19 em 2020 —, a linha de volume (crescimento real) apresenta quedas acentuadas, evidenciando a sensibilidade da economia brasileira a choques externos e internos. Já o deflator tende a se comportar de forma mais estável ou até inversa em alguns momentos, mostrando que parte da variação do PIB nominal é explicada por efeitos de preços (inflação) e não necessariamente por crescimento real da produção. Essa distinção é fundamental para entender se o “crescimento” econômico observado em determinado ano é genuíno ou apenas nominal.

DEFININDO AS SUBFASES

deflator_volume_fases <- deflator_volume %>%
  filter(variavel_label == "Volume (crescimento real)") %>%
  mutate(
    fase = case_when(
      ano >= 2001 & ano <= 2008 ~ "2001-2008\nBoom de commodities",
      ano >= 2009 & ano <= 2014 ~ "2009-2014\nEstabilidade pós-crise",
      ano >= 2015 & ano <= 2016 ~ "2015-2016\nRecessão",
      ano >= 2017 & ano <= 2021 ~ "2017-2021\nRecuperação e pandemia",
      TRUE ~ NA_character_
    ),
    fase = factor(fase, levels = c(
      "2001-2008\nBoom de commodities",
      "2009-2014\nEstabilidade pós-crise",
      "2015-2016\nRecessão",
      "2017-2021\nRecuperação e pandemia"
    ))
  ) %>%
  filter(!is.na(fase))

VOLATILIDADE (DESVIO-PADRÃO) POR SUBFASE

volatilidade_fases <- deflator_volume_fases %>%
  group_by(fase) %>%
  summarise(
    media_crescimento = mean(valor),
    desvio_padrao      = sd(valor),
    minimo             = min(valor),
    maximo             = max(valor),
    n_anos             = n(),
    .groups = "drop"
  )

volatilidade_fases
# A tibble: 4 × 6
  fase                      media_crescimento desvio_padrao minimo maximo n_anos
  <fct>                                 <dbl>         <dbl>  <dbl>  <dbl>  <int>
1 "2001-2008\nBoom de comm…              3.72         1.89     1.1    6.1      8
2 "2009-2014\nEstabilidade…              2.8          2.76    -0.1    7.5      6
3 "2015-2016\nRecessão"                 -3.4          0.141   -3.5   -3.3      2
4 "2017-2021\nRecuperação …              1.16         2.89    -3.3    4.8      5

Análise: A tabela de volatilidade por subfase resume estatisticamente o comportamento do crescimento real do PIB em quatro períodos distintos da economia brasileira recente. Espera-se que a fase de “Boom de commodities” (2001-2008) apresente médias de crescimento mais altas, refletindo o ciclo favorável de preços internacionais de matérias-primas. Já a fase de “Recessão” (2015-2016) deve mostrar médias negativas e maior desvio-padrão, indicando tanto contração econômica quanto maior instabilidade. A fase de “Recuperação e pandemia” (2017-2021) provavelmente concentra a maior volatilidade de todo o período, já que combina anos de recuperação gradual com o choque abrupto da pandemia em 2020.

GRÁFICO — VOLATILIDADE POR SUBFASE

ggplot(volatilidade_fases, aes(x = fase, y = desvio_padrao, fill = fase)) +
  geom_col(width = 0.6) +
  geom_text(aes(label = round(desvio_padrao, 1)), vjust = -0.5, size = 3.5) +
  scale_fill_brewer(palette = "Set2") +
  labs(
    title    = "Volatilidade do crescimento real do PIB por subfase",
    subtitle = "Desvio-padrão da variação anual do volume, 2001-2021",
    x = NULL, y = "Desvio-padrão (pontos percentuais)"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

Análise: O gráfico de barras evidencia de forma direta qual subfase apresentou maior instabilidade no crescimento do PIB. Quanto maior o desvio-padrão, maior a imprevisibilidade da economia naquele período — o que geralmente coincide com momentos de crise ou transição econômica. Esse tipo de visualização é útil para identificar não apenas se a economia cresceu ou encolheu, mas também o quão “turbulento” foi esse processo, o que é relevante para análises de risco e planejamento de políticas públicas.

BOXPLOT DA DISTRIBUIÇÃO POR SUBFASE

ggplot(volatilidade_fases, aes(x = fase)) +
  geom_segment(aes(y = minimo, yend = maximo, xend = fase),
               color = "grey70", linewidth = 1.5) +
  geom_point(aes(y = media_crescimento), size = 5, color = "#2c7fb8") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey50") +
  labs(
    title    = "Variação do crescimento real do PIB por subfase",
    subtitle = "A linha mostra o intervalo (mínimo–máximo); o ponto é a média da fase",
    x = NULL, y = "Variação anual do volume (%)"
  ) +
  theme_minimal(base_size = 12) +
  theme(panel.grid.minor = element_blank())

Análise: Esse gráfico de intervalo (mínimo-máximo) com a média destacada complementa a análise de volatilidade, mostrando não apenas a dispersão dos valores, mas também a posição central do crescimento em cada subfase. Linhas mais longas indicam maior amplitude entre o melhor e o pior ano da fase, enquanto a posição do ponto (média) em relação à linha pontilhada no zero revela se, em média, a fase representou crescimento ou retração da economia. A fase de recessão deve se destacar com a média mais próxima ou abaixo de zero, enquanto a fase de boom de commodities deve apresentar a média mais distante e positiva.

COLETA — ÍNDICE DE COMMODITIES BRASIL (IC-Br)

library(httr)
Warning: pacote 'httr' foi compilado no R versão 4.5.3
library(lubridate)

url_icbr <- "https://api.bcb.gov.br/dados/serie/bcdata.sgs.29042/dados?formato=csv&dataInicial=01/01/2000&dataFinal=31/12/2021"

icbr_raw <- read.csv2(url_icbr, stringsAsFactors = FALSE)

icbr_anual <- icbr_raw %>%
  mutate(
    data  = as.Date(data, format = "%d/%m/%Y"),
    ano   = year(data),
    valor = as.numeric(valor)
  ) %>%
  group_by(ano) %>%
  summarise(indice_medio = mean(valor, na.rm = TRUE), .groups = "drop") %>%
  arrange(ano) %>%
  mutate(variacao_icbr = (indice_medio / lag(indice_medio) - 1) * 100) %>%
  filter(ano >= 2001, ano <= 2021)

JUNTANDO PIB REAL E COMMODITIES

comparacao_pib_commodities <- deflator_volume %>%
  filter(variavel_label == "Volume (crescimento real)") %>%
  select(ano, crescimento_pib = valor) %>%
  left_join(icbr_anual %>% select(ano, variacao_icbr), by = "ano")

GRÁFICO — PIB REAL x PREÇO DE COMMODITIES (BARRAS)

comparacao_long <- comparacao_pib_commodities %>%
  pivot_longer(
    cols = c(crescimento_pib, variacao_icbr),
    names_to  = "variavel",
    values_to = "valor"
  ) %>%
  mutate(
    variavel = case_when(
      variavel == "crescimento_pib" ~ "PIB real (volume)",
      variavel == "variacao_icbr"   ~ "Preço de commodities (IC-Br)",
      TRUE ~ variavel
    )
  )

ggplot(comparacao_long, aes(x = ano, y = valor, fill = variavel)) +
  geom_col(position = "dodge") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey50") +
  scale_fill_manual(values = c(
    "PIB real (volume)"            = "#2c7fb8",
    "Preço de commodities (IC-Br)" = "#d95f02"
  )) +
  scale_x_continuous(breaks = seq(2001, 2021, 2)) +
  labs(
    title    = "PIB real vs preço de commodities (IC-Br)",
    subtitle = "Variação anual, 2001–2021",
    x = NULL, y = "Variação (%)", fill = NULL
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")

Análise: O gráfico final compara o crescimento real do PIB brasileiro com a variação do Índice de Commodities Brasil (IC-Br), permitindo avaliar o grau de dependência da economia nacional em relação aos preços internacionais de matérias-primas. Espera-se observar certa correlação positiva entre as duas séries: em anos de alta nos preços de commodities (como durante o boom de 2003-2008), o PIB tende a crescer mais fortemente, impulsionado pelas exportações e pela renda gerada no setor agropecuário e de mineração. Já em períodos de queda nos preços internacionais, o PIB também tende a desacelerar, evidenciando a vulnerabilidade da economia brasileira a choques externos relacionados a commodities — um padrão recorrente em economias com forte pauta exportadora de produtos primários.