Análise do Crescimento Econômico Brasileiro

Conclusão, Importância e Relevância do Projeto

Author

julia, marilia, eduarda





Introdução

O Brasil viveu, entre 2001 e 2021, duas décadas marcadas por extremos: um longo ciclo de expansão alimentado pelo boom de commodities, duas recessões profundas e uma pandemia sem precedentes. Compreender esse trajeto exige ir além dos números agregados — é preciso olhar onde o crescimento ocorreu, quando foi real e até que ponto dependeu de fatores externos.

Este trabalho apresenta uma análise integrada da economia brasileira a partir de três perspectivas complementares: a dimensão espacial, mapeando o PIB e o Valor Adicionado Bruto dos 27 estados; a dimensão temporal, decompondo o crescimento em volume real e efeito de preços ao longo de 21 anos; e a dimensão estrutural, investigando a relação entre o desempenho econômico e os ciclos de preços de commodities.

Toda a análise utiliza dados públicos oficiais do IBGE/SIDRA e do Banco Central do Brasil, com código aberto e totalmente reproduzível em R.


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

Coleta de dados

Os dados do PIB e do Valor Adicionado Bruto (VAB) estadual foram obtidos diretamente da API do IBGE via pacote sidrar, referentes à Tabela 5938 do Sistema IBGE de Recuperação Automática (SIDRA). Foram coletadas seis variáveis econômicas para os 27 estados brasileiros nos anos de 2002 e 2021, permitindo uma comparação de duas décadas de transformação regional.

As variáveis coletadas cobrem os principais componentes da renda nacional pelo método da produção: PIB a preços correntes, VAB da agropecuária, da indústria, dos serviços, da administração pública e os impostos líquidos sobre produtos.


── 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

A etapa de limpeza padroniza os rótulos das variáveis e converte os tipos de dados para formatos adequados à análise. O uso de case_when com expressões regulares (grepl) garante que cada variável seja classificada em uma categoria interpretável, independentemente de variações textuais na descrição original do IBGE.


── 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
    )
  )


Após a limpeza, o conjunto de dados conta com seis variáveis econômicas devidamente rotuladas para os 27 estados, prontas para visualização e análise espacial.


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 ───────────────────────────────────────────────────────────────────


A malha cartográfica dos estados brasileiros foi obtida via pacote geobr, que disponibiliza dados geoespaciais oficiais do IBGE. A versão de 2020 é utilizada por ser a mais recente disponível e por refletir os limites territoriais vigentes no período analisado.


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

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


Para garantir consistência visual e reprodutibilidade, foi criada uma função genérica gerar_mapa() que recebe como parâmetros a variável de interesse, o ano e opções de formatação e paleta de cores. Isso evita repetição de código e facilita a atualização dos mapas.

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 ─────────────────────────────────────────────────────────────

As funções de formatação garantem que os valores dos mapas sejam apresentados de forma clara e contextualizada para o leitor. Os valores do PIB e VAB são expressos em bilhões de reais, facilitando a leitura sem perda de precisão analítica.

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


A série 2001–2021 pode ser dividida em quatro subfases com características econômicas distintas. Essa periodização permite avaliar não apenas o crescimento médio de cada fase, mas também sua estabilidade e previsibilidade.


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)


O Índice de Commodities Brasil (IC-Br), calculado pelo Banco Central do Brasil, mede a evolução dos preços das principais commodities exportadas pelo país. Sua correlação com o PIB real é um indicador direto da dependência estrutural da economia brasileira ao mercado externo.

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.

CONCLUSÃO


Ao longo desta análise, percorremos duas décadas de crescimento econômico brasileiro sob três ângulos complementares — espacial, temporal e estrutural — construindo uma leitura integrada do que o Brasil produziu, onde produziu e em quais condições esse crescimento foi sustentável.

O que os dados revelaram

