O Pacote PNADcIBGE

O Pacote PNADcIBGE foi desenvolvido para facilitar o download, importação e análise dos dados amostrais da Pesquisa Nacional por Amostra de Domicílios Contínua realizada pelo Instituto Brasileiro de Geografia e Estatística - IBGE.

A PNAD Contínua possui dois tipos de microdados:

  • Trimestral, que contém a parte básica investigada pela pesquisa, contendo variáveis conjunturais de mercado de trabalho referentes a um trimestre civil;
  • Anual, que contém temas estruturais específicos investigados na pesquisa para um ano civil.

Maiores informações sobre a pesquisa e os temas investigados podem ser encontrados no site oficial do IBGE.

Através do objeto criado com este pacote, é possível utilizar o pacote survey para realizar análises considerando o efeito do esquema de seleção utilizado no plano amostral complexo da pesquisa e calcular corretamente as medidas de erro das estimativas, considerando o estimador de pós-estratificação utilizado na pesquisa.

Instalação do Pacote

O Pacote está diponível no CRAN do R, onde pode ser acessada sua documentação.
É importante sempre conferir se a versão instalada em seu computador é a mais recente disponível no CRAN.
A instalação do pacote pode ser feita pelo seguinte comando:

install.packages("PNADcIBGE")

Antes de utilizar o pacote é necessário carregá-lo no R através do comando:

library(PNADcIBGE)

Importação de Microdados

Para a importação dos microdados da PNAD Contínua, há duas opções. A primeira é uma opção online, que exige que o computador esteja conectado à Internet. A segunda opção não necessita de conexão a Internet, e é utilizada para a leitura de microdados que estejam no disco rígido.

Importação Online

A função get_pnadc permite o download, leitura, rotulação e criação do objeto do plano amostral da pesquisa.
Esta função pode ser usada para microdados trimestrais e anuais.

help("get_pnadc")

Microdados trimestrais

A importação dos microdados anuais através da função get_pnadc é muito simples. Basta indicar o ano e o trimestre dos dados desejados nos argumentos da função. Abaixo um exemplo de como importar os microdados do 3º trimestre de 2017:

dadosPNADc = get_pnadc(year = 2017, quarter = 3)

Apenas com esse comando, o microdado da pesquisa já está disponível no objeto pnadc022017 para análise.

Além dos argumentos year e quarter, que indicam, respectivamente, o ano e o trimestre dos microdados a serem baixados, a função get_pnadc ainda possui outros quatro argumentos que podem ser modificados no download:

  • design: Um argumento lógico que indica se a função deve retornar um objeto do plano amostral para análise com o pacote survey. Caso design=FALSE, a função retorna apenas um data-frame com os microdados. É altamente recomendado que mantenha essa opção como TRUE, caso contrário suas análises poderão ser feitas de forma incorreta;

  • vars: Este argumento recebe um vetor de caracteres com o nome das variáveis a serem baixadas. Caso nenhuma variável seja passada, todas as variáveis disponíveis na pesquisa são baixadas. É útil caso deseje trabalhar com poucas variáveis, pois assim o objeto ocupará um espaço menor na memória do computador;

  • labels: Um argumento lógico que indica se os níveis das variáveis categóricas devam ser rotuladas de acordo com o dicionário da pesquisa. O default é rotulá-los;

  • savedir: O endereço onde devem ser salvos os arquivos baixados. Padrão é utilizar uma pasta temporária.

Por exemplo, um usuário que deseje trabalhar apenas com as variáveis de Condição em relação à força de trabalho (VD4001) e Condição de ocupação (VD4002) do 3º trimestre de 2017, pode utilizar o argumento vars parece seleiconar apenas estas variáveis:

dadosPNADc <- get_pnadc(year = 2017, quarter = 3, vars=c("VD4001","VD4002"))

Através do código abaixo, podemos ver que o objeto retornado pela função é um survey.design, objeto utilizado para análises de dados amostrais complexos através do pacote survey.

dadosPNADc
## Stratified 1 - level Cluster Sampling design (with replacement)
## With (15084) clusters.
## survey::postStratify(design = data_pre, strata = ~posest, population = popc.types)
class(dadosPNADc)
## [1] "survey.design2" "survey.design"

