Você está na página 1de 90

Introduo anlise de dados amostrais complexos

Djalma Pessoa e Andr Costa 23 de novembro de 2013

Tpicos

Introduo Bases de dados das pesquisas domiciliares do IBGE Anlise de dados amostrais complexos Utilizao do R para anlise dos dados das pesquisas do IBGE Reproduo de tabelas de estimativas do IBGE
Pesquisa de Oramentos Familiares Pesquisa Nacional por Amostra de Domiclios Amostra do Censo Demogrco de 2010

Introduo
Nos ltimos anos o IBGE tem disponibilizado cada vez mais informaes de uso pblico, no somente em forma de dados tabulares, mas dando acesso direto aos microdados. Ou seja, o IBGE tem possibilitado que qualquer usurio tenha acesso aos dados no menor nvel de agregao da pesquisa, sempre preservando o sigilo das informaes fornecidas pelos entrevistados Isto permite uma melhor utilizao dos dados, mas impe que o usurio de microdados tenha acesso e domnio a softwares estatsticos Adicionalmente, supe o conhecimento sobre os conceitos e denies utilizados durante a coleta dos dados e o acompanhamento das mudanas destes ao longo dos anos

Introduo
A utilizao dos microdados das pesquisas do IBGE permite uma anlise mais detalhada e personalizada ao usurio. Muitas vezes, seu interesse est na produo de resultados baseados em variveis com categorizao ou domnios de estimao diferentes dos usados pelo IBGE Para isto o usurio dever ser capaz de reproduzir os resultados divulgados pela instituio: estimativas e suas respectivas medidas de preciso O objetivo deste curso apresentar as diculdades que um usurio externo enfrenta ao utilizar os microdados disponibilizados do IBGE, fornecendo ferramentas para contornar alguns problemas relacionados ao acesso, manipulao e o tratamento dos dados para seu uso correto usando o software R

Bases de dados das pesquisas domiciliares do IBGE


Amostra do Censo Demogrco de 2010
Realizada desde 1960, possui grande abrangncia geogrca e permite a estimao para pequenos domnios. Por ser uma amostra, investiga mais informaes do que o Censo Investiga anualmente, entre os Censos, caractersticas demogrcas e socioeconmicas da populao, como educao, trabalho, rendimento, fecundidade, migrao, habitao, entre outros temas Fornece informaes sobre a composio dos oramentos domsticos, a partir da investigao dos hbitos de consumo, da alocao de gastos e da distribuio dos rendimentos, segundo as caractersticas da populao, alm da autopercepo da qualidade de vida e das caractersticas do perl nutricional

Pesquisa Nacional por Amostra de Domiclios - PNAD

Pesquisa de Oramentos Familiares - POF

Anlise de dados amostrais complexos


Para a obteno das estimativas pontuais so utilizados os pesos divulgados com os microdados das pesquisas No entanto, a estimao das medidas de preciso para amostras complexas requer o conhecimento da estrutura do plano amostral, como o uso de
Estraticao Conglomerao (em vrios estgios) Pesos desiguais Ajuste dos pesos por calibrao (ps-estraticao)

Por possurem planos amostrais complexos e serem utilizadas por usurios de diferentes especialidades, no raro encontrar estudos nos quais as estimativas de preciso so calculadas de maneira equivocada

Anlise de dados amostrais complexos


Em especial, a varincia de alguns estimadores pode ser de difcil estimao (estimadores no facilmente linearizveis) Para incorporar as caractersticas do plano amostral nestes clculos, necessrio a utilizao de um software especializado. Neste minicurso usaremos o pacote survey do R Alm disto, parte da diculdade recai no fato de que nem sempre esto disponveis todas as informaes que caracterizam o plano amostral Este minicurso tem o objetivo de apresentar mtodos para o clculo da varincia de alguns estimadores utilizando algumas bases de dados do IBGE, discutindo algumas diculdades encontradas at mesmo por usurios que dominem as ferramentas metodolgicas

Utilizao do R para anlise dos dados das pesquisas do IBGE


Inicialmente, no IBGE, a utilizao do R para a anlise de dados amostrais complexos foi feita por meio do pacote adac (Pessoa e Moreira), que implementava em linguagem R os mtodos utilizados pelo SUDAAN Com o desenvolvimento do pacote survey, foi desenvolvido e disponibilizado pelos tcnicos do IBGE um pacote especco para o tratamento dos dados da PNAD, o IBGEPesq Recentemente, foram incorporados ao blog asdfree scripts do R para leitura e anlise dos dados da PNAD e da POF utilizando o pacote survey Os scripts para leitura de microdados so de autoria de Damico e os de anlise de Pessoa e Martins

Bibliograa
DAMICO, A. - asdfree: analyze survey data for free. http://www.asdfree.com/. LUMLEY, T (2012) - "survey: analysis of complex survey samples". R package version 3.28-2. LUMLEY, T (2004) - Analysis of complex survey samples. Journal of Statistical Software 9(1): 1-19. PESSOA, D.G.C. e MOREIRA, G.G.M. (2003) - "adac: anlise de dados amostrais complexos". R package version 1-1. R Core Team - R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. Version 3.0.2. http://www.R-project.org/.

Bibliograa

LOHR, S.L. (2009) - Sampling Design and Analysis. 2nd Edition. Brooks/Cole. SUDAAN (Software for Survey Data Analysis) - Research Triangle Institute, North Carolina. http://www.rti.org/sudaan/.

Anlise de Microdados da POF Blog asdfree


Djalma Pessoa e Andr Costa 24 de novembro de 2013

Introduo
A Pesquisa de Oramentos Familiares (POF) visa mensurar as estruturas de consumo, dos gastos, dos rendimentos e parte da variao patrimonial das famlias. Utilizada para atender, dentre outras coisas, a atualizao das estruturas de consumo dos ndices de Preos ao Consumidor produzidos pelo IBGE Investiga, tambm, a autopercepo da qualidade de vida e as caractersticas do perl nutricional da populao brasileira A edio de 2008-2009 foi a quinta pesquisa realizada pelo IBGE sobre oramentos familiares (ENDEF 1974-1975 e POF 1987-1988, 1995-1996 e 2002-2003) Microdados disponveis no website do IBGE (a partir da edio de 2002-2003)

