Resultado

Column

Distribuição por idade e sexo

Horas trabalhadas

Column

Construção

Processo para tratamento dos dados da PNAD


Esse projeto foi realizado como parte do critério para aprovação na disciplina “Ciência de Dados para Economistas” ministrada pelo professor Roney Fraga na Faculdade de Economia da UFMT. O objetivo é aplicar os conhecimentos de R adquiridos no curso para limpar e realizar algumas análises em cima de determinada base dados deixando os dados prontos para “uso”. No nosso caso utilizamos os microdados da PNAD 2015 e tivemos como base o artigo de Nascimento e Kassouf (2016).

Aqui estão dispostos os passos para chegar aos resultados, o código completo está disponível aqui. Primeiro importamos o dicionário da PNAD 2015 para leitura em R disponível no site do IBGE.

load("../PNAD/2015/Leitura_em_R_20170517/Leitura em R/dicPNAD2015.Rdata")

Os dados disponíveis no site do IBGE tem um problema no dicionário quanto ao início das variáveis UF e V0102, ambas iniciam na mesma posição, sendo assim não é possível importar a PNAD diretamente apenas declarando o tamanho das variáveis, a alternativa é eliminar a variável UF do dicionário e carregar a PNAD, assim, as duas variáveis serão carregadas como se fossem uma então é só selecionar as duas primeiras posições dessa variável para obter a variável UF.

dicpes2015 <- dicpes2015[dicpes2015$cod2 != "UF",]
# importa a pnad 2015 passando o tamanho das variáveis no argumento widths e o nome das colunas em col.names
pnad2015 <- read.fwf("../PNAD/2015/Dados_20170517/Dados/PES2015.txt", 
         widths = dicpes2015$tamanho2,
         col.names = dicpes2015$cod2)

# cria a variavel UF 
pnad2015$uf <- substr(pnad2015$V0102,1,2) 

Como o foco do trabalho é nas pessoas de menos de 15 anos, fazemos esse subset e exportamos os dados em .rds para não precisar rodar o código acima de novo e tornar a leitura mais rápida para o R em um futuro próximo. Foi utilizada a função export do pacote rio para exportar o objeto.

pnad2015_15 <- pnad2015[pnad2015$V8005 <= 15,] 

export(pnad2015, "../PNAD/2015/pnad2015.Rds")

A partir daqui se dá a criação das nossas variáveis de interesse, escolaridade da pessoa de referência e número de irmãos do indivíduo, para obter essa última ainda foi necessário criar a variável que nos da o número de filhos no domicílio.

# as nossas variáveis de interesse
vars <- c("uf", "V0102", "V0103", "V0301", "V0302", "V8005", "V0401", 
          "V0404", "V4011", "V0701", "V0704", "V7122", "V7128", "V0713",
          "V9001", "V9005", "V9029", "V9532", "V9058", "V9067", "V9971", "V9891", 
          "V9892", "V1272", "V1273", "V4801", "V4805", "V4809", "V4810", "V4812",
          "V4718", "V4728", "V4729", "V4742", "V4746", "V0403", "V6007", "V6003")

pnad2015_merged <- pnad2015 %>%      
  filter(V0401 == 1) %>%              # filtrando apenas as pessoas de referencia  
  group_by(V0102, V0103, V0403) %>%   # agrupando por domicilio (numero de controle, serie e familia)
  summarise(educacao_pref = max(V6007)) %>%   # cria uma variavel com a educação da pessoa de ref
  ungroup() %>%                               # desfaz o agrupamento 
  right_join(.,pnad2015 %>% select(vars))      # fusiona os dois dataframes selecionando apenas as variaveis desejadas da pnad2015

Esse processo acima cria o objeto pnad2015_merged com a nova variável educacao_pref para cada um dos indivíduos em determinado domicílio.

pnad_broder <- pnad2015_merged %>%      
  subset(V0401 == 3) %>%                # seleciona apenas pessoas que sao filhos
  group_by(V0102, V0103, V0403) %>%     # agrupa por domicilio 
  summarise(filhos_domicilio = n()) %>% # cria uma variavel filhos_domicilio com numero de filhos no domicilio
  ungroup() %>%                         # desagrupa
  right_join(.,pnad2015_merged) %>%     # junta os dois dataframes (o agrupado com variavel filho e o da pnad)
  mutate(., nmr_irmaos =  if_else(V0401 == 3 & filhos_domicilio > 1, filhos_domicilio - 1, 0, missing = NaN)) 

Com a função mutate cria-se uma nova variável nmr_irmaos (número de irmãos) utilizando o statement if/else vetorizado, onde, se há mais de um filho além do indivíduo no domicílio é subtraído um, e caso não tenha filho além deste recebe 0.

Em tese nossos dados estão prontos. Apenas então “subsetamos” o dataset para pessoas entre 5 e 15 anos e exportamos para análise posterior aqui.

pnad_broder %>% subset(5 <= V8005 & V8005 <= 15) %>% export(., "2015/pes_5_15.Rds")

Pequena olhada na tabela dos indivíduos de 5 a 15 anos de idade já com as variáveis filhos_domicilio, educacao_pref e nmr_irmaos.

V0102 V0103 V0403 filhos_domicilio educacao_pref uf V0301 V0302 V8005 V0401 V0404 V4011 V0701 V0704 V7122 V7128 V0713 V9001 V9005 V9029 V9532 V9058 V9067 V9971 V9891 V9892 V1272 V1273 V4801 V4805 V4809 V4810 V4812 V4718 V4728 V4729 V4742 V4746 V6007 V6003 nmr_irmaos
11000015 4 1 3 11 3 4 11 3 8 0 3 3 16 1 270 793 2 1 2
11000015 4 1 3 11 4 4 7 3 8 3 14 1 270 793 2 1 2
11000015 9 1 3 5 11 4 4 11 3 8 0 3 3 17 1 270 818 2 1 2
11000023 2 1 1 5 11 2 4 10 3 8 0 3 3 16 1 270 750 2 1 0
11000023 8 1 1 8 11 3 4 5 3 2 3 1 1 270 2666 2 9 0
11000023 11 1 1 5 11 2 2 15 3 8 0 1 1 1 250 30 2 13 18 1 3 8 2 250 1 270 700 1 1 0