Tag

survey Archives - Análise Macro

Acessando dados do Censo Demográfico com o R

By | Data Science

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)

 

Acessando microdados da PNAD Contínua no R

By | Data Science

Os microdados da Pesquisa Nacional por Amostra de Domicílios Contínua (PNADC), produzida pelo IBGE, possuem uma riqueza enorme de informação de um conjunto de indicadores relacionados à força de trabalho no país, constituindo um verdadeiro tesouro para economistas e cientistas sociais. Esse grande volume de dados exige, por consequência, o uso de ferramentas adequadas para o tratamento, análise, visualização e sua utilização em geral. Em suma, é necessário utilizar linguagens de programação para "colocar a mão" nesses dados e, neste exercício, mostraremos como fazer isso usando o R.

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


library(PNADcIBGE) # CRAN v0.7.0
library(survey) # CRAN v4.0
library(convey) # CRAN v0.2.3
library(magrittr) # CRAN v2.0.1

1)  Importar microdados trimestrais  

Para começar o exercício, vamos importar os microdados para o environment do R usando o pacote PNADcIBGE - que foi desenvolvido pela própria equipe do IBGE. Os microdados trimestrais serão o alvo do nosso exemplo: apontamos na função get_pnadc o último período (ano/trimestre) disponível da pesquisa e, opcionalmente, as variáveis de interesse1.


# Importar online microdados do 3º trimestre de 2021
dados_pnadc <- get_pnadc(year = 2021, quarter = 3, vars = c("VD4020", "V2007"))

# Classe do objeto
class(dados_pnadc) # útil para análises de dados amostrais complexos

[1] "svyrep.design"

2)  Análise de dados

Após este simples comando de importação executado, os microdados da PNADC já estão disponíveis para fazermos uma análise. A função, inclusive, já configura o plano amostral internamente através do argumento design = TRUE - mas o usuário pode desabilitar para obter os dados brutos -, sendo assim podemos usar o pacote survey para obter, por exemplo, o total de homens e mulheres:


# Obter nº total de homens e mulheres
svytotal(x = ~V2007, design = dados_pnadc, na.rm = TRUE)

#                  total     SE
# V2007Homem   104020393 0.1207
# V2007Mulher  108787836 0.0998

Da mesma forma, e com comandos simples, o usuário pode estimar o índice de Gini a nível nacional:


# Estimar o índice de Gini
dados_pnadc %>%
convey_prep() %>%
svygini(formula = ~VD4020, na.rm = TRUE)

#           gini     SE
# VD4020 0.51625 0.0034

Diversas outras análise podem ser feitas, como esta publicada no blog da Análise Macro:

Saiba mais

Para saber mais confira os cursos aplicados de R e Python.


[1] Note que os microdados consomem espaço excepcionalmente grande na memória do computador, portanto, evite a importação sem nenhum tipo de filtro de variáveis.

 

Como estimar o índice de Gini no R

By | Data Science, Economia, Indicadores

O índice de Gini é uma medida de distribuição de renda muito interessante e conhecida, que tenta expressar em um valor único a desigualdade apresentada na curva de Lorenz. Neste exercício mostramos como podemos estimar essa medida facilmente no R.

O índice de Gini consiste em um número entre 0 e 1, onde 0 corresponde à completa igualdade e 1 corresponde à completa desigualdade e pode ser calculado com a fórmula de Brown abaixo:

Onde:

G = coeficiente de Gini
X = proporção acumulada da variável "população"
Y = proporção acumulada da variável "renda"

Para esse exercício usaremos os microdados da PNAD Contínua trimestral do IBGE, que possui a variável Rendimento mensal efetivo de todos os trabalhos (VD4020). E para tornar o exercício interessante faremos a estimação do índice de Gini por estado (UF) brasileiro.

Pacotes

Para a finalidade do exercício utilizaremos os seguintes pacotes do R, todos disponibilizados no CRAN:


# Instalar/carregar pacotes
if(!require("pacman")) install.packages("pacman")
pacman::p_load(
"PNADcIBGE",
"survey",
"convey",
"tidyverse"
)

Dados

O último trimestre da pesquisa disponível na data deste exercício é referente ao 1º trimestre de 2021. Apontamos esse período na função get_pnadc(), especificamos as variáveis desejadas para coleta e convertemos o objeto resultante para a classe convey para poder fazer a estimação:


pnadc_0121 <- PNADcIBGE::get_pnadc(year = 2021, quarter = 1, vars = c("UF", "VD4020")) %>%
convey::convey_prep()

Estimar índice de Gini

Para estimar o índice de Gini o pacote convey oferece a função svygini, bastando especificar a variável de renda desejada. Como queremos a estimação por estado, usaremos também a função svyby do pacote survey, que serve justamente para calcularmos estatísticas por grupos dos nossos dados, nesse caso a UF.


gini_uf <- survey::svyby(
~VD4020,
by = ~UF,
design = pnadc_0121,
FUN = convey::svygini,
na.rm = TRUE
)

Visualizar os resultados

Por fim, vamos fazer um gráfico simples para visualizar o resultado da estimação, usando o ggplot2:


gini_uf %>%
dplyr::as_tibble() %>%
dplyr::mutate(UF = forcats::fct_reorder(UF, VD4020)) %>%
ggplot2::ggplot(ggplot2::aes(x = VD4020, y = UF)) +
ggplot2::geom_col(fill = "darkblue") +
ggplot2::theme_classic() +
ggplot2::labs(
title = "Índice de Gini por Estado",
subtitle = "Dados do 1º trimestre de 2021",
x = NULL,
y = NULL,
caption = "Fonte: Microdados PNADC-T/IBGE"
)

O que você achou do resultado? Surpreendente? Deixe suas impressões!

Quer aprender mais sobre utilização de microdados? Inscreva-se no curso de R e Python para Economistas.

 

________________________

(*) Para entender mais sobre micro dados e desigualdade, confira nosso Cursos de Micro Aplicada.

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

Assinar Gratuitamente