Caso o usuário não queira trabalhar com este objeto, ele pode escolher a opção design = FALSE para baixar os microdados brutos:

dadosPNADc_brutos <- get_pnadc(year = 2017, quarter = 3, vars = c("VD4001", "VD4002"), design = FALSE)

O Objeto resultante é um data-frame com as variáveis selecionadas e as variáveis relacionadas ao processo de amostragem:

dadosPNADc_brutos
class(dadosPNADc_brutos)
## [1] "tbl_df"     "tbl"        "data.frame"

Também é possível baixar os dados sem incluir os rótulos dos níveis, através do argumento labels.

dadosPNADc_brutos_sem <- get_pnadc(year = 2017, quarter = 3, vars = c("VD4001", "VD4002"), design = FALSE, labels = FALSE)

Perceba que agora os níveis das categorias são representados por números:

dadosPNADc_brutos_sem

Microdados anuais

Além dos microdados trimestrais, a função get_pnadc também permite a importação dos microdados anuais.
A relação dos temas investigados anualmente, juntamente com a entrevista referente aaos microdados, pode ser acessada na página da pesquisa.

Neste exemplo, mostraremos como importar os dados da 1ª visita de 2016, que compreende os temas:

  • Características Adicionais do Mercado de Trabalho;
  • Características Gerais dos Moradores;
  • Características Gerais dos Domicílios.
  • Rendimentos de Outras Fontes

Para a importação do microdados de uma entrevista basta informar o número da entrevista desejada no parâmetro interview:

dadosPNADc_anual <- get_pnadc(year = 2016, interview = 1)
dadosPNADc_anual
## Stratified 1 - level Cluster Sampling design (with replacement)
## With (15084) clusters.
## survey::postStratify(design = data_pre, strata = ~posest, population = popc.types)

O objeto retornado é um survey.design e os argumentos vars, labels, design e savedir podem ser utilizados da mesma forma que para os microdados trimestral.

Importação offline

Caso não seja possível utilizar a importação online através da função get_pnadc, é possível criar o mesmo objeto para análise com arquivos que estejam em disco. Para isto, são utilzadas três funções:

  • read_pnadc: Para a leitura do arquivo .txt dos microdados;
  • pnadc_labeller: Opcional. Coloca os rótulos dos níveis nas variáveis categóricas;
  • pnadc_design: Cria o objeto do plano amostral para a análise com o pacote survey.

Para utilizar estas funções, primeiramente é necessário ter os microdados e sua documentação no disco e extraídos dos arquivos compactados, se for o caso.
Estes arquivos podem ser baixados diretamente do FTP do IBGE.

Para a função read_pnadc são utilizados os arquivos de texto contendo os microdados e o input para sas.

Exemplo de leitura para o 3º trimestre de 2017:

dados_pnadc <- read_pnadc("PNADC_032017.txt", "Input_PNADC_trimestral.txt")

Assim como na importação online, pode ser utilizado o argumento vars para definir quais variáveis serão lidas.

A função pnadc_labeller utiliza o objeto criado pela função read_pnadc e o arquivo de dicionário das variáveis presente na documentação da pesquisa.

dados_pnadc <- pnadc_labeller(dados_pnadc, "dicionário_das_variáveis_PNAD_Continua_microdados.xls")

A utilização de pnadc_labeller é opcional e não interfere nos resultados obtidos.

A criação do objeto do plano amostral é feita diretamente pela função pnadc_design aplicada no objeto que contém os microdados:

dados_pnadc <- pnadc_design(dados_pnadc)

O objeto resultante é o mesmo retornado pela função get_pnadce pode ser utilizado para análises com o survey.

A importação offline é feita da mesma forma tanto para microdados mensais quanto anuais.


Análise com pacote survey

Devido ao plano amostral utilziado na PNAD Contínua, é necessário que sejam utilizadas ferramentas específicas para a análise de dados amostrais complexos. O pacote survey é um pacote criado especificamente para análise e modelagem de dados provenientes de pesquisas com estes tipos de planos amostrais. Maiores detalhes sobre o pacote podem ser encontrados no site do autor.

Para os exemplos, utilizaremos microdados da PNAD Contínua do 3º trimestre de 2017, com algumas variáveis selecionadas de acordo com a tabela abaixo:

Variável Descrição
UF Unidade da Federação
V2007 Sexo
V2009 Idade do morador na data de referência
V2010 Cor ou raça
V3007 Já concluiu algum outro curso de graduação?
VD3001 Nível de instrução mais elevado alcançado (pessoas de 5 anos ou mais de idade)
VD4001 Condição em relação à força de trabalho na semana de referência para pessoas de 14 anos ou mais de idade
VD4002 Condição de ocupação na semana de referência para pessoas de 14 anos ou mais de idade
VD4020 Rendimento mensal efetivo de todos os trabalhos para pessoas de 14 anos ou mais de idade (apenas para pessoas que receberam em dinheiro, produtos ou mercadorias em qualquer trabalho)
VD4035 Horas efetivamente trabalhadas na semana de referência em todos os trabalhos para pessoas de 14 anos ou mais de idade

Importando os dados

variaveis_selecionadas <- c("UF", "V2007", "V2009", "V2010", "V3007", "VD3001", "VD4001", "VD4002", "VD4020", "VD4035")
dadosPNADc <- get_pnadc(year = 2017, quarter = 3, vars = variaveis_selecionadas)

O objeto dadosPNADC vai ser utilizado com o pacote survey para a análise dos microdados.

Para iniciar a análise dos dados é necessário carregar o pacote survey

library(survey)

Estimando Totais

A função do pacote para a estimação de totais populacionais é a svytotal. Sua sintaxe precisa de três parâmetros principais

  • O nome da variável que se deseja calcular o total, precedido por um ~;
  • O nome do objeto do plano amostral;
  • A opção na.rm = T, que remove as observações onde a variável é não-aplicável.
Variáveis Numéricas

Ela pode ser utilizada para a estimação do total de uma variável numérica, como a renda mensal efetiva

totalrenda <- svytotal(~VD4020, dadosPNADc, na.rm = T)
totalrenda
##               total         SE
## VD4020 189033394556 3070733709

Além da estimativa do total da renda efetiva, o comando também retorna o erro padrão (SE) dessa estimativa.
A partir desse resultado, também é possível calcular coeficientes de variação e intervalos de confiança para a estimativa:

cv(totalrenda)
##          VD4020
## VD4020 0,016244
confint(totalrenda) #intervalo de confiança de 95% (padrão)
##               2,5 %       97,5 %
## VD4020 183014867081 195051922031
confint(totalrenda, level= .99) #intervalo de confiança de 99%
##               0,5 %       99,5 %
## VD4020 181123708686 196943080427
Variáveis Categóricas

Também é possível estimar totais populacionais de categorias, utilizando variáveis categóricas, como o sexo:

totalsexo <- svytotal(~V2007, dadosPNADc, na.rm = T)
totalsexo
##                 total     SE
## V2007Homem  100160249 144478
## V2007Mulher 107109263 144478

E estimar o total de mais de uma variável categórica no mesmo código, separando com o operador +:

totalsexoraca <- svytotal(~V2007 + V2010, dadosPNADc, na.rm = T)
totalsexoraca
##                   total     SE
## V2007Homem    100160249 144478
## V2007Mulher   107109263 144478
## V2010Branca    90855390 417723
## V2010Preta     16984226 197119
## V2010Amarela    1257134  67088
## V2010Parda     97634526 392400
## V2010Indígena    525512  31274
## V2010Ignorado     12723   3861

Também é possível estimar o total resultante do cruzamento de duas ou mais variáveis categóricas, com a função interaction:

totalsexoEraca <- svytotal(~ interaction(V2007, V2010), dadosPNADc, na.rm = T)
ftable(totalsexoEraca)
##                V2007      Homem     Mulher
## V2010                                     
## Branca   total       42953927,2 47901462,5
##          SE            222223,9   247467,2
## Preta    total        8458566,1  8525660,2
##          SE            106733,1   114088,4
## Amarela  total         570313,3   686820,6
##          SE             33279,8    40520,2
## Parda    total       47914095,8 49720430,5
##          SE            219086,0   227439,6
## Indígena total         256383,7   269128,0
##          SE             17874,2    17066,5
## Ignorado total           6962,3     5760,8
##          SE              2836,4     2470,2

A função ftable possibilita uma saída mais organizada da tabela no caso de cruzamento de variáveis. Para todos esses objetos também podem ser utilizadas as funções cv e confint.

