############################################################################################ ######################### Monitoria 03 de Econometria I #################################### ############################# Data: 12/09/2018 ############################################# #################### Curso: Matemática Aplicada a Negócios ################################# ########################## Monitora: Laura Ogando ########################################## ######################## e-mail: lauraogando@usp.br ######################################## #################### Professor: Luiz Guilherme Scorzafave ################################## ############################################################################################ # Nesse script faremos a leitura da PNAD contínua # Para limpar todo o seu ambiente utiliza-se o comando abaixo: rm(list = ls()) # Precisaremos instalar alguns pacotes para ler os dados install.packages('SAScii') install.packages('readr') # Carregando os pacotes a serem utilizados library('SAScii') library('readr') # Definindo o diretorio de trabalho onde se encontram os microdrados da PNAD e o dicionarios em SAS # Você deve colocar o diretório que está definido no seu computador entre aspas. Não se esqueça de # inverter as barras. setwd() # Os arquivos necessários já se encontram no e-disciplinas, mas caso um dia você precise baixar outros dados # da PNAD continua, você pode utilizar os links a seguir. # Para baixar os dados https://downloads.ibge.gov.br/downloads_estatisticas.htm?caminho=Trabalho_e_Rendimento/Pesquisa_Nacional_por_Amostra_de_Domicilios_continua/Anual/Microdados/Dados # Dicionários https://downloads.ibge.gov.br/downloads_estatisticas.htm?caminho=Trabalho_e_Rendimento/Pesquisa_Nacional_por_Amostra_de_Domicilios_continua/Anual/Microdados/Documentacao # Nesse script vamos usar somente os dados da primeira visita de 2016 # A função parse.SAScii toma como argumento o arquivo .txt que contem o dicionários para ler os dados em SAS # Geralmente, o IBGE disponibiliza dicionários neste formato # Lendo o dicionário: dic16.1 <- parse.SAScii('Input_PNADC_1_visita_2016_20180816.txt') # Os comandos abaixo irão montar as coordenadas de cada variavel dentro do arquivo de microdados # Basicamente, o parâmetro width, que já vem no dicionários, indica o tamanho da variável dentro da base de dados. # Sendo assim, basta definir o ponto onde ela começa na base de dados e onde ela termina. dic16.1$start <- cumsum(dic16.1$width)-dic16.1$width+1 dic16.1$end <- cumsum(dic16.1$width) # Uma vez indicadas as coordenadas, basta ler os dados da PNAD através da função read_fwf, que # toma como argumentos o .txt com os dados e a posição das variáveis, definidas no dataframe do dicionário PNADc_16.1 <- read_fwf('PNADC_2016_visita1_20180816.txt', fwf_positions(dic16.1$start, dic16.1$end, dic16.1$varname)) # Agora, vamos selecionar somente algumas variáveis de interesse. # Por meio do arquivo em excel você pode escolher algumas variáveis que sejam interessantes para a sua pesquisa. variaveis <- c('ANO', 'TRIMESTRE', 'UF', 'CAPITAL', 'RM_RIDE', 'UPA', 'ESTRATO', 'V1008', 'V1014', 'V1022', 'V1023', 'V1030', 'V1031', 'V1032', 'POSEST', 'V2001', 'V2003', 'V2005', 'V2007', 'V2008', 'V20081', 'V20082', 'V2009', 'V2010', 'V3001', 'V3002', 'V3009A', 'V3014', 'V4012', 'V4019', 'V4029', 'V4048', 'VD2002', 'VD2003', 'VD2004', 'VD3001', 'VD3002', 'VD4001', 'VD4002', 'VD4003', 'VD4004A', 'VD4005', 'VD4007', 'VD4008', 'VD4009', 'VD4010', 'VD4011', 'VD4012', 'VD4013', 'VD4014', 'VD4015', 'VD4016', 'VD4017', 'VD4018', 'VD4019', 'VD4020', 'VD4031', 'VD4035', 'VD4036', 'VD4037', 'VD5005') # Agora vamos manter somente essas variáveis que selecionamos na lista acima PNADc_16 <- PNADc_16.1[variaveis] # Para ficar mais organizado, podemos apagar as bases auxiliares e salvar a base da PNAD com o ano, # Isso pode ajudar se você estiver trabalhando com PNADs contínuas de diferentes peíodos. rm(dic16.1, PNADc_16.1, variaveis) # Podemos notar que a variável VD3001 dá o nível de escolaridade de cada indivíduo # Porém, ela para em nível superior completo. Podemos com as informações da própria pesquisa, colocar # os níveis de pós-graduação completos e incompletos. Podemos fazer isso por meio do uso de argumentos de # lógica com as variáveis V3014 e V3OO9A. V3009A nos diz o curso mais elevado que a pessoa frequentou # anteriormente e V3O14 indica se a pessoa completou ou não o curso que concluiu anteriormente. # Note que se V3009A é igual a 14, isso quer dizer que o curso mais elevado que a pessoa frequentou foi # o mestrado. Além disso, se a pessoa concluiu esse curso, a variável V3014 assume valor 1. # Sendo assim, podemos ver quantas pessoas na base de dados possuem mestrado: indicador_mestrado <- PNADc_16$V3009A == 14 & PNADc_16$V3014 == 1 summary(indicador_mestrado) # Podemos ver que nessa base de dados 995 pessoas concluíram o mestrado # Para pessoas que frequentaram, mas não concluíram os mestrado V3OO9A tem que ser igual a 14, # mas V3014 assume valor 2: indicador_sub_mestrado <- PNADc_16$V3009A == 14 & PNADc_16$V3014 == 2 summary(indicador_sub_mestrado) # A mesma lógica para concluintes do doutorado indicador_doutorado <- PNADc_16$V3009A == 15 & PNADc_16$V3014 == 1 summary(indicador_doutorado) # E para não concluintes do doutorado indicador_sub_doutorado <- PNADc_16$V3009A == 15 & PNADc_16$V3014 == 2 summary(indicador_sub_doutorado) # Agora, vamos juntar o que criamos com a variável que tem as categorias de escolaridade PNADc_16$NivelEscolaridade <- PNADc_16$VD3001 PNADc_16$NivelEscolaridade[indicador_sub_mestrado] <- 8 PNADc_16$NivelEscolaridade[indicador_mestrado] <- 9 PNADc_16$NivelEscolaridade[indicador_sub_doutorado] <- 10 PNADc_16$NivelEscolaridade[indicador_doutorado] <- 11 # Analisando as 10 primeiras linhas da base de dados head(PNADc_16, 10) # Ou pedir uma descrição de todas as variáveis da base de dados summary(PNADc_16) # O comando table vai gerar uma tabela com cada um dos níveis de escolaridade table(PNADc_16$NivelEscolaridade) # Podemos também gerar uma tabela de concluintes e não concluintes table(PNADc_16$V3014) # Removendo variáveis auxiliares rm(indicador_sub_doutorado, indicador_doutorado, indicador_mestrado, indicador_sub_mestrado) # Gerando o código identificador de pessoa PNADc_16$PESSOA <- paste(PNADc_16$UPA, PNADc_16$V1008, PNADc_16$V1014, PNADc_16$V2003, sep="") View(PNADc_16) # Vamos supor que queremos renomear uma variável names(PNADc_16)[names(PNADc_16) == 'VD2002'] <- 'cond_domicilio' # Note que agora a variável tem um novo nome names(PNADc_16) # Também podemos renomear a variável de acordo com a posição dela dentro da base de dados. # Por exemplo, eu sei que a variável VD3001 ocupa a 36ª posição na base de dados, então: names(PNADc_16)[36] <- 'nivel_instrucao' names(PNADc_16) # Podemos também renomear mais de uma variável ao mesmo tempo. Para isso, basta trabalharmos com vetores names(PNADc_16)[names(PNADc_16) == c('VD3002','VD4001')] <- c('anos_estudo','forca_trabalho') names(PNADc_16) # Agora vamos supor que queremos retirar a parte categórica da variável anos_estudo, a antiga VD3002 # Sendo assim, vamos retirar os valores de 15 anos os mais de estudo. # Primeiro, vamos transformar essa variável em uma variável numérica PNADc_16$anos_estudo <- as.numeric(PNADc_16$anos_estudo) summary(PNADc_16$anos_estudo) # Agora, vamos retirar essa última categoria: PNADc_16$anos_estudo[PNADc_16$anos_estudo == 15] <- NA # Note que o máximo deixa de ser 15, passando a ser 14 # Além disso, estamos atribuindo a essas variáveis que tem valor 15, o valor NA. Podemos notar que o # número de NA's sobe: summary(PNADc_16$anos_estudo)