Introduo
O post da POF no blog asdfree para analisar os microdados da pesquisa, contm 4 scripts:
1. Baixar os arquivos do ftp do IBGE e faz sua leitura utilizando o arquivo de layout em SAS. Os arquivos so salvos no formato `.rda' em uma pasta denida pelo usurio 2. Reproduzir estimativas de prevalncias de dcit de peso, excesso de peso e obesidade, bem como suas medidas de preciso, em uma subpopulao de interesse (Tabela 15) 3. Reproduzir estimativas de medianas de altura e peso, por situao do domiclio e sexo, segundo a idade e os grupos de idade e suas medidas de preciso (Tabela 1.1) 4. Reproduzir estimativas de despesas monetria e no monetria mdia mensal familiar, com alimentao por classes de rendimento total e variao patrimonial mensal familiar, segundo os tipos de despesa, com indicao do nmero e tamanho mdio das famlias (Tabela 1.1.12)

Neste minicurso apresentaremos mais detalhadamente os comandos do segundo script

Introduo
Como exerccio, replicaremos as estimativas da Tabela 15 da publicao da POF:
ftp://ftp.ibge.gov.br/Orcamentos_Familiares/Pesquisa_de_ Orcamentos_Familiares_2008_2009/Antropometria_e_estado_ nutricional_de_criancas_adolescentes_e_adultos_no_Brasil/ tabtexto15.zip

Assim como os coecientes de variao em:


ftp://ftp.ibge.gov.br/Orcamentos_Familiares/Pesquisa_de_ Orcamentos_Familiares_2008_2009/Antropometria_e_estado_ nutricional_de_criancas_adolescentes_e_adultos_no_Brasil/ POF_CV_04prevalencia.zip

Importao dos dados


O primeiro script da pgina da POF no blog asdfree, download all microdata.R, permite baixar os dados diretamente do ftp do IBGE no computador do usurio Em seguida, os arquivos do ano escolhido so descompactados e lidos no R, sendo salvos no formato `.rda' (um arquivo para cada base `.txt') em uma pasta denida pelo usurio Nos exemplos a seguir utilizaremos os arquivos contendo os dados dos moradores dos domiclios da amostra e o arquivo contendo as informaes necessrias ps-estraticao do plano amostral, salvos previamente

Importao dos dados


# Definir pasta de trabalho
s e t w d ( "C : \ \ IBGE \ \ 2 0 1 3 \ \ SMI2013 \ \ M i n i c u r s o \ \POF" )

# Carregar o arquivo de dados relativo s pessoas # Carrega a tabela de ps-estratificao # verifica se os dois objetos carregados esto no workspace
" t _ m o r a d o r _ s " %i n% l s () load (" p o s t s t r . r d a ") l o a d ( " t_morador_s.rda " )

[1] TRUE
" p o s t s t r " %i n% l s ()

[1] TRUE

Preparao dos dados


Cria variveis derivadas.
# Construir uma coluna chamada `control ' no arquivo de dados relativo s pessoas , que ser usada para fazer o merging com a tabela de ps-estratificao. t_morador_s t r a n s f o r m (
t_ mora dor_s , control ) = p a s t e 0 ( cod_uf , num_seq , num_dv )

# Fazendo o `merging ' destes dois arquivos de dados x m e r g e ( t_ mor ador_ s , p o s t s t r ) # E note que o nmero de registros no muda.
n r o w ( x ) == n r o w ( t _ m o r a d o r _ s )

[1] TRUE

Preparao dos dados


# Transformar altura para metros x transform (x ,
altura_imputado = altura_imputado / 100) x

transform (x ,

# Definir grupos de idades


idade.cat = cut ( idade_anos , c (20 ,25 ,30 ,35 ,45 ,55 ,65 ,75 , I n f ) , include.lowest right = FALSE ) , = TRUE ,

# Criar varivel ndice de massa corporal ( imc ) , excluindo bebs ( altura_imputado == 0)


bmi = i f e l s e ( a l t u r a _ i m p u t a d o == 0 , 0, peso_imputado / ( a l t u r a _ i m p u t a d o )

2) )

Preparao dos dados


# Construir trs variveis binrias ( zeros e uns ) que sero usadas em anlises subsequentes x transform (x , # Indivduos com imc baixo - deficincia de peso
under = i f e l s e ( bmi > 0 & bmi < 1 8 . 5 , 1, 0) ,

# Indivduos com imc alto - excesso de peso o v e r = i f e l s e ( bmi 2 5 , 1 , 0 ) , # Indivduos com imc muito alto - obeso o b e s e = i f e l s e ( bmi 3 0 , 1 , 0 )
)

# Adicionar uma coluna com apenas uns ao data frame x $ one 1

Plano amostral da POF


Criadas as variveis derivadas que sero utilizadas na anlise, podemos agora criar o objeto com o plano amostral Caso o pacote survey no esteja instalada no computador do usurio, este pode ser instalado pela funo install.packages.
i n s t a l l . p a c k a ge s (" survey ")

Carregar o pacote e especicar suas opes


# Carregar o pacote survey ( analisar pesquisas com desenhos complexos )
l i b r a r y ( survey , warn.conflicts = FALSE )

# Tratamento para estratos com UPA nica ( opo MISSUNIT do SUDAAN )


options ( survey.lonely.psu = " adjust ")

Plano amostral da POF


Criar um objeto com as informaes do plano amostral da POF.
sample.pof

svydesign (

c o n t r o l , = e s t r a t o _ u n i c o , w e i g h t s = f a t o r _ e x p a n s a o 1
id = strata data = x , nest ) = TRUE

Observe que o objeto sample.pof corresponde ao desenho original da amostra e no dever ser usado nos comandos de anlise. Este objeto ainda no foi apropriadamente ps-estraticado, como utilizado pelo IBGE para obter exatamente projees do censo de 2010.

Ps-estraticao
O bloco a seguir determina quais totais de ps-estraticao devem ser usados.
# Totais de ps-estratificao pop.totals data.frame (
pos_estrato ) = unique ( x$ pos_estrato ) , Freq = u n i q u e ( x $ tot_pop )

