Pacotes

library(loadinstall)

packages <- c("haven", "readr", "ggplot2", "ggrepel", "ggthemes", 
  "tidyr", "tidyverse", "sidrar", "rbcb", "readxl", "lubridate", 
  "sjPlot", "sjstats", "broom", "kableExtra", "modelsummary", "kableExtra", "plm", "AER", "zoo", "readr", "ggplot2", "methods", "ggthemes", 
  "directlabels", "ggrepel", "readxl", "haven", "dplyr", "knitr", "tidyr", 
  "gghighlight", "fixest", "modelsummary", "basedosdados", "DBI", 
  "data.table", "did", "lubridate", "stargazer", "bigrquery", "stringi", "sidrar", "viridis",
  "broom", "data.table", "sp", "sf", "ggspatial", "arrow")

lapply(packages, dynamic_require)
set_billing_id("1055074884926")
bq_auth()

con <- dbConnect(
  bigrquery::bigquery(),
  billing = "1055074884926",
  project = "My First Project"
)

#4 leonardocardoso@ufv.br

Proporção de Venezuelanos

d <- basedosdados::read_sql('
 SELECT nacionalidade 
 FROM `basedosdados.br_me_rais.microdados_vinculos`
 WHERE ano BETWEEN 2020 AND 2021 
   AND sigla_uf = "RO"
   AND SAFE_CAST(nacionalidade AS STRING) != "10"
 LIMIT 1000
')

O código dos venezuelanos é o 26.

d2 <- basedosdados::read_sql('
 SELECT 
    ano,
    COUNT(*) as total_vinculos,
    SUM(CASE WHEN CAST(nacionalidade AS STRING) = "26" THEN 1 ELSE 0 END) as venezuelanos
 FROM `basedosdados.br_me_rais.microdados_vinculos`
 WHERE ano BETWEEN 2010 AND 2024
 GROUP BY ano
 ORDER BY ano
')

save(d2, file="d2.Rda")
load("d2.Rda")
# Calcular a proporção
dados <- d2 %>%
  mutate(proporcao_venezuelanos = (venezuelanos / total_vinculos) * 100)

# Verificar os resultados
print(dados)
## # A tibble: 15 × 4
##        ano total_vinculos venezuelanos proporcao_venezuelanos
##    <int64>        <int64>      <int64>                  <dbl>
##  1    2010       66747302            0               0       
##  2    2011       70971125          453               0.000638
##  3    2012       73326485          598               0.000816
##  4    2013       75400510          771               0.00102 
##  5    2014       76107279          952               0.00125 
##  6    2015       72175102         1376               0.00191 
##  7    2016       67144598         1997               0.00297 
##  8    2017       65655882         4143               0.00631 
##  9    2018       66214692        10704               0.0162  
## 10    2019       66667417        28910               0.0434  
## 11    2020       65921194        51612               0.0783  
## 12    2021       70521981        87494               0.124   
## 13    2022       78488470       148892               0.190   
## 14    2023       81537467       221378               0.272   
## 15    2024       72782072       316750               0.435
ggplot(dados, aes(x = factor(ano), y = proporcao_venezuelanos * 10)) +
  geom_col(fill = "darkgreen", alpha = 0.8, width = 0.6) +
  geom_text(aes(label = paste0(round(proporcao_venezuelanos * 10, 1), "‰")), 
            vjust = -0.5, size = 5) +
  labs(
    title = "Proporção de Venezuelanos na RAIS - Brasil",
    subtitle = "Proporção por mil em relação ao total de vínculos formais por ano",
    x = "",
    y = "Proporção de Venezuelanos (‰)",
    caption = "Fonte: RAIS/BasedosDados"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 14),
    axis.title = element_text(size = 12),
    panel.grid.major.x = element_blank()
  )

ggplot(dados, aes(x = factor(ano), y = venezuelanos)) +
  geom_col(fill = "darkgreen", alpha = 0.8, width = 0.6) +
  geom_text(aes(label = paste0(round(venezuelanos/1000, 0), "")), 
            vjust = -0.5, size = 5) +
  labs(
    title = "Total de Venezuelanos na RAIS - Brasil",
    x = "",
    y = "Número de Venezuelanos (milhares)",
    caption = "Fonte: RAIS/BasedosDados"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 14),
    axis.title = element_text(size = 12),
    panel.grid.major.x = element_blank()
  )
## Don't know how to automatically pick scale for object of type <integer64>.
## Defaulting to continuous.