Estimando Médias

A média de uma variável numérica é estimada através da função svymean, que possui uma sintaxe idêntica à svytotal. O exemplo do total da renda efetiva pode ser facilmente reescrito para médias:

mediarenda <- svymean(~VD4020, dadosPNADc, na.rm = T)
mediarenda
##        mean   SE
## VD4020 2125 33,4

E podemos calcular intervalos de confiança e coeficientes de variação da mesma forma:

cv(mediarenda)
##          VD4020
## VD4020 0,015725
confint(mediarenda)
##         2,5 % 97,5 %
## VD4020 2059,7 2190,7

Estimando Proporções

Utilizando variáveis categóricas, é possível estimar a frequência relativa de cada categoria. Isso pode ser feito também através da função svymean, com uma sintaxe análoga à utilizada para estimar os totais das categorias.

Para estimar a proporção de cada sexo na população:

propsexo <- svymean(~V2007, dadosPNADc, na.rm = T)
propsexo
##              mean SE
## V2007Homem  0,483  0
## V2007Mulher 0,517  0

Da mesma forma, podemos estimar a proporção de mais de uma variável:

propsexoraca <- svymean(~V2007 + V2010, dadosPNADc, na.rm = T)
propsexoraca
##                    mean SE
## V2007Homem    0,4832368  0
## V2007Mulher   0,5167632  0
## V2010Branca   0,4383442  0
## V2010Preta    0,0819427  0
## V2010Amarela  0,0060652  0
## V2010Parda    0,4710511  0
## V2010Indígena 0,0025354  0
## V2010Ignorado 0,0000614  0

E estimando a proporção de um cruzamento de duas ou mais variáveis com a função interaction

propsexoEraca <- svymean(~ interaction(V2007, V2010), dadosPNADc, na.rm = T)
ftable(propsexoEraca)
##               V2007       Homem      Mulher
## V2010                                      
## Branca   mean       0,207237075 0,231107133
##          SE         0,001072150 0,001193939
## Preta    mean       0,040809505 0,041133209
##          SE         0,000514948 0,000550435
## Amarela  mean       0,002751554 0,003313659
##          SE         0,000160563 0,000195495
## Parda    mean       0,231168085 0,239882992
##          SE         0,001057010 0,001097314
## Indígena mean       0,001236958 0,001298445
##          SE         0,000086237 0,000082339
## Ignorado mean       0,000033591 0,000027794
##          SE         0,000013684 0,000011918

Neste caso, as frequências relativas calculadas são em relação ao total, não a uma marginal. Na seção de Análise por domínios são apresentados como calcular frequências relativas em relações às marginais.

Estimando Razões

Além das proporções, também é possível estimar razões entre duas variáveis. Um exemplo de razão é a taxa de desocupação divulgada pelo IBGE: ela é a razão entre o total de pessoas desocupadas pelo total de pessoas na força de trabalho.

A função para estimar razões é a svyratio. Sua sintaxe utiliza quatro argumentos: a variável cujo total estará no numerador, a variável cujo total estará no denominador, o objeto do plano amostral e a opção de remover valores não aplicáveis.

Um exemplo para a estimativa dessa taxa é

txdesocup <- svyratio(~VD4002 == "Pessoas desocupadas",~VD4001 == "Pessoas na força de trabalho", dadosPNADc, na.rm = T)
txdesocup
## Ratio estimator: svyratio.survey.design2(~VD4002 == "Pessoas desocupadas", ~VD4001 == 
##     "Pessoas na força de trabalho", dadosPNADc, na.rm = T)
## Ratios=
##                                 VD4001 == "Pessoas na força de trabalho"
## VD4002 == "Pessoas desocupadas"                                  0,12432
## SEs=
##                                 VD4001 == "Pessoas na força de trabalho"
## VD4002 == "Pessoas desocupadas"                                0,0011251

Cálculos de coeficiente de variação e intervalos de confiança para essa taxa:

cv(txdesocup)
##                                 VD4001 == "Pessoas na força de trabalho"
## VD4002 == "Pessoas desocupadas"                                0,0090503
confint(txdesocup)
##                                                                            2,5 %
## VD4002 == "Pessoas desocupadas"/VD4001 == "Pessoas na força de trabalho" 0,12211
##                                                                           97,5 %
## VD4002 == "Pessoas desocupadas"/VD4001 == "Pessoas na força de trabalho" 0,12652

