O assunto de hoje são os microdados do OBMigra. Mas, antes disso, vamos apresentar um pouco do contexto institucional.

OBMigra

O Observatório das migrações internacionais (OBMigra) é fruto de um convênio estabelecido entre o Ministério do Trabalho (MTb), Conselho Nacional de Imigração (CNIg) e Universidade de Brasília (UnB). Sua finalidade é ampliar o conhecimento a respeito dos fluxos migratórios internacionais no Brasil, através de estudos e análises empíricas, e fornecer subsídios para a formulação de estratégias de política pública.

As principais bases de dados fornecidas pelo OBMigra são:

  • SINCRE
  • CGIg/CNIg

Vamos fazer uma breve introdução ao que cada base contém.

SINCRE

A base do Sistema Nacional de Cadastramento de Registro de Estrangeiros (SINCRE) é fruto da compilação de registros administrativos realizados pela Polícia Federal. Ele traz a lista de estrangeiros que entraram com pedido de cadastro para a emissão do Registro Nacional de Estrangeiro (RNE).

CGIg/CNIg

A base da Coordenação Geral de Imigração (CGIg) é uma compilação dos estrangeiros que protocolaram pedido de autorização de trabalho no Brasil, seja ele temporário ou permanente. Por sua vez, a base do Conselho Nacional de Imigração (CNIg) – órgão responsável por tratar os casos especiais ou omissos nas Resoluções Normativas (RN) da CGIg, é semelhante à da CGIg.

Uma característica interessante das bases acima é que elas trazem o amparo legal que baseia o pedido, o que pode ser muito interessante para pesquisa empírica em Direito, por exemplo. Fica a dica para quem gosta do assunto.

Na prática

Para facilitar o processo de baixar e montar a base de dados, escrevi esse script com quatro funções para facilitar esse procedimento:

  1. catalog_obmigra: lista os dados do site em um catálogo;
  2. datavault_obmigra: baixa os arquivos de dados brutos para um diretório local específico;
  3. build_obmigra: constrói a base de dados
  4. monetdb_obmigra: constrói a base de dados em SQL a partir dos arquivos.

A função datavault_obmigra é opcional, mas ajuda bastante caso você não queira repetir os downloads toda vez que precisar montar a base de novo. O bloco de código abaixo mostra como fazer essa tarefa:

# define diretórios
output_dir <- file.path( tempdir() , "OBMigra" ) 
datavault_dir <- file.path( tempdir() , "OBMigra_DV" ) 

# carrega funções
downloader::source_url( "https://raw.githubusercontent.com/guilhermejacob/guilhermejacob.github.io/master/scripts/obmigra.R" , prompt = FALSE )

# cria catálogo de dados
catalog <- catalog_obmigra( output_dir = output_dir )

# cria datavault
# esse passo é opcional!
catalog <- datavault_obmigra( catalog = catalog, datavault_dir = datavault_dir )

# constrói base de dados
build_obmigra( catalog = catalog )

# monta base de dados monetdb
# este passo é opcional, mas depende da build_obmigra.
# use apenas se você quiser a base em MonetDB
monetdb_obmigra(catalog)

Caso você já conheça linguagem SQL, pode conectar direto à base de dados e enviar as queries.
Caso contrário, não se desespere! Se você conhece um pouco do dplyr, já é o suficiente para analisar utilizando o seu “pacote irmão” dbplyr. Vejamos:

# carrega os pacotes necessários
library( DBI )
library( MonetDBLite )
library( dplyr )
library( dbplyr )
library( tidyr )

# conecta com a base de dados
con <- dbConnect( MonetDBLite() , file.path( output_dir , "MonetDB" ) )

# lista tabelas na base
dbListTables( con )


# cria referência para tabela de registros do SINCRE
sincre <- tbl( con , "sincre" )

# dá uma olhada na tabela
sincre

# cria variável ano_reg
sincre <- sincre %>% mutate( ano_reg = substr( data_registro , 1 , 4 ) )

# número total de estrangeiros, segundo classificação, por ano de registro, 2000-2014.
sincre %>% 
  filter( ano_reg >= 2000 & ano_reg <= 2014 ) %>%
  group_by( ano_reg , classificacao ) %>% 
  summarise( nobs = n() ) %>% 
  arrange( ano_reg , classificacao ) %>% 
  data.frame() %>% 
  spread( . , key = ano_reg , value = nobs , fill = 0 )

#   classificacao  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014
# 1       ASILADO     0     1     0     0     1     1     0     0     0     0     0     0     0     0     0
# 2   FRONTEIRIÇO   204   254   169   135   540   596   479   428   420   633   694  1026  1180  1522  1828
# 3        OUTROS   158   116   121    47    69   147   141   149    93   208   146   139   194   469  1389
# 4    PERMANENTE 10708  8235  9484 12783 12297 16027 24918 18263 15379 45828 20861 27868 34382 26993 36211
# 5    PROVISÓRIO   415   138    41    20    33   114  2115   693   347  9441   959   114    48     8    24
# 6    TEMPORÁRIO 12010 12132 12116 12904 14544 16508 17642 20234 24001 32134 32492 46743 64969 83615 83194

Esses números coincidem com a Tabela 1.1.1 desse arquivo. Confira:

Tabela extraída do Anuário SINCRE
Tabela extraída do Anuário SINCRE

Agora, vamos olhar os dados do CGIg/CNIg e calcular agregados.

# cria referência para tabela de pedidos do cgig/cnig
cgig_cnig <- tbl( con , "cgig_cnig" )

# dá uma olhada em como a tabela parece
cgig_cnig

# número de autorizações de trabalho, 
# segundo manifestação, por mês em 2015
cgig_cnig %>% 
  filter( andamento %in% c( "MANIFESTAÇÃO CONTRÁRIA" , "MANIFESTAÇÃO FAVORÁVEL" ) ) %>% 
  filter( ano == 2015 ) %>% 
  group_by( mes , andamento ) %>% 
  summarise( nobs = n() ) %>% 
  arrange( mes , andamento ) %>% 
  data.frame() %>% 
  spread( . , key = mes , value = nobs , fill = 0 )
#                andamento    1   2    3   4   5   6   7   8   9  10  11  12
# 1 MANIFESTAÇÃO CONTRÁRIA  620 728 1134 936 528 128 500 741 575 169  85  63
# 2 MANIFESTAÇÃO FAVORÁVEL 1052 936  702 430 384 680 214 325 360 156 100 125

# disconecta da base de dados
dbDisconnect( con , shutdown = TRUE )

Mas será que esses números fazem sentido? Vamos comparar com a Tabela 2.9 na página 20 deste documento:

Tabela 2.9 na publicação.
Tabela 2.9 na publicação.

Acertamos!

Presente para quem chegou até o fim do post!

A trilha sonora de hoje chama “A Vingança de Cunhã”, do Projeto Pietá. Essa letra maravilhosa do Thiago Thiago de Mello1 fala da lenda do boto, que, em noite de festa, virava moço bonito pra encantar e malinar das cunhantãs. Mas, um dia, ele cruzou com a cunhã errada.
Pra mim, essa música traz uma saudade da infância na beira do rio, ouvindo os contos do meu avô.


  1. Sim, esse é o nome dele.↩︎