# Consulta por cidade para 2024
d3 <- basedosdados::read_sql('
 SELECT 
    sigla_uf,
    id_municipio,
    COUNT(*) as total_vinculos,
    SUM(CASE WHEN CAST(nacionalidade AS STRING) = "26" THEN 1 ELSE 0 END) as venezuelanos
 FROM `basedosdados.br_me_rais.microdados_vinculos`
 WHERE ano = 2024
 GROUP BY sigla_uf, id_municipio
')

# Salvar os dados
save(d3, file = "d3.Rda")
load("d3.Rda")
library(geobr)
library(ggplot2)
library(dplyr)
library(sf)
# Carregar o shapefile dos municípios
muni <- read_municipality(code_muni = "all", year = 2020)


# Converter os códigos para o mesmo tipo (character)
muni$code_muni <- as.character(muni$code_muni)
d3$id_municipio <- as.character(d3$id_municipio)

# Fazer o merge dos dados com o shapefile
dados_mapa <- muni %>%
  left_join(d3, by = c("code_muni" = "id_municipio"))

# Calcular a proporção de venezuelanos (evitando divisão por zero)
dados_mapa <- dados_mapa %>%
  mutate(
    proporcao_venezuelanos = ifelse(total_vinculos > 0, 
                                   (venezuelanos / total_vinculos) * 1000, 
                                   0)
  )
library(ggplot2)
library(dplyr)
library(sf)

# Criar categorias para a proporção por mil com intervalos
dados_mapa <- dados_mapa %>%
  mutate(
    proporcao_venezuelanos = ifelse(total_vinculos > 0, 
                                   (venezuelanos / total_vinculos) * 1000, 
                                   0),
    # Criar categorias com intervalos
    categoria_proporcao = case_when(
      proporcao_venezuelanos == 0 ~ "0",
      proporcao_venezuelanos > 0 & proporcao_venezuelanos <= 0.5 ~ "0 - 0.5",
      proporcao_venezuelanos > 0.5 & proporcao_venezuelanos <= 1 ~ "0.5 - 1",
      proporcao_venezuelanos > 1 & proporcao_venezuelanos <= 2 ~ "1 - 2",
      proporcao_venezuelanos > 2 & proporcao_venezuelanos <= 5 ~ "2 - 5",
      proporcao_venezuelanos > 5 & proporcao_venezuelanos <= 10 ~ "5 - 10",
      proporcao_venezuelanos > 10 & proporcao_venezuelanos <= 50 ~ "10 - 50",
      proporcao_venezuelanos > 50 & proporcao_venezuelanos <= 100 ~ "50 - 100",
      proporcao_venezuelanos > 100 & proporcao_venezuelanos <= 200 ~ "100 - 200",
      proporcao_venezuelanos > 200 ~ ">200",
      TRUE ~ "Sem dados"
    ),
    # Ordenar as categorias para a legenda
    categoria_proporcao = factor(categoria_proporcao,
                                levels = c("0", "0 - 0.5", "0.5 - 1", "1 - 2", "2 - 5", 
                                         "5 - 10", "10 - 50", "50 - 100", "100 - 200", 
                                         ">200", "Sem dados"))
  )

# Filtrar apenas municípios com venezuelanos para melhor visualização
dados_com_venezuelanos <- dados_mapa %>% 
  filter(venezuelanos > 0)

# Definir cores para cada categoria (escala plasma)
cores_categorias <- c(
  "0" = "lightgray",
  "0 - 0.5" = "#FCFDBF",
  "0.5 - 1" = "#FEC98F",
  "1 - 2" = "#FD9567",
  "2 - 5" = "#F1605D",
  "5 - 10" = "#CD4071",
  "10 - 50" = "#9F2F7F",
  "50 - 100" = "#721F81",
  "100 - 200" = "#451077",
  ">200" = "#180F3E",
  "Sem dados" = "white"
)

# Criar o mapa com categorias
ggplot() +
  # Fundo cinza para todos os municípios
  geom_sf(data = dados_mapa, fill = "lightgray", color = NA, size = 0.1) +
  # Municípios com venezuelanos coloridos por categoria
  geom_sf(data = dados_com_venezuelanos, 
          aes(fill = categoria_proporcao), 
          color = NA, size = 0.1) +
  scale_fill_manual(
    name = "Venezuelanos\n(por mil)",
    values = cores_categorias,
    drop = FALSE
  ) +
  labs(
    title = "Proporção de Venezuelanos por Município - 2024",
    subtitle = "Venezuelanos por mil vínculos formais",
    caption = "Fonte: RAIS/BasedosDados | Geobr"
  ) +
  theme_void() +
  theme(
    plot.title = element_text(size = 14, hjust = 0.5),
    plot.subtitle = element_text(size = 10, hjust = 0.5),
    plot.caption = element_text(size = 8, hjust = 0.5),
    legend.position = "right",
    legend.title = element_text(size = 10),
    legend.text = element_text(size = 8)
  )