Estimando Medianas e Quantis

Medianas e quantis de variáveis numéricas são estimados através da função svyquantile. Além dos argumentos utilizados para estimar a média, é necessário definir os quantis a serem calculados no argumento quantiles.

Para calcular a mediana, basta utilizar quantiles = .5:

medianarenda <- svyquantile(~VD4020, dadosPNADc, quantiles = .5, na.rm = T)
medianarenda
##         0,5
## VD4020 1200

A partir disto, podemos inferir que metade dos brasileiros que têm renda, possuem renda de até 1200 reais.

Diferentemente das anteriores, a função svyquantile não retorna como default o erro padrão das estimativas. Para obtê-los, é necessário utilizar o parâmetro ci = TRUE, que estima intervalos de confiança e a partir dele, utilziar as funções SE e cv para estimar o erro padrão e coeficiente de variação, respectivamente.

medianarenda <- svyquantile(~VD4020, dadosPNADc, quantiles = .5, na.rm = T, ci = TRUE)
medianarenda
## $quantiles
##         0,5
## VD4020 1200
## 
## $CIs
## , , VD4020
## 
##         0,5
## (lower 1200
## upper) 1250
SE(medianarenda)
## [1] 12,755
cv(medianarenda)
##   VD4020 
## 0,010629

Além disso, é possível calcular vários quantis simultaneamente, colocando um vetor na opção quantiles.
No código abaixo, estimamos, além da mediana, o primeiro e nono decis e primeiro e terceiro quartis:

quantisrenda <- svyquantile(~VD4020, dadosPNADc, quantiles = c(.1,.25,.5,.75,.9), na.rm = T)
quantisrenda
##        0,1 0,25  0,5 0,75  0,9
## VD4020 400  937 1200 2000 4000

Estimação para um Domínio

Muitas vezes queremos fazer uma análise para um domínio específico da população. Com o survey, esse domínio pode ser selecionado utilizando a função subset no objeto do plano amostral, aplicando a condição que define aquele domínio. É necessário que a seleção desse domínio nos dados seja feita somente após a criação do objeto que define o plano amostral, caso contrário podem ser obtidos resultados incorretos.

Para a seleção dos domínios podem ser utilizadas condicionais com igualdade, como por exemplo para estimar a renda efetiva média de mulheres:

mediarendaM <- svymean(~VD4020, subset(dadosPNADc, V2007 == "Mulher")  , na.rm = T)
mediarendaM
##        mean   SE
## VD4020 1810 19,9

Ou condicionais com desigualdade, como por exemplo estimar a taxa de desocupação para pessoas com idade igual ou superior a 25 anos:

txdesocup25 <- svyratio(~VD4002 == "Pessoas desocupadas",~VD4001 == "Pessoas na força de trabalho", subset(dadosPNADc, V2009>=25) , na.rm = T)
txdesocup25
## Ratio estimator: svyratio.survey.design2(~VD4002 == "Pessoas desocupadas", ~VD4001 == 
##     "Pessoas na força de trabalho", subset(dadosPNADc, V2009 >= 
##     25), na.rm = T)
## Ratios=
##                                 VD4001 == "Pessoas na força de trabalho"
## VD4002 == "Pessoas desocupadas"                                 0,089332
## SEs=
##                                 VD4001 == "Pessoas na força de trabalho"
## VD4002 == "Pessoas desocupadas"                               0,00098083

Além disso, é possível utilizar múltiplas condições com os operados lógicos & (“e”) e |(“ou”), para estimar a frequência relativa de cada nível de instrução para homens pardos com mais de 30 anos, por exemplo.

nivelinstrHP30 <- svymean(~VD3001, subset(dadosPNADc, V2007 == "Homem" & V2010 == "Parda" & V2009 > 30), na.rm = T)
nivelinstrHP30
##                                                  mean SE
## VD3001Sem instrução e menos de 1 ano de estudo 0,1469  0
## VD3001Fundamental incompleto ou equivalente    0,4006  0
## VD3001Fundamental completo ou equivalente      0,0882  0
## VD3001Médio incompleto ou equivalente          0,0435  0
## VD3001Médio completo ou equivalente            0,2304  0
## VD3001Superior incompleto ou equivalente       0,0207  0
## VD3001Superior completo                        0,0698  0

