Acessando dados do Censo Demográfico com o R

O Censo Demográfico é a maior operação de recenseamento no país, produzindo dados demográficos, econômicos e sociais sobre a população brasileira. Através dos microdados, menor nível de desagregação da pesquisa, podemos construir análises, fazer cruzamentos, realizar estudos e pesquisas de interesse. Neste exercício mostramos como dar o primeiro (e difícil) passo: importar os arquivos de texto formatados em ASCII no R.

Dado a complexidade e volume dos microdados, os arquivos de download são sempre acompanhados de uma documentação auxiliar que fornece os nomes, os códigos e as descrições das variáveis e suas categorias, complementada, quando necessário, dos elementos necessários para o cálculo dos erros amostrais. Ambos estes elementos, microdados e documentação, são essenciais para a correta leitura e análise de dados.

Dessa forma, neste exercício iremos exemplificar a importação dos microdados do Censo 2010, referente ao estado do Rio Grande do Sul. Para saber mais sobre os detalhes e informações do Censo, consulte o site do IBGE.

Pacotes

Para reproduzir o exercício a seguir você precisará dos seguintes pacotes:


library(lodown) # [github::ajdamico/lodown] v0.1.0
library(magrittr) # CRAN v2.0.1
library(dplyr) # CRAN v1.0.7
library(stringr) # CRAN v1.4.0
library(fs) # CRAN v1.5.0
library(SAScii) # CRAN v1.0
library(readr) # CRAN v2.0.2

Baixar dados

Existem algumas opções de acesso aos microdados do Censo Demográfico: diretamente no site, através de pacotes, de consultas em banco de dados, arquivos offline, etc. Em todos os casos, é necessário especial cuidado devido a complexidade e dimensão dos dados. Neste exemplo focaremos em reprodutibilidade, portanto, usaremos o pacote lodown que facilita o download dos arquivos de microdados e sua documentação.

A função get_catalog nos fornece diversas informações sobre os microdados abrangidos atualmente pelo pacote. Na posse dessas informações, aplicamos filtros para o Censo de 2010 referente ao estado Rio Grande do Sul e, por fim, baixamos os microdados com a função lodown:


# Buscar catálogo de microdados, aplicar filtros e baixar arquivos
catalog <- lodown::get_catalog(data_name = "censo", output_dir = "data") %>%
dplyr::filter(year == 2010, stringr::str_detect(state, "rs")) %>%
lodown::lodown(data_name = "censo")

# Arquivos baixados
fs::dir_tree(path = "data")

# data
# \-- 2010
#     \-- RS
#         +-- Amostra_Domicilios_43.txt
#         +-- Amostra_Emigracao_43.txt
#         +-- Amostra_Mortalidade_43.txt
#          \-- Amostra_Pessoas_43.txt

Importar dados

Com os arquivos disponíveis localmente, podemos prosseguir agora para a importação. Nesta etapa é importante definir quais variáveis serão de fato utilizadas - já que há um grande volume de observações que podem causar lentidão no computador por restrição de memória -, fazemos isso no objeto vars_censo. Em seguida, convertemos as instruções de importação (layout) do arquivo Amostra_Pessoas_43.txt para o formato de um data.frame, visando usar estas instruções - de largura e tipo de colunas - na importação através da função read_fwf:


# Variáveis a serem importadas
vars_censo <- c("v0001", "v0601", "v6036", "v0010", "v0011", "v0300")

# Converte arquivo de instruções de importação SAS para o R
sas_input <- SAScii::parse.SAScii(catalog$pes_sas) %>%
dplyr::mutate(varname = stringr::str_to_lower(varname))

# Importar arquivo TXT
raw_censo <- readr::read_fwf(
file = catalog$pes_file,
col_positions = readr::fwf_widths(
widths = abs(sas_input$width),
col_names = sas_input$varname
),
col_types = paste0(
ifelse(
!(sas_input$varname %in% vars_censo),
"_",
ifelse(sas_input$char, "c", "d")
),
collapse = ""
)
)

Estrutura dos dados importados:


dplyr::glimpse(raw_censo)

# Rows: 1,388,443
# Columns: 6
# $ v0001 <chr> "43", "43", "43", "43", "43", "43", "43", "43", "43", "43", "43"~
# $ v0011 <chr> "4300034001001", "4300034001001", "4300034001001", "430003400100~
# $ v0300 <dbl> 60085, 60085, 65479, 65479, 65479, 81979, 81979, 81979, 81979, 8~
# $ v0010 <dbl> 2.814269e+13, 2.814269e+13, 2.842956e+13, 2.842956e+13, 2.842956~
# $ v0601 <chr> "1", "2", "2", "2", "1", "2", "2", "1", "1", "2", "1", "2", "2",~
# $ v6036 <dbl> 31, 74, 8, 39, 39, 16, 13, 11, 9, 38, 7, 10, 31, 47, 2, 8, 6, 38~

Próximos passos

Com os dados brutos em mãos, o recomendável é usar um framework que suporte a construção de objetos que representem um desenho amostral complexo. Para essa tarefa, recomendamos o uso do pacote survey, que traz diversas facilidades e é usado amplamente, inclusive pela equipe do IBGE.

Seguindo este procedimento podemos chegar, por exemplo, a análises como essa:

Referências

Analyze Survey Data for Free: Brazilian Censo Demografico (Djalma Pessoa)

 

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Ancoragem de Expectativas da Inflação no Brasil: uma avaliação utilizando a linguagem de programação R

Expectativas ancoradas significam que a inflação permanece próxima da meta mesmo após choques relevantes, tornando menos custosa a atuação do Banco Central no combate a pressões inflacionárias. Neste exercício, analisamos diferentes medidas para avaliar a ancoragem das expectativas no Brasil, utilizando a linguagem de programação R como ferramenta para a construção desse exercício, realizando a coleta, tratamento, cálculos e visualização dos resultados.

Como fazer previsões para a inflação desagregada medida pelo IPCA?

Neste artigo investigamos se a previsão desagregada da inflação é capaz de gerar previsões mais acuradas do que a previsão agregada. Utilizamos o Índice Nacional de Preços ao Consumidor Amplo (IPCA) como medida de interesse, aplicando um modelo simples e um modelo de passeio aleatório para comparação. Todo o processo pode ser feito de maneira automatizada utilizando a linguagem de programação R.

Qual o melhor modelo para prever a inflação medida pelo IPCA?

Neste exercício, testamos 18 modelos diferentes com um conjunto fixo de regressores para previsão da taxa de inflação, medida pelo IPCA. Implementamos o método da validação cruzada, visando obter resultados robustos para comparação de métricas de performance. Apresentamos os resultados gerais e desagregados por horizontes de previsão, além de automatizar todo o processo utilizando a linguagem Python.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.