# Este bloco conduz ps-estratificao real do objeto de desenho sample.pof pof.design.pos postStratify (
sample.pof ,

p o s _ e s t r a t o
pop.totals )

Exemplos de estimao
Antes de reproduzir a Tabela 15, apresentamos comandos para gerar alguns exemplos de anlises de dados da POF.
# Contando o nmero total ( no-ponderado ) de registros da POF por sexo
svyby (

o n e , s e x o

pof.design.pos , unwtd.count )

01 02

sexo counts se 01 93175 0 02 96984 0

Exemplos de estimao
# Estimando a populao do Brasil
svytotal (

o n e
)

pof.design.pos

total SE one 190519299 0 # Estimando a populao do Brasil por sexo


svyby (

o n e , s e x o

pof.design.pos , svytotal )

01 02

sexo one se 01 92909556 261833 02 97609743 261833

Exemplos de estimao
# Estimar a idade mdia ( varivel numrica )
svymean (

i d a d e _ a n o s
design ) =

pof.design.pos

mean SE idade_anos 31.6 0.12 # Estimar a idade mdia por sexo


svyby (

i d a d e _ a n o s s e x o ,
design ) = svymean

pof.design.pos ,

01 02

sexo idade_anos se 01 30.7 0.131 02 32.6 0.139

Exemplos de estimao
Calculando a distribuio de uma varivel categrica.
# Percentual em cada categoria de raa
svymean (

c o r _ r a c a
design ) =

, pof.design.pos

cor_raca01 cor_raca02 cor_raca03 cor_raca04 cor_raca05 cor_raca09

mean SE 0.47496 0 0.07728 0 0.00539 0 0.43525 0 0.00417 0 0.00296 0

Exemplos de estimao
# Percentual em cada categoria de sexo por faixa etria
svyby (

s e x o , i d a d e . c a t
design ) = svymean

pof.design.pos ,

[20 ,25) [25 ,30) [30 ,35) [35 ,45) [45 ,55) [55 ,65) [65 ,75) [75 , Inf ]

idade . cat sexo01 sexo02 se . sexo01 se . sexo02 [20 ,25) 0.503 0.497 0.00581 0.00581 [25 ,30) 0.496 0.504 0.00564 0.00564 [30 ,35) 0.479 0.521 0.00600 0.00600 [35 ,45) 0.473 0.527 0.00371 0.00371 [45 ,55) 0.467 0.533 0.00452 0.00452 [55 ,65) 0.465 0.535 0.00495 0.00495 [65 ,75) 0.454 0.546 0.00707 0.00707 [75 , Inf ] 0.416 0.584 0.00964 0.00964

Exemplos de estimao

# Estimando a mediana e outros percentis


svyquantile (

i d a d e _ a n o s
design c (0 , ) = 0 .25 ,

, 0 .5 , 0 .75 , 1)

pof.design.pos ,

0 0.25 0.5 0.75 1 idade_anos 0 15 29 46 104

Exemplos de estimao

# Estimando a mediana e outros percentis por sexo


svyby (

i d a d e _ a n o s s e x o ,
design c (0 .25 , ci ) =

pof.design.pos , 0 .75 ) ,

svyquantile , 0 .5 , = TRUE

01 02

sexo 0.25 0.5 0.75 se .0.25 se .0.5 se .0.75 01 14 28 45 0 0.255 0.000 02 15 30 47 0 0.000 0.255

Exemplos de estimao

Exemplo de domnio: restrinja o objeto pof.design.pos a mulheres no-grvidas e pessoas com idade de 20 anos ou mais.
pof.design.pos.npadults subset ( pof.design.pos , idade_anos )

20 & c o d _ g r a v i d a

!= " 0 1 "

Exemplos de estimao
Agora qualquer um dos comandos anteriores pode executado de novo usando o objeto pof.design.pos.npadults no lugar do objeto pof.design.pos para fazer anlises apenas sobre mulheres no-grvidas e pessoas com idade de 20 anos ou mais.
# Estimar a mdia da idade ( varivel numrica )
svymean (

i d a d e _ a n o s
design ) =

pof.design.pos.npadults

mean SE idade_anos 42.9 0.11

Exemplos de estimao
# Calcular um estimador de razo para determinar a prevalncia entre os indivduos nesta populao.
svyratio (

u n d e r o n e ,
)

pof.design.pos.npadults

Ratio estimator : svyratio . survey . design2 (under , one , pof . design . pos . npadults ) Ratios = one under 0.0272 SEs = one under 0.000684

Exemplos de estimao

Observe que no numerador so includos os indivduos da subpopulao considerada com dcit de peso, enquanto no denominador so includos todos os indivduos da subpopulao. Embora seja mais fcil usar a funo svyratio para estimar um nico valor da prevalncia, bem mais simples usar os comandos svymean e svyby para reproduzir a Tabela 15, que fornecero a tabela completa com muito menos trabalho.

Exemplos de estimao
Dena uma frmula que ser usada em vrios comandos subsequentes
formulas

u n d e r

over

+ obese

# Executar um `svyby ' que armazena resultados em um novo objeto e os imprime na tela , porque o comando foi encapsulado por () ( t o t a l svyby (
formulas ,

o n e

pof.design.pos.npadults , svymean ) )

one under over obese se . under se . over se . obese 1 0.0272 0.49 0.148 0.000684 0.00271 0.0019

Exemplos de estimao
# Guardar em trs outros objetos mais trs chamadas de svyby sexo svyby ( formulas , s e x o ,
pof.design.pos.npadults , svymean ) idade

svyby ( formulas ,

i d a d e . c a t
svymean ) idade.sexo

pof.design.pos.npadults ,

svyby ( formulas ,

i d a d e . c a t
svymean )

+ sexo ,

pof.design.pos.npadults ,

Exemplos de estimao

# Imprimir algumas estatsticas e coeficientes de variao a partir dos objetos criados


coef ( total )

1: under 0.0272
cv ( t o t a l )

1: over 1: obese 0.4899 0.1475

se . under se . over se . obese 0.0251 0.00554 0.0129