Além disso, caso deseje realizar diversas análises para um mesmo domínio, é possível criar um objeto que contenha apenas os dados daquele domínio a partir de um subset do objeto original do plano amostral.

dadosPNADc_mulheres <- subset(dadosPNADc, V2007 == "Mulher")
dadosPNADc_mulheres
## Stratified 1 - level Cluster Sampling design (with replacement)
## With (15084) clusters.
## subset(dadosPNADc, V2007 == "Mulher")

As análises então podem ser feitas utilizando esse novo objeto ao invés do objeto que contém todos os dados.

Estimação para Vários Domínios.

Em outros casos há interesse em estimar quantidades de interesse para diversos domínios mutuamente exclusivos, a fim de possibilitar comparações. Para isto, podemos utilizar a função svyby.

Para utilizá-la são necessários os seguinte argumentos

  • A variável da qual se deseja calcular a quantidade
  • A variável que define os domínios
  • O objeto do plano amostral
  • A função utilizada para calcular a quantidade de interesse (svytotal,svymean,svyratio,svyquantile,…)

Se desejamos estimar a frequência relativa de homens e mulheres em cada nível de instrução, usamos o seguinte código:

freqSexoInstr <- svyby(~V2007, ~VD3001, dadosPNADc, svymean, na.rm = T)
freqSexoInstr

Caso desejemos estimar o contrário, a frequência relativa de cada nível de instrução para cada sexo, basta inverter as variáveis correspondetes na sintaxe

freqInstrSexo <- svyby(~VD3001, ~V2007, dadosPNADc, svymean, na.rm = T)
freqInstrSexo

Também pode ser utilizado para estimar a renda média efetiva por unidade da federação

mediaRendaUF <- svyby(~VD4020, ~UF, dadosPNADc, svymean, na.rm = T)
mediaRendaUF

É possível também calcular o intervalo de confiança para cada uma dessas estimativas:

confint(mediaRendaUF)

É possível definir domínios que sejam cruzamentos de variáveis categóricas com a função interaction.
Na svyby também é possível utilizar vartype="cv" caso desejemos que no output apareça o coeficiente de variação ao invés do erro padrão da estimativa. Para estimar a taxa de desocupação por sexo e cor/raça utilizando svyratioe svyby e o respectivo cv:

txdesocupSexoRaca <- svyby(~VD4002 == "Pessoas desocupadas", ~interaction(V2007,V2010), dadosPNADc, svyratio, denominator = ~VD4001 == "Pessoas na força de trabalho", na.rm = T, vartype = "cv")
txdesocupSexoRaca

Gráficos para Dados Amostrais

O Pacote survey possui funções específicas para gerar gráficos que incorporem os pesos amostrais das observações. Para a criação dos gráficos, é utilizado o mesmo objeto de plano amostral utilizado para estimar as quantidades populacionais.

Entre os gráficos disponíveis no pacote estão o histograma, boxplot e gráficos de dispersão.

Histograma

A função svyhist permite a criação de histogramas para variáveis numéricas que consideram os pesos amostrais para computar as frequências ou densidades das barras.
A sintaxe básica é semelhante as de estimação apresentadas anteriormente. Além disto, possui os mesmos parâmetros que a função hist: breaks, xlab, main, etc… .
Para estimativas das frequências absolutas, deve-se utilizar freq = TRUE. Abaixo, um exemplo do histograma do número de horas trabalhadas para cada um dos casos:

svyhist(~ as.numeric(VD4035), dadosPNADc, main = "Histograma", xlab = "Número de Horas Trabalhadas")

svyhist(~ as.numeric(VD4035), dadosPNADc, freq = TRUE, main = "Histograma", xlab = "Número de Horas Trabalhadas")

Boxplot

Para a construção de boxplots que considerem os pesos amostrais, a função é svyboxplot.

A sintaxe dela difere um pouco das demais. É necessário declarar a variável numérica, sucedida por um ~ e a variável de agrupamento do boxplot. Caso não deseje usar grupos, basta colocar o número 1. Além disto, há a opção de plotar apenas os outliers mais extremos ou todos, através da opção all.outliers. Exemplos:

svyboxplot(VD4035 ~ 1, dadosPNADc, main = "Boxplot do Número de Horas Trabalhadas")

svyboxplot(VD4035 ~ V2007, dadosPNADc, main = "Boxplot do Número de Horas Trabalhadas por Sexo")

svyboxplot(VD4035 ~ V2007, dadosPNADc, main = "Boxplot do Número de Horas Trabalhadas por Sexo", all.outliers = TRUE)

Gráficos de Dispersão

Os gráficos de dispersão usuais não são muito úteis para dados provindo de amostras complexas, pois não conseguem diferenciar o peso de cada ponto representado no gráfico. Para isso, a função svyplot tem algumas opções de construção de gráficos de dispersão que representam esses pesos através do argumento style.

Uma opção é a utilização de style = bubble, que o tamanho do ponto no gráfico representa o peso das obervações naquele ponto.

svyplot(VD4020 ~ VD4035, dadosPNADc, style = "bubble", xlab = "Horas efetivamente trabalhadas", ylab = "Rendimento efetivo")

Outra opção é a style = transparent, onde regiões com menor peso são mais transparentes e com maior peso, mais sólidas:

svyplot(VD4020 ~ VD4035, dadosPNADc, style = "transparent", xlab = "Horas efetivamente trabalhadas", ylab = "Rendimento efetivo")


Modelagem com pacote survey

No pacote survey ainda há a possibilidadede realizar testes de hipóteses e estimar parâmetros de modelos, considerando o plano amostral complexo.

Testes de Hipóteses

Os testes de hipóteses incluídos no pacote survey incluem teste-t para médias, teste qui-quadrado e teste de postos.

Abaixo um exemplo do teste t para diferenças de médias de rendimentos efetivos entre sexos:

svyttest(VD4020 ~ V2007, dadosPNADc)
## 
##  Design-based t-test
## 
## data:  VD4020 ~ V2007
## t = -12,8, df = 14500, p-value <2e-16
## alternative hypothesis: true difference in mean is not equal to 0
## sample estimates:
## difference in mean 
##            -553,18

Outro exemplo para testar diferenças entre médias de horas trabalhadas, entre concluintes e não concluintes de graduação:

svyttest(as.numeric(VD4035) ~ V3007, dadosPNADc)
## 
##  Design-based t-test
## 
## data:  as.numeric(VD4035) ~ V3007
## t = -0,466, df = 14500, p-value = 0,64
## alternative hypothesis: true difference in mean is not equal to 0
## sample estimates:
## difference in mean 
##           -0,27295

Modelos lineares

Além de testes de hipóteses, é possível estimar modelos lineares generalizados para dados amostrais complexos através da função svyglm.

Regressão Linear

Para regressão linear simples ou múltipla, basta descrever a fórmula do modelo desejado na função svyglm.

No exemplo abaixo, utilizamos um modelo de regressão com rendimento efetivo como variável dependente e escolaridade, cor/raça e idade como variáveis explicativas. Para obter as estatísticas do modelo, pode ser utilizada as função summary, assim como feito para a regressão linear convencional.

modeloLin <- svyglm(VD4020 ~ VD3001 + V2010 + V2009, dadosPNADc)
summary(modeloLin)

Além disso, é possível computar intervalos de confiança para os parâmetros:

confint(modeloLin)
##                                                2,5 %   97,5 %
## (Intercept)                                 -998,903 -526,239
## VD3001Fundamental incompleto ou equivalente  461,782  549,341
## VD3001Fundamental completo ou equivalente    810,555  937,682
## VD3001Médio incompleto ou equivalente        991,838 1196,712
## VD3001Médio completo ou equivalente         1204,128 1364,739
## VD3001Superior incompleto ou equivalente    1683,953 1899,929
## VD3001Superior completo                     4020,656 4614,813
## V2010Preta                                  -695,610 -535,769
## V2010Amarela                                 154,583 1418,074
## V2010Parda                                  -649,645 -509,141
## V2010Indígena                               -750,250 -347,671
## V2010Ignorado                               -506,098  620,856
## V2009                                         34,194   45,092
Regressão Logística

Outro modelo pertencente a classe de modelos generalizados é a Regressão Logística. Para utilizar este modelo, basta colocar o argumento family = "binomial".

No exemplo abaixo modelamos a não-conclusão de graduação pelo sexo, raça e idade:

modeloLog <- svyglm(V3007 ~ V2007 + V2010 + V2009, dadosPNADc, family = "binomial")
summary(modeloLog)
confint(modeloLog)
##                   2,5 %    97,5 %
## (Intercept)    4,908487  5,399418
## V2007Mulher   -0,233592  0,074318
## V2010Preta     0,035357  0,613527
## V2010Amarela  -0,438004  1,646266
## V2010Parda     0,228125  0,567280
## V2010Indígena -0,521755  1,733636
## V2010Ignorado  8,015899 10,797340
## V2009         -0,106152 -0,091282

Análise de concentração de renda com Pacote convey

O Pacote convey permite estimar diversas medidas de concentração de renda para dados provenientes de pesquisas com planos amostrais complexos.

Este pacote segue uma sintaxe bem próxima à sintaxe do survey, sendo possível utilizar funções do survey em objetos do convey. Uma extensa documentação sobre este pacote e a sobre o processo de estimação dos índices pode ser encontrada no github dos autores: https://guilhermejacob.github.io/context/index.html.

Para a utilização do pacote convey, primeiramente é necessário utilizar a função convey_prep, que transforma o objeto do plano amostral do survey no objeto que o convey utiliza para as estimações:

library(convey)
dadosPNADc <- convey_prep(dadosPNADc)

Aqui, apresentaremos apenas exemplo de duas das diversas medidas disponíveis no pacote: O índice de Gini e a Curva de Lorenz.

Índice de Gini

Para estimamos o índice de Gini, basta utilizar a função svygini com a variável de renda desejada. Neste exemplo, estimamos o índice de Gini do Brasil para a renda efetiva:

giniHab <- svygini(~VD4020, dadosPNADc, na.rm  =  TRUE)
giniHab
##         gini   SE
## VD4020 0,519 0,01

Assim como nas funções do pacote survey, é possível, por exemplo, estimar o coeficiente de variação desta estimativa:

cv(giniHab)
##          VD4020
## VD4020 0,012238

Também é possível utilizar a função svyby para estimar o Gini da renda efetiva por Unidade da Federação:

giniUF <- svyby(~VD4020, by = ~UF, dadosPNADc, svygini, na.rm  =  TRUE)
giniUF

E estimar intervalos de confiança para cada UF:

confint(giniUF)
##                       2,5 %  97,5 %
## Rondônia            0,41998 0,47097
## Acre                0,49763 0,55532
## Amazonas            0,51390 0,59386
## Roraima             0,50308 0,55465
## Pará                0,51039 0,55703
## Amapá               0,49839 0,60024
## Tocantins           0,44409 0,49534
## Maranhão            0,50637 0,60677
## Piauí               0,54367 0,61266
## Ceará               0,50683 0,55758
## Rio Grande do Norte 0,47660 0,57317
## Paraíba             0,53279 0,59760
## Pernambuco          0,50916 0,59814
## Alagoas             0,41845 0,47314
## Sergipe             0,50890 0,58569
## Bahia               0,52054 0,57343
## Minas Gerais        0,46922 0,50116
## Espírito Santo      0,45388 0,49627
## Rio de Janeiro      0,45716 0,48407
## São Paulo           0,48394 0,55621
## Paraná              0,44769 0,48715
## Santa Catarina      0,39471 0,41776
## Rio Grande do Sul   0,47844 0,51196
## Mato Grosso do Sul  0,45157 0,49809
## Mato Grosso         0,42975 0,47703
## Goiás               0,43739 0,47707
## Distrito Federal    0,54861 0,58429

Curva de Lorenz

A Curva de Lorenz é um gráfico utilizado para relacionar a distribuição relativa de renda pelas pessoas. A área entre essa curva e a reta identidade, é uma das formas de definir o coeficiente de Gini. No pacote convey, é possível fazer o gráfico desta curva com a função svylorenz. Os quantis da população para os quais a renda acumulada serão plotados no gráfico são definidos no argumento quantiles.

Exemplo para a Curva de Lorenz da renda efetiva:

curvaLorenz <- svylorenz(~VD4020, dadosPNADc, quantiles = seq(0, 1, .05), na.rm  =  TRUE)


  1. Instituto Brasileiro de Geografia e Estatística - douglas.braga@ibge.gov.br