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$cod2 != "UF",] dicpes2015
# importa a pnad 2015 passando o tamanho das variáveis no argumento widths e o nome das colunas em col.names
<- read.fwf("../PNAD/2015/Dados_20170517/Dados/PES2015.txt",
pnad2015 widths = dicpes2015$tamanho2,
col.names = dicpes2015$cod2)
# cria a variavel UF
$uf <- substr(pnad2015$V0102,1,2) pnad2015
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[pnad2015$V8005 <= 15,]
pnad2015_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
<- c("uf", "V0102", "V0103", "V0301", "V0302", "V8005", "V0401",
vars "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 %>%
pnad2015_merged 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.
<- pnad2015_merged %>%
pnad_broder 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.
%>% subset(5 <= V8005 & V8005 <= 15) %>% export(., "2015/pes_5_15.Rds") pnad_broder
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 |