Exemplos de estimao

coef ( sexo )

01: under 02: under 0.0180 0.0357


SE ( s e x o )

01: over 0.5010

02: over 01: obese 02: obese 0.4796 0.1238 0.1694

se . under se . over se . obese 01 0.000756 0.00359 0.00244 02 0.001140 0.00344 0.00257

Exemplos de estimao
Combinando os totais estimados de classes de idade com seus coecientes de variao numa s tabela
library ( xtable ) idade.result idade.result

cbind ( data.frame ( idade ) ,

cv ( i d a d e ) )

d a t a . f r a m e ( I d a d e= i d a d e . r e s u l t [ , 1 ] , 100 i d a d e . r e s u l t [ , 2 : 4 ] , 100 c v ( i d a d e ) )

muda

function ( str ){ gsub ( " \ \ [ " , " \\{\\[\\} " , } str )

nam es ( i d a d e . r e s u l t ) c(" age.cat " , " obese " , " cv.obese ")

" over " , " cv.over " ,

" under " ,

" cv.under " ,

Exemplos de estimao
# Formatar sada
print ( xtable ( idade.result , caption = " Prevalncia obesidade ") , digits de = 1, fixed = TRUE , e subpeso , size sobrepeso = muda ,

sanitize.text.function = FALSE ,

include.rownames

= " footnotesize ")

age.cat [20,25) [25,30) [30,35) [35,45) [45,55) [55,65) [65,75) [75,Inf ]

under 5.7 3.2 2.4 1.4 1.8 2.1 3.2 4.4

over 27.3 38.2 47.4 52.8 58.3 60.7 56.1 48.5

obese 5.6 9.6 12.9 15.6 19.2 21.3 17.9 15.8

cv.under 4.6 5.7 7.9 6.7 7.6 9.0 8.1 8.8

cv.over 2.1 1.7 1.3 1.0 0.9 1.1 1.4 2.5

cv.obese 4.8 4.2 3.3 2.4 2.3 2.7 3.7 5.4

Tabela 1 : Prevalncia de subpeso, sobrepeso e obesidade

Exemplos de estimao
Guardando os coecientes de variao das estimativas de totais de classes de idade por sexo em um novo data frame chamado cv.df
cv.df

d a t a . f r a m e ( cv ( i d a d e . s e x o ) )

Note que usamos sub em vez de gsub. Isto ocorre porque apenas a primeira instncia de `se' deve ser substituda por `cv' e no as capturas subsequentes
nam es ( c v . d f )

sub ( " se " ,

" cv " ,

na mes ( c v . d f ) )

Veja o help da funo usando: ?sub (sub substitui apenas a primeira ocorrncia de um padro enquanto gsub substitui todas as ocorrncia)

Exemplos de estimao
Guardando as estatsticas principais e desvios padres de idade por sexo em um segundo data.frame chamado idade.sexo.df.
idade.sexo.df

data.frame ( idade.sexo )

Junte este com o objeto cv.df para criar classes de idade por sexo de dcit de peso, excesso de peso e obesidade.
idade.sexo.result idade = sexo =

data.frame (

idade.sexo.df [ ,1] , idade.sexo.df [ ,2] ,

100 i d a d e . s e x o . d f [ , 3 : 5 ] , 100 c v . d f ) nam es ( i d a d e . s e x o . r e s u l t ) " under " , " over " , " cv.under " , " cv.over " ,

c(" idade.cat " ,

" sexo " ,

" obese " , " cv.obese ")

Exemplos de estimao
# Imprimindo na tela
print ( xtable ( idade.sexo.result , caption = " Prevalncia de obesidade ") , size include.rownames = muda , digits = 1, sobrepeso = TRUE , e subpeso ,

= FALSE , fixed

sanitize.text.function = " tiny ")

idade.cat [20,25) [25,30) [30,35) [35,45) [45,55) [55,65) [65,75) [75,Inf] [20,25) [25,30) [30,35) [35,45) [45,55) [55,65) [65,75) [75,Inf]

sexo 01 01 01 01 01 01 01 01 02 02 02 02 02 02 02 02

under 3.3 2.1 1.2 0.9 1.3 2.0 2.5 3.0 8.3 4.3 3.5 1.9 2.2 2.2 3.8 5.4

over 30.1 42.4 52.8 55.7 58.7 58.0 52.2 43.8 24.2 33.8 42.2 50.0 57.9 63.0 59.4 51.9

obese 5.1 9.3 12.5 13.6 16.7 15.9 12.5 11.9 6.1 10.0 13.3 17.4 21.5 26.0 22.5 18.6

cv.under 8.1 10.2 12.8 10.9 11.5 16.0 12.4 14.2 5.7 7.1 9.6 8.4 10.1 10.5 10.5 10.9

cv.over 2.7 2.2 1.7 1.3 1.2 1.6 2.3 4.0 3.1 2.5 2.1 1.4 1.2 1.4 1.9 2.9

cv.obese 7.0 6.0 4.8 3.7 3.7 4.7 6.5 10.7 6.5 5.3 4.6 3.0 2.7 3.1 4.3 6.5

Tabela 2 : Prevalncia de subpeso, sobrepeso e obesidade

Exemplos de estimao

Os cdigos da varivel cod_cor_raca esto em `pof 1.pdf' no arquivo zip do questionrio no site
ftp://ftp.ibge.gov.br/Orcamentos_Familiares/Pesquisa_de_ Orcamentos_Familiares_2008_2009/Microdados/questionarios.zip

Exemplos de estimao

Vamos ver agora alguns exemplos de exportao.


# Calcular a distribuio de uma varivel categrica por sexo e guarde os resultados em um novo objeto s e x . b y . r a c e s v y b y (s e x o , c o r _ r a c a ,
design = pof.design.pos , svymean )

Exemplos de estimao

# Imprimir os resultados na tela


print ( xtable ( sex.by.race , digits = 4) )

01 02 03 04 05 09

cor_raca 01 02 03 04 05 09

sexo01 0.4769 0.5055 0.4466 0.4971 0.4441 0.4986

sexo02 0.5231 0.4945 0.5534 0.5029 0.5559 0.5014

se.sexo01 0.0023 0.0061 0.0249 0.0021 0.0211 0.0314

se.sexo02 0.0023 0.0061 0.0249 0.0021 0.0211 0.0314

Exemplos de estimao
Classe do objeto sex.by.race
class ( sex.by.race )

[1] " svyby "

" data . frame "

Este objeto pode ser convertido em um data frame.


sex.by.race

data.frame ( sex.by.race )

e ento imediatamente exportado como um arquivo csv no seu atual diretrio de trabalho
write.csv ( sex.by.race , " sex by race.csv ")

ou simplicado para conter apenas os valores que voc necessita. Eis aqui `percentual de homens' por raa, com desvios padres respectivos
male.by.race " ,

