CGIg/CNIg e SINCRE: analisando os microdados do OBMigra
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:
catalog_obmigra
: lista os dados do site em um catálogo;datavault_obmigra
: baixa os arquivos de dados brutos para um diretório local específico;build_obmigra
: constrói a base de dadosmonetdb_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:
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:
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ô.
Sim, esse é o nome dele.↩︎