Sobre o território, os mapas estaduais confirmam uma concentração regional que resistiu ao tempo: o Sudeste manteve a liderança industrial e de serviços durante todo o período, enquanto o Centro-Oeste consolidou sua posição como potência agropecuária. O Nordeste e o Norte avançaram, mas apoiados majoritariamente no setor público — uma base frágil e dependente de decisões orçamentárias federais. A desigualdade espacial da riqueza brasileira não diminuiu de forma estrutural entre 2002 e 2021.

Sobre o crescimento real, a decomposição volume-deflator revelou que parte expressiva da expansão nominal do PIB foi impulsionada por efeitos de preços — sobretudo nos anos de boom de commodities. O crescimento genuíno, medido pelo índice de volume, foi mais modesto e mais concentrado nos anos 2001–2008. A recessão de 2015–2016 expôs a fragilidade de um modelo de crescimento que dependia simultaneamente de preços externos favoráveis e de estímulos fiscais domésticos insustentáveis.

Sobre a dependência estrutural, a comparação entre o PIB real e o Índice de Commodities Brasil (IC-Br) revelou uma assimetria crítica: as quedas nos preços de commodities transmitem-se com força para a atividade real, enquanto as altas nem sempre geram crescimento proporcional. Esse padrão é característico de economias com baixa diversificação produtiva e elevada exposição ao ciclo externo de matérias-primas.

O que os resultados sugerem

Os dados apontam para três desafios estruturais que o Brasil carregou por todo o período analisado e que seguem sem solução definitiva:

1. Concentração regional persistente — o crescimento não convergiu entre estados ricos e pobres de forma consistente. Políticas de desenvolvimento regional precisam ir além de transferências fiscais e investir em capacidade produtiva local.

2. Crescimento dependente de preços externos — a economia brasileira cresce quando o mundo paga bem pelas suas commodities e contrai quando os preços caem. Superar essa vulnerabilidade exige diversificação industrial e aumento do valor agregado nas exportações.

3. Volatilidade crescente — a última subfase (2017–2021) apresentou a maior instabilidade de todo o período, combinando recuperação frágil, incerteza política e choque pandêmico. Estabilidade macroeconômica é condição necessária — mas não suficiente — para o crescimento sustentado.


Importância do Projeto

Esta análise vai além de um exercício técnico em R. Ela responde a perguntas que têm consequências diretas para a vida de milhões de brasileiros e para as decisões de gestores públicos, pesquisadores e formuladores de política econômica.

Para a gestão pública

Compreender onde o crescimento ocorreu e por que ele foi desigual é o primeiro passo para desenhar políticas regionais mais eficazes. Estados que dependem do setor público como motor econômico precisam de estratégias de diversificação produtiva — e este projeto oferece evidências geoespaciais concretas para orientar essas escolhas.

A decomposição volume-deflator é especialmente valiosa para gestores fiscais: ela permite distinguir receitas tributárias que refletem crescimento real daquelas que são efeito temporário de preços — uma distinção crucial para o planejamento orçamentário de longo prazo.

Para pesquisadores e acadêmicos

O projeto demonstra como é possível construir uma análise macroeconômica robusta inteiramente com dados públicos e código aberto. A combinação de SIDRA, geobr e IC-Br em um único pipeline reproduzível em R representa uma contribuição metodológica relevante para a economia regional brasileira.

Ao estruturar a série em subfases históricas e correlacioná-las com indicadores de commodities, o projeto oferece um ponto de partida sólido para investigações mais aprofundadas sobre os determinantes do crescimento econômico brasileiro — hipóteses testáveis, dados organizados, visualizações prontas.

Para a sociedade

Crescimento econômico não é um conceito abstrato: ele determina a disponibilidade de empregos, a qualidade dos serviços públicos e o poder de compra das famílias. Ao tornar essa análise acessível, visual e reproduzível, o projeto cumpre um papel de transparência e educação econômica — permitindo que cidadãos, jornalistas e estudantes compreendam os ciclos que moldaram o Brasil nas últimas duas décadas.