Renda, Escolaridade e Mercado de Trabalho por Estado

Author

Alice Ferreira e Ana Deyrelle

Pacotes

library(sidrar)
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(stringr)
library(tidyr)
library(ggplot2)
library(DT)
library(geobr)
library(sf)
Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.4.0; sf_use_s2() is TRUE

1. Renda vs. Escolaridade por Estado

1.1 Baixando os dados

# Dados de Rendimento (Tabela 7443)
dados_renda <- get_sidra(api = "/t/7443/n1/all/n3/all/v/10774/p/2020,2025/c1568/120704")
All others arguments are desconsidered when 'api' is informed
# Dados de Escolaridade (Tabela 7132)
dados_escolaridade <- get_sidra(api = "/t/7132/n1/all/n3/all/v/1641/p/2019,2025/c86/95251/c71/95309")
All others arguments are desconsidered when 'api' is informed

1.2 Limpando e unindo as tabelas

# Renda - Ano 2025, removendo o agregado Brasil
renda_limpa <- dados_renda %>%
  filter(Ano == "2025", `Brasil e Unidade da Federação` != "Brasil") %>%
  select(Estado = `Brasil e Unidade da Federação`, Renda = Valor)

# Escolaridade - Ano 2025, removendo o agregado Brasil
escolaridade_limpa <- dados_escolaridade %>%
  filter(Ano == "2025", `Brasil e Unidade da Federação` != "Brasil") %>%
  select(Estado = `Brasil e Unidade da Federação`, Taxa_Escolaridade = Valor)

# Unindo pelo nome do Estado
dados_analise1 <- inner_join(renda_limpa, escolaridade_limpa, by = "Estado")

head(dados_analise1)
    Estado Renda Taxa_Escolaridade
1 Rondônia  3362              1392
2     Acre  2794               653
3 Amazonas  2733              3226
4  Roraima  3438               486
5     Pará  2508              6748
6    Amapá  3089               612

1.3 Gráfico: Renda vs. Escolaridade

grafico1 <- ggplot(dados_analise1, aes(x = Renda, y = Taxa_Escolaridade)) +
  geom_point(color = "#2c3e50", size = 3, alpha = 0.7) +
  geom_smooth(method = "lm", color = "#e74c3c", se = FALSE, linewidth = 1.2) +
  theme_minimal() +
  labs(
    title = "Relação entre Nível de Renda e Escolaridade por Estado (2025)",
    x = "Rendimento Médio Real Domiciliar per Capita (R$)",
    y = "Taxa de Escolaridade / Instrução (%)",
    caption = "Fonte: IBGE / SIDRA"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    axis.title = element_text(face = "bold")
  )

print(grafico1)
`geom_smooth()` using formula = 'y ~ x'
Figure 1: Relação entre Renda e Escolaridade por Estado (2025)

1.4 Tabela interativa

tabela1 <- datatable(
  dados_analise1,
  colnames = c("Estado", "Rendimento per Capita (R$)", "Escolaridade (%)"),
  options = list(pageLength = 10, order = list(list(1, "desc"))),
  rownames = FALSE
)

tabela1
Table 1

1.5 Mapa: Escolaridade por Estado

mapa_estados <- read_state(year = 2020, showProgress = FALSE)
ℹ Using year/date 2020
dados_mapa1 <- mapa_estados %>%
  rename(Estado = name_state) %>%
  inner_join(dados_analise1, by = "Estado")

mapa_escolaridade <- ggplot(dados_mapa1) +
  geom_sf(aes(fill = Taxa_Escolaridade), color = "white", linewidth = 0.1) +
  scale_fill_viridis_c(option = "mako", name = "Escolaridade (%)") +
  theme_void() +
  labs(
    title = "Distribuição da Taxa de Escolaridade por Estado (2025)",
    caption = "Fonte: IBGE / geobr"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5)
  )

print(mapa_escolaridade)
Figure 2: Distribuição da Taxa de Escolaridade por Estado (2025)

2. Mercado de Trabalho: Formal vs. Informal

2.1 Baixando os dados

dados_mercado_completo <- get_sidra(api = "/t/4097/n1/all/n3/all/v/4090/p/202001,202002,202003,202004,202601/c11913/all")
All others arguments are desconsidered when 'api' is informed

2.2 Limpando os dados

dados_analise2 <- dados_mercado_completo %>%
  filter(Trimestre == "1º trimestre 2026", `Brasil e Unidade da Federação` != "Brasil") %>%
  select(
    Estado = `Brasil e Unidade da Federação`,
    Categoria = `Posição na ocupação e categoria do emprego no trabalho principal`,
    Percentual = Valor
  ) %>%
  filter(str_detect(Categoria, "com carteira|sem carteira|informal|Ocupado informal"))

head(dados_analise2)
    Estado
1 Rondônia
2 Rondônia
3 Rondônia
4 Rondônia
5 Rondônia
6 Rondônia
                                                                                                            Categoria
1                     Empregado no setor privado, exclusive trabalhador doméstico - com carteira de trabalho assinada
2                     Empregado no setor privado, exclusive trabalhador doméstico - sem carteira de trabalho assinada
3                                                           Trabalhador doméstico - com carteira de trabalho assinada
4                                                           Trabalhador doméstico - sem carteira de trabalho assinada
5 Empregado no setor público, exclusive militar e funcionário público estatutário - com carteira de trabalho assinada
6 Empregado no setor público, exclusive militar e funcionário público estatutário - sem carteira de trabalho assinada
  Percentual
1        259
2        107
3          9
4         35
5         14
6         27

2.3 Gráfico: Formal vs. Informal por Estado

grafico2 <- ggplot(dados_analise2, aes(x = reorder(Estado, Percentual), y = Percentual, fill = Categoria)) +
  geom_bar(stat = "identity", position = "stack") +
  coord_flip() +
  scale_fill_brewer(palette = "Set2", name = "Tipo de Ocupação") +
  theme_minimal() +
  labs(
    title = "Comparativo de Ocupação Formal vs. Informal por Estado (2026)",
    x = "Estado",
    y = "Percentual (%)",
    caption = "Fonte: IBGE / PNAD Contínua (Tabela 4097)"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    legend.position = "bottom",
    axis.text.y = element_text(size = 9)
  )

print(grafico2)
Figure 3: Comparativo de Ocupação Formal vs. Informal por Estado (2026)

2.4 Tabela interativa (formato largo)

dados_tabela2 <- dados_analise2 %>%
  pivot_wider(names_from = Categoria, values_from = Percentual)

tabela2 <- datatable(
  dados_tabela2,
  options = list(pageLength = 10, order = list(list(1, "asc"))),
  rownames = FALSE
)

tabela2
Table 2

2.5 Mapa: Mercado de Trabalho por Estado

dados_mapa2 <- mapa_estados %>%
  rename(Estado = name_state) %>%
  inner_join(dados_tabela2, by = "Estado")

# Ajuste este nome pelo exato de uma das colunas de dados_tabela2, se necessário
coluna_interesse <- colnames(dados_tabela2)[2]

mapa_mercado <- ggplot(dados_mapa2) +
  geom_sf(aes(fill = .data[[coluna_interesse]]), color = "white", linewidth = 0.1) +
  scale_fill_viridis_c(option = "plasma", name = "Percentual (%)") +
  theme_void() +
  labs(
    title = paste("Distribuição Regional:", coluna_interesse, "(2026)"),
    caption = "Fonte: IBGE / PNAD Contínua"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 12, hjust = 0.5)
  )

print(mapa_mercado)
Figure 4: Distribuição Regional do Mercado de Trabalho (2026)