sex.by.race [ ,

c ( " cor_raca " ,

" sexo01

" se.sexo01 ") ]

Exemplos de estimao
Imprimir os novos resultados na tela
print ( xtable ( male.by.race ) )

01 02 03 04 05 09

cor_raca 01 02 03 04 05 09

sexo01 0.48 0.51 0.45 0.50 0.44 0.50

se.sexo01 0.00 0.01 0.02 0.00 0.02 0.03

Exportar resultados como arquivo csv no seu atual diretrio de trabalho


write.csv ( male.by.race , " male by race.csv ")

Exemplos de estimao
Grco de barras
barplot ( male.by.race [ , main = " P e r c e n t u a l " Parda " , 2] , de ylim = c (0 , por cor 0 .6 ) , ou raa " , home ns " No

names.arg = c ( " Branca " , " Indgena " ,

" Preta " , sabe " ) )

" Amarela " ,

Percentual de homens por cor ou raa


0.6 0.0 0.1 0.2 0.3 0.4 0.5

Branca

Preta

Amarela

Parda

Indgena

No sabe

Anlise de Microdados da PNAD Blog asdfree


Djalma Pessoa e Andr Costa

25/10/2013

Introduo
A Pesquisa Nacional por Amostra de Domiclios (PNAD) uma das principais fontes de informao sobre a populao brasileira; Implementada em 1967; Tem como nalidade a produo de informaes bsicas para o estudo do desenvolvimento socioeconmico do Pas; Abrange a populao residente nas unidades domiciliares (domiclios particulares e unidades de habitao em domiclios coletivos); Investiga as caractersticas gerais, de migrao, de educao, de fecundidade, de trabalho e rendimento; Realizada nos anos que no ocorre o Censo Demogrco; Microdados disponveis no website do IBGE (a partir da edio de 2001).

Introduo

Adota um plano amostral estraticado e conglomerado com um, dois ou trs estgios de seleo, dependendo do estrato. Mtodo utilizado para a correo dos pesos baseado nas projees ociais do IBGE para o total populacional; Varivel de ps-estraticao est disponibilizada no arquivo de microdados; Os ps-estratos so denidos de acordo com a Unidade da Federao, Regio Metropolitana e situao do setor.

Leitura dos dados da PNAD

O script download all microdata.R contido no blog permite baixar os dados de vrios anos da pesquisa.
# bloco de comandos para leitura de dados da PNAD l i b r a r y ( downloader ) s e t w d ( "C : /My D i r e c t o r y /PNAD/ " ) years.to.download c (2001:2009 , 2011:2012) s o u r c e _ u r l ( " h t t p s : // ra w .g i th ub . co m / ajdamico / usgsd / m a s t e r / P e s q u i s a %20 N a c i o n a l %20 p o r %20Amostra%20de %20 D o m i c i l i o s / download%20 a l l %20 m i c r o d a t a . R " , prompt = FALSE , echo = TRUE)

Execuo por meio de source de script do blog asdfree


Aps baixar os dados, podemos rodar o bloco de comandos para executar os exemplos de um dos scripts do blog. No exemplo a seguir, executado o script que calcula algumas estimativas para os dados de 2011
# bloco de comandos para clculo de estimativas na PNAD 2011 l i b r a r y ( downloader ) s e t w d ( "C : /My D i r e c t o r y /PNAD/ " ) s o u r c e _ u r l ( " h t t p s : // ra w .g i th ub . co m / ajdamico / usgsd / m a s t e r / P e s q u i s a %20 N a c i o n a l %20 p o r %20Amostra%20de %20 D o m i c i l i o s /2011%20 s i n g l e y e a r %20%20 a n a l y s i s %20 e x a m p l e s . R " , prompt = FALSE , echo = TRUE)

Preparao dos dados


Antes de executar os comandos de anlise de dados, supe-se que o diretrio de trabalho contm uma base de dados SQLite (.db) com os dados da PNAD 2012 Salve o nome do arquivo de base de dados (.db) que deve estar salvo no seu diretrio de trabalho
# nome do arquivo pnad.dbname " p n a d . d b "

Carregue as libraries necessrias, previamente instaladas:


l i b r a r y ( d o w n l o a d e r ) # carrega e ento roda a funo source () nos scripts de github l i b r a r y ( s u r v e y , w a r n . c o n f l i c t s = FALSE ) # analisa desenhos amostrais complexos l i b r a r y ( RSQLite ) # cria arquivos de base de dados em R library ( stringr ) # manipula sequncias de caracteres

Preparao dos dados

Abrir uma conexo com a base de dados


# abrir uma conexo db dbConnect ( S Q L i t e ( ) , pnad.dbname )

Especique a opo da library survey para tratar do caso de estratos com um s psu
# produz estimativas conservadoras de varincias
options ( survey.lonely.psu = " adjust ")

# esta opo coincide com a MISSUNIT no SUDAAN

Preparao dos dados

# load pnad-specific functions ( to remove invalid # SAS input script fields and postStratify a # database-backed survey object )
s o u r c e _ u r l ( " h t t p s : // ra w .g i th ub . co m / ajdamico / usgsd / m a s t e r / P e s q u i s a N a c i o n a l p o r Amostra de D o m i c i l i o s / p n a d . s u r v e y . R " , prompt = FALSE )

Not checking SHA -1 of downloaded file .

Cria objeto de desenho denido a partir de base de dados SQLite


Objeto contendo as informaes do desenho amostral
sample.pnad svydesign ( i d = v4618 , s t r a t a = v4617 , d a t a = " pnad2012 " , w e i g h t s = pre_wgt , n e s t = TRUE, dbtype = " SQLite " , dbname = " p n a d . d b " )

Ps-estraticao de objeto de desenho

Ps-estraticao
y pnad.postStratify ( design = sample.pnad , s t r a t a . c o l = ' v4609 ' , o l d w g t = ' pre_wgt ' )

Consideraes sobre o procedimento de leitura

O procedimento de leitura anterior cria uma base de dados na memria de disco, sendo adequado para os casos em que o usurio no dispe de um computador com muita memria ram No entanto, este procedimento possui algumas desvantagens:
exige conhecimento da linguagem sql (por exemplo, so utilizados comandos sql para recodicar variveis); algumas funes do pacote survey no esto disponveis para objetos de desenho criados a partir de bases do tipo SQLite;

Mtodo alternativo para leitura dos dados


Uma alternativa ler o conjunto inteiro para o R, criando um data frame:
# Criar data frame com todas as variveis da PNAD 2012 x dbReadTable ( db , ' pnad2012 ' )

Para no sobrecarregar a memria ram basta guardar as variveis que denem o plano amostral da PNAD:
# Filtrar base de dados x dbGetQuery ( db , ' s e l e c t v4618 , v4617 , pre_wgt , v4609 , . . . from pnad2012 ' )

Pode-se ento usar as funes:


transform para executar as recodicaes necessrias; svydesign da library survey para denir o objeto de desenho da PNAD; postStratify para ps-estraticar o objeto de desenho.

Exemplos de anlise
Tamanho da amostra por regio
svyby ( one , r e g i o n , y, unwtd.count )

1 2 3 4 5

region counts se 1 56876 0 2 105780 0 3 105500 0 4 55779 0 5 38516 0

Exemplos de anlise
Estimativa da populao do pas na PNAD
s v y t o t a l (one , y)

total SE one 196877310 0

Estimativa da populao do pas por regio


s v y b y (one , r e g i o n , y, svytotal )

1 2 3 4 5

region 1 2 3 4 5

one 16729971 54642942 82686664 28052518 14765215

se 1.60 e -11 1.63 e -11 7.67 e -11 0.00 e +00 1.70 e -11

Exemplos de anlise
Calcular a mdia da idade
svymean (v8005 , design = y)

mean SE v8005 33.1 0.07

Calcular a mdia da idade por regio


s v y b y (v8005 , r e g i o n , design = y , svymean )

1 2 3 4 5

region v8005 se 1 28.5 0.133 2 31.7 0.110 3 34.5 0.123 4 34.8 0.164 5 32.0 0.176

Exemplos de anlise
Distribuio de uma varivel categrica: percentagem de homens e mulheres no pas
svymean ( f a c t o r ( v0302 ) , design = y)

mean SE M 0.487 0 F 0.513 0

Por regio
s v y b y ( f a c t o r ( v0302 ) , r e g i o n , d e s i g n = y , svymean )

1 2 3 4 5

region 1 2 3 4 5

M 0.504 0.485 0.483 0.488 0.493

F 0.496 0.515 0.517 0.512 0.507

se . M 0.00184 0.00141 0.00124 0.00168 0.00196

se . F 0.00184 0.00141 0.00124 0.00168 0.00196

Exemplos de anlise
Calcular a mediana e outros percentis
# minimum , 25 th , 50 th , 75 th , maximum ages s v y q u a n t i l e (v8005 , d e s i g n = y , c (0 .25 , 0 .5 , 0 .75 ) ) v8005 0.25 0.5 0.75 16 31 48

# by region s v y b y (v8005 , r e g i o n , d e s i g n = y , s v y q u a n t i l e , c ( 0 . 2 5 , 0 . 5 , 0 . 7 5 ) , c i = TRUE) 1 2 3 4 5 region 0.25 0.5 0.75 se0 .25 1 12 26 42 0.255 2 14 29 46 0.255 3 17 33 50 0.000 4 17 33 50 0.000 5 16 30 46 0.255 se0 .5 se0 .75 0.255 0.255 0.255 0.255 0.255 0.000 0.255 0.255 0.000 0.255

Exemplos de anlise
Subpopulao: restringir o objeto s as mulheres
y . f e m a l e s u b s e t ( y , v0302 == 4 )

Warning : 2 strata have only one PSU in this subset .

Qualquer um dos comandos pode ser rodado de novo para o objeto `y.female' Estimar a mdia de idades das mulheres:
svymean (v8005 , design = y.female )

v8005

mean SE 34 0.08

Exemplos de anlise
Calcular a distribuio de uma varivel categrica por regio e salvar os resultados em um novo objeto
gender.by.region s v y b y ( f a c t o r ( v0302 ) , r e g i o n , design = y , svymean )

Imprimir os resultados na tela


gender.by.region

1 2 3 4 5

region 1 2 3 4 5

M 0.504 0.485 0.483 0.488 0.493

F 0.496 0.515 0.517 0.512 0.507

se . M 0.00184 0.00141 0.00124 0.00168 0.00196

se . F 0.00184 0.00141 0.00124 0.00168 0.00196

Exemplos de anlise

Classe do objeto: `svyby'


class ( gender.by.region )

[1] " svyby "

" data . frame "

Extrair partes do objeto e imprimir na tela: estimativa de parmetro (coeciente)


coef ( gender.by.region )

1. M 2. M 3. M 4. M 5. M 1. F 2. F 3. F 4. F 5. F 0.50 0.48 0.48 0.49 0.49 0.50 0.52 0.52 0.51 0.51

Exemplos de anlise
Imprimir apenas do desvio padro
SE ( g e n d e r . b y . r e g i o n )

1 2 3 4 5

se . M 0.00184 0.00141 0.00124 0.00168 0.00196

se . F 0.00184 0.00141 0.00124 0.00168 0.00196

Imprimir apenas o cv
cv ( g e n d e r . b y . r e g i o n )

1 2 3 4 5

se . M 0.00366 0.00292 0.00256 0.00344 0.00397

se . F 0.00371 0.00275 0.00239 0.00328 0.00386

Exemplos de anlise

Converter o objeto em um `data frame'


gender.by.region data.frame ( gender.by.region )

Salvar em arquivo no atual diretrio de trabalho


w r i t e . c s v ( g e n d e r . b y . r e g i o n , " g e n d e r by r e g i o n . c s v " )

Simplicar o `data frame' para conter apenas os valores necessrios


f . b y . r e g i o n g e n d e r . b y . r e g i o n [ , c ( " r e g i o n " , "F" , " se.F ") ]

Exemplos de anlise
Imprimir os resultados na tela
f.by.region

1 2 3 4 5

region 1 2 3 4 5

F 0.496 0.515 0.517 0.512 0.507

se . F 0.00184 0.00141 0.00124 0.00168 0.00196

Exportar os resultados para um arquivo `.csv'


w r i t e . c s v ( f . b y . r e g i o n , " f e m a l e by r e g i o n . c s v " )

Exemplos de anlise
Construir um grco de barras
barplot ( f . b y . r e g i o n [ , 2 ] , ylim = c (0 , 0 .52 ) , main = " Female by R e g i o n " , n a m e s . a r g = c ( " North " , " N o r t h e a s t " , " S o u t h e a s t " , " South " , " Center West " ) )
Female by Region
0.5 0.0 0.1 0.2 0.3 0.4

North

Northeast

Southeast

South

CenterWest

Uso do R na amostra do Censo Demogrco 2010


Djalma Pessoa e Andr Costa

19 de novembro de 2013

Introduo
Desde 1960 o IBGE utiliza a tcnica de amostragem na coleta dos dados do Censo Demogrco do Brasil; No Censo 2010 os pesos foram ajustados por calibrao. Este mtodo permite que, dentro de uma determinada rea geogrca, ao se aplicar os pesos ajustados s variveis auxiliares, sejam obtidos totais j conhecidos para o universo da pesquisa, alm de melhorar a preciso dos estimadores e obter estimativas mais consistentes para as variveis pesquisadas somente pelo questionrio da amostra; A calibrao dos pesos foi realizada com base na metodologia utilizada no Censo 2000 (Bankier, Rathwell e Majkowski, 1992).

Seleo da amostra

O desenho amostral adotado compreende a seleo aleatria e com equiprobabilidade, dentro de cada setor censitrio, de uma amostra dos domiclios particulares e moradores em domiclios coletivos; O tamanho nal da amostra foi de:
6.192.332 domiclios; 20.635.472 pessoas

rea de ponderao
Unidade geogrca formada por agrupamento de setores censitrios; Utilizada para a aplicao dos procedimentos de expanso da amostra e obteno das estimativas referentes s caractersticas investigadas por amostragem no Censo Demogrco (menor nvel geogrco de divulgao); Seu tamanho, em termos de nmero de domiclios e de populao, no pode ser muito reduzido, sob pena de perda de preciso de suas estimativas; Em grandes municpios procurou-se formar reas que respeitem alguns agregados de interesse ao planejamento local (colaborao espontnea dos prprios municpios).

Ajuste dos fatores de expanso da amostra


Em cada rea de ponderao so calculados pesos iniciais (inverso da frao amostral efetiva) para cada unidade domiciliar pesquisada, que so, tambm, atribudos aos moradores dessas unidades; Estes pesos so ajustados (calibrados), de modo que quando aplicados a uma varivel do conjunto de variveis auxiliares, dentro de uma determinada rea de ponderao, o total estimado deve coincidir com o valor conhecido a partir do conjunto universo; Utiliza-se o mtodo de Mnimos Quadrados Generalizados (Srndal, Swensson e Wretman; Vanderhoeft; Lumley), com imposio de limites nos pesos nais;
Limite inferior: 1; Limite superior: 5 vezes o peso inicial;

Implementao: programa em R, com utilizao do pacote survey.

Variveis auxiliares (restries)

O conjunto de variveis auxiliares de calibrao ou restries, comuns aos questionrios bsico e da amostra, comporta informaes referentes a domiclios e pessoas; Compem a lista informaes sobre o total de pessoas e domicilios na rea de ponderao:
pessoas por sexo e faixa etria; pessoas por sexo e situao (urbana ou rural); responsveis por sexo; total de pessoas em domiclios particulares; tamanho dos domiclios; e situao dos domiclios

Anlise dos dados da amostra do Censo 2010 no R


# Diretrio de trabalho s e t w d ( "C : \ \ IBGE \\2013\\ SMI2013 \\ M i n i c u r s o \\ Censo " ) # Carregar library SAScii l i b r a r y ( SAScii ) # Criar diretrio e arquivo temporrios para receber a base de dados tf tempfile () # Criar pasta temporria para receber a base de dados td tempdir ( ) # FTP do IBGE f t p . p a t h " f t p : // f t p . i b g e . g o v . b r / Censos / Censo_Demografico_2010 / R e s u l t a d o s _ G e r a i s _ d a _ A m o s t r a / Microdados /"

Anlise dos dados da amostra do Censo 2010 no R

# Local da base de dados no FTP do IBGE ( Rondnia ) d a t a . f i l e paste0 ( f t p . p a t h , " RO.zip " ) # Download do arquivo d o w n l o a d . f i l e ( d a t a . f i l e , t f , mode = "wb" ) # Descompactar o arquivo num arquivo temporrio f i l e s unzip ( tf , e x d i r = td )

Anlise dos dados da amostra do Censo 2010 no R


# Ler arquivo de domiclios dados r e a d . S A S c i i ( fn = f i l e s [ 1 ] , s a s _ r i = " Leitura_domicilios_Censo_2010_amostra.txt ")

O arquivo Leitura_domicilios_Censo_2010_amostra.txt contm os comandos em SAS seguindo o layout do arquivo Layout_microdados_Amostra.xls


INPUT @1 @3 @8 @21 @29 @45 @54 @56 @105 @107 @126 ; L0001 V0002 V0011 V0300 V0010 L0002 V4001 L0003 V0401 L0004 V6531 $2. $5. $13. 8. 16.13 $9. $2. $49. 2. $19. 8.2

Anlise dos dados da amostra do Censo 2010 no R

As variveis L000X foram includas no cdigo apenas para facilitar o processo de leitura e no sero utilizadas nos passos seguintes
# Excluir variveis auxiliares d a d o s s u b s e t ( dados , s e l e c t = c ( L0001 , L0002 , L0003 , L0004 ) ) # Salvar arquivo rda no diretrio de trabalho s a v e ( dados , f i l e = " d a d o s . r d a " )

Anlise dos dados da amostra do Censo 2010 no R


# Estrutura do objeto s t r ( dados ) data . frame : 58314 obs . of 15 variables : $ V0002 : chr "00015" "00015" "00015" "00015" ... $ V0011 : chr "1100015001001" "1100015001001" "1100015001001" "1100015001001" ... $ V0300 : num 3624 6647 14596 15524 15840 ... $ V0010 : num 8.71 9.82 9.5 9.12 12 ... $ V4001 : chr "01" "01" "01" "01" ... $ V0401 : num 2 1 10 3 3 5 3 2 3 3 ... $ V6531 : num 500 1800 369 517 837 ... $ Nuf11 : num 468316 468316 468316 468316 468316 ... $ Nareapond : num 7443 7443 7443 7443 7443 ... $ NMORPOB1 : num 0 0 0 0 0 0 0 0 0 0 ... $ NMORPOB2 : num 0 0 0 0 0 0 0 0 0 0 ... $ NMORPOB3 : num 0 0 0 0 0 0 0 0 0 0 ... $ NMORPOB4 : num 0 0 0 0 0 0 0 0 0 0 ... $ NMORPOB5 : num 0 0 0 0 0 0 0 0 0 0 ... $ NMORPOB6 : num 0 0 0 0 0 5 0 0 0 0 ...

Anlise dos dados da amostra do Censo 2010 no R

# Total de domiclio na UF d a d o s $ Nuf11 sum ( d a d o s $ V0010 ) # Total de domiclio por rea de ponderao Nareapond t a p p l y ( d a d o s $V0010 , d a d o s $V0011 , sum ) d a d o s $ Nareapond Nareapond [ d a d o s $ V0011 ] a t t r i b u t e s ( d a d o s $ Nareapond ) NULL

Anlise dos dados da amostra do Censo 2010 no R

# Linhas de pobreza : 70 , 80 , 90 , 100 , 140 , 272 .50 z c ( 7 0 , 8 0 , 9 0 , 1 0 0 , 1 4 0 , 272 . 5 ) # Nmero de moradores pobres para cada d a d o s t r a n s f o r m ( dados , NMORPOB1 = ( V6531 < NMORPOB2 = ( V6531 < NMORPOB3 = ( V6531 < NMORPOB4 = ( V6531 < NMORPOB5 = ( V6531 < NMORPOB6 = ( V6531 < linha de pobreza z [1]) z [2]) z [3]) z [4]) z [5]) z [6]) V0401 , V0401 , V0401 , V0401 , V0401 , V0401 )

Anlise dos dados da amostra do Censo 2010 no R


# Carregar library survey l i b r a r y ( survey ) # Mtodo 1 - AAS des1UF s v y d e s i g n ( i d = 1 , f p c = Nuf11 , w e i g h t s = V0010 , data = dados ) # Mtodo 2 - AES ( Estratificado por rea de ponderao ) des2UF s v y d e s i g n ( i d = 1 , s t r a t a = V0011 , f p c = Nareapond , w e i g h t s = V0010 , data = dados ) # Definir o domnio de estimao ( DPP ) d e s 1 U F . s u b s u b s e t ( des1UF , V4001 == " 01 " ) d e s 2 U F . s u b s u b s e t ( des2UF , V4001 == " 01 " )

Anlise dos dados da amostra do Censo 2010 no R

# Calcular estimativas para o mtodo 1 Res1UF s v y r a t i o (NMORPOB1 + NMORPOB2 + NMORPOB3 + NMORPOB4 + NMORPOB5 + NMORPOB6, V0401 , des1UF.sub , n a . r m = TRUE) # Calcular estimativas para o mtodo 2 Res2UF s v y r a t i o (NMORPOB1 + NMORPOB2 + NMORPOB3 + NMORPOB4 + NMORPOB5 + NMORPOB6, V0401 , des2UF.sub , n a . r m = TRUE)

Anlise dos dados da amostra do Censo 2010 no R

# Coeficientes Est1UF r o u n d ( 1 0 0 c o e f ( Res1UF ) , 2 ) NMORPOB1 NMORPOB2 NMORPOB3 NMORPOB4 NMORPOB5 NMORPOB6 8.94 9.66 10.67 11.25 17.10 37.60 Est2UF r o u n d ( 1 0 0 c o e f ( Res2UF ) , 2 ) NMORPOB1 NMORPOB2 NMORPOB3 NMORPOB4 NMORPOB5 NMORPOB6 8.94 9.66 10.67 11.25 17.10 37.60

Anlise dos dados da amostra do Censo 2010 no R


# Coeficientes de variao ( Cv1UF r o u n d ( 1 0 0 c v ( Res1UF ) , 2 ) ) V0401 1.53 1.47 1.41 1.37 1.09 0.63

NMORPOB1 NMORPOB2 NMORPOB3 NMORPOB4 NMORPOB5 NMORPOB6

( Cv2UF r o u n d ( 1 0 0 c v ( Res2UF ) , 2 ) ) V0401 1.51 1.46 1.39 1.36 1.07 0.61

NMORPOB1 NMORPOB2 NMORPOB3 NMORPOB4 NMORPOB5 NMORPOB6

Referncias

Bankier, M.B., Rathwell, S. e Majkowski, M. (1992) Two step generalized least squares estimation in the1991 canadian census. Srndal, C.E., Swensson, B. e Wretman, J. (1992) Model assisted survey sampling, Springer-verlag New York, Inc. New York. Vanderhoeft, C. (2001) Generalised Calibration at Statistics Belgium: SPSS R Module g-CALIB-S and Current Practices, disponvel em http://statbel.fgov.be/fr/binaries/ paper03[1]_tcm326-35412.pdf. Acesso em: 16/11/2011.