O IBGE divulga diversas tabulações em planilhas e na plataforma SIDRA, mas o conjunto de possibilidades de relatórios que essas fontes são capazes de gerar não correspondem à diversidade de cruzamentos que botar a mão nos microdados proporciona.
Em uma pesquisa rápida nos pedidos do e-SIC, é possível ver que vários profissionais que recorrem à lei 12.527/2011 para obtenção de dados oficiais se esbarram na dificuldade de abrir e manipular as tabelas de dados brutos. Como a lei não obriga as instituições públicas a produzirem dados derivados daqueles divulgados oficialmente, muitos estudantes ou jornalistas se veem diante da necessidade de aprender a fazer as suas próprias análises, sem terceirizar este processo tão importante.
Este manual se destina a qualquer pessoa que tenha a necessidade de abrir os microdados do Censo Demográfico do IBGE, e de produzir relatórios diversificados. Visa, também, enriquecer as fontes em português sobre o assunto, que são poucas.
Para garantir a verificabilidade do script, será reproduzida a tabela 1378 do SIDRA, todavia, qualquer operação entre variáveis está limitada somente às possibilidades do R e do pacote survey.
Assume-se aqui que o leitor saiba abrir dados tabulares em R e manipulá-los minimamente através do ecossistema tidyverse.
Este script e a tabela de exemplo estão hospedados no GitHub. A tabela usada aqui é derivada dos microdados originais e representa apenas o município de Montes Claros. Os microdados originais são distribuídos em formato de texto e estão organizados em colunas de largura fixa, e podem ser abertos utilizando as funções read_fwf e read.fwf. Os cabeçalhos com as respectivas larguras são encontrados no servidor FTP do IBGE, junto com os microdados.
A biblioteca tidyverse servirá para manipular os dados tabulares e a biblioteca survey servirá para expandirmos a amostra do Censo Demográfico de 2010.
library(tidyverse)
library(survey)
Ao contrário do arquivo original, este arquivo de exemplo está separado por pontos e vírgulas (;). Também não é garantido que o arquivo obtido no IBGE estará codificado em UTF-8.
sample <- read.table(
file = "./data/1378.csv",
header = TRUE,
sep = ";",
encoding = "UTF-8"
)
str(sample)
## 'data.frame': 35718 obs. of 9 variables:
## $ V0001: int 31 31 31 31 31 31 31 31 31 31 ...
## $ V0002: int 43302 43302 43302 43302 43302 43302 43302 43302 43302 43302 ...
## $ V1006: int 1 1 1 1 1 1 1 1 1 1 ...
## $ V0010: num 13.31 13.31 9.63 9.63 9.63 ...
## $ V0011: num 3.14e+12 3.14e+12 3.14e+12 3.14e+12 3.14e+12 ...
## $ V0502: int 16 1 4 1 4 4 4 2 4 2 ...
## $ V0601: int 1 1 1 2 2 2 2 1 1 2 ...
## $ V6036: int 27 32 47 79 60 56 54 80 32 74 ...
## $ V6037: int NA NA NA NA NA NA NA NA NA NA ...
Nota-se que algumas variáveis não estão classificadas adequadamente. A função read_fwf permite especificar os tipos de dados no momento da leitura, mas pode ser necessário convertê-las para o tipo adequado. Vale dizer que não necessariamente os tipos especificados na planilha (A, C ou N) correspondem aos tipos de dados com os quais o R trabalha, sendo necessária alguma abstração por parte do profissional.
sample$V1006 <- as.factor(sample$V1006)
sample$V0502 <- as.factor(sample$V0502)
sample$V0601 <- as.factor(sample$V0601)
sample$V0502 <- as.factor(sample$V0502)
sample$V0011 <- as.character(sample$V0011)
sample$V6036 <- as.factor(sample$V6036)
sample$V6037 <- as.factor(sample$V6037)
str(sample)
## 'data.frame': 35718 obs. of 9 variables:
## $ V0001: int 31 31 31 31 31 31 31 31 31 31 ...
## $ V0002: int 43302 43302 43302 43302 43302 43302 43302 43302 43302 43302 ...
## $ V1006: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
## $ V0010: num 13.31 13.31 9.63 9.63 9.63 ...
## $ V0011: chr "3143302005001" "3143302005001" "3143302005001" "3143302005001" ...
## $ V0502: Factor w/ 20 levels "1","2","3","4",..: 16 1 4 1 4 4 4 2 4 2 ...
## $ V0601: Factor w/ 2 levels "1","2": 1 1 1 2 2 2 2 1 1 2 ...
## $ V6036: Factor w/ 103 levels "0","1","2","3",..: 28 33 48 80 61 57 55 81 33 75 ...
## $ V6037: Factor w/ 12 levels "0","1","2","3",..: NA NA NA NA NA NA NA NA NA NA ...
Agora que as variáveis estão adequadamente tipadas, é necessário gerar uma variável importante: a quantidade de indivíduos por estrato.
O censo demográfico é uma pesquisa realizada em todo o território nacional. Todas as edificações no país são classificadas, e em cada endereço considerado como Domicílio Particular Permanente é feita uma visita, salvo raras exceções como tribos indígenas que optam por não ter contato com os demais cidadãos, e outros casos mais excepcionais que são trabalhados pelo canal Vsauce.
No entanto, para otimizar a coleta, alguns questionamentos não são feitos em todos os domicílios. Em 2010, aproximadamente 10% de todos os domicílios foram aplicados questionários mais abrangentes e para manter a comparabilidade entre todos os recortes territoriais, o IBGE trabalha com amostras estratificadas. Embora, as amostras não são representativas para os setores censitários, elas são representativas para as áreas de ponderação.
As áreas de ponderação são conjuntos de setores censitários agrupados de maneira especificada por manual do IBGE. Para oficializar a divulgação de dados a estas escalas, o IBGE divulga suas próprias áreas de ponderação, suas tabelas agregadas e seus vetores para manipulação em SIG.
A variável N criada no próximo passo representa o número de pessoas por área de ponderação, o estrato da amostragem do Censo.
sample <-
sample %>%
group_by(V0011) %>%
mutate(qtdPessoas = n()) %>%
ungroup()
str(sample)
## tibble [35,718 × 10] (S3: tbl_df/tbl/data.frame)
## $ V0001 : int [1:35718] 31 31 31 31 31 31 31 31 31 31 ...
## $ V0002 : int [1:35718] 43302 43302 43302 43302 43302 43302 43302 43302 43302 43302 ...
## $ V1006 : Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
## $ V0010 : num [1:35718] 13.31 13.31 9.63 9.63 9.63 ...
## $ V0011 : chr [1:35718] "3143302005001" "3143302005001" "3143302005001" "3143302005001" ...
## $ V0502 : Factor w/ 20 levels "1","2","3","4",..: 16 1 4 1 4 4 4 2 4 2 ...
## $ V0601 : Factor w/ 2 levels "1","2": 1 1 1 2 2 2 2 1 1 2 ...
## $ V6036 : Factor w/ 103 levels "0","1","2","3",..: 28 33 48 80 61 57 55 81 33 75 ...
## $ V6037 : Factor w/ 12 levels "0","1","2","3",..: NA NA NA NA NA NA NA NA NA NA ...
## $ qtdPessoas: int [1:35718] 1425 1425 1425 1425 1425 1425 1425 1425 1425 1425 ...
Para reconstruir o plano amostral é necessário criar um objeto para o desenho amostral, do tipo survey design. Para o parâmetro strata (estrato), passa-se uma fórmula indicando a coluna com a identificação do estrato; para o parâmetro fpc (fator de correção para população finita), passa-se a quantidade de pessoas por área de ponderação; para o parâmetro weights (pesos), passa-se a coluna com os pesos; para o parâmetro data (dados), passa-se o data.frame.
design <- svydesign(
ids = ~1,
strata = ~V0011,
fpc = ~qtdPessoas,
weights = ~V0010,
data = sample
)
Construído o desenho amostral, parte-se para as tabulações.
Habitantes por situação do domicílios
svytotal(~V1006, design)
## total SE
## V10061 344427 0
## V10062 17488 0
svymean(~V1006, design)
## mean SE
## V10061 0.951679 0
## V10062 0.048321 0
Habitantes por sexo
svytotal(~V0601, design)
## total SE
## V06011 174249 0
## V06012 187666 0
svymean(~V0601, design)
## mean SE
## V06011 0.48146 0
## V06012 0.51854 0
Habitantes por idade (em anos)
svytotal(~V6036, design)
## total SE
## V60360 4726.3222 0
## V60361 4802.2414 0
## V60362 5037.1114 0
## V60363 5268.6548 0
## V60364 5507.6178 0
## V60365 5457.2743 0
## V60366 5139.7116 0
## V60367 5555.1255 0
## V60368 5715.4010 0
## V60369 5769.4875 0
## V603610 6584.0946 0
## V603611 6216.2229 0
## V603612 6336.9650 0
## V603613 6001.1364 0
## V603614 6414.5811 0
## V603615 6591.7750 0
## V603616 6981.3248 0
## V603617 6449.7788 0
## V603618 6787.0476 0
## V603619 7333.0738 0
## V603620 7434.4546 0
## V603621 7353.3743 0
## V603622 7189.0894 0
## V603623 7686.5545 0
## V603624 7614.5272 0
## V603625 7061.4142 0
## V603626 7091.6840 0
## V603627 7162.1406 0
## V603628 7258.2889 0
## V603629 6931.4723 0
## V603630 7147.6467 0
## V603631 6525.7244 0
## V603632 6300.6566 0
## V603633 5545.0341 0
## V603634 6088.9382 0
## V603635 6016.4575 0
## V603636 5213.3031 0
## V603637 5341.6838 0
## V603638 5283.0688 0
## V603639 5085.4868 0
## V603640 5093.2440 0
## V603641 5068.9269 0
## V603642 4988.2765 0
## V603643 4771.6595 0
## V603644 4488.8932 0
## V603645 4649.7382 0
## V603646 4222.0895 0
## V603647 4685.0772 0
## V603648 4127.8926 0
## V603649 3907.2025 0
## V603650 4064.4938 0
## V603651 3500.3025 0
## V603652 3682.7939 0
## V603653 3871.2829 0
## V603654 3538.8306 0
## V603655 3137.1146 0
## V603656 2816.0455 0
## V603657 2727.9731 0
## V603658 2555.9913 0
## V603659 2571.1719 0
## V603660 2635.2109 0
## V603661 2242.0964 0
## V603662 2233.5338 0
## V603663 1929.1781 0
## V603664 2170.0111 0
## V603665 1727.8883 0
## V603666 1813.3313 0
## V603667 1551.3242 0
## V603668 1377.7966 0
## V603669 1378.6293 0
## V603670 1748.8101 0
## V603671 1341.1673 0
## V603672 1182.0622 0
## V603673 1110.0382 0
## V603674 1217.4279 0
## V603675 873.4947 0
## V603676 848.8906 0
## V603677 694.7797 0
## V603678 640.3204 0
## V603679 650.1041 0
## V603680 578.0294 0
## V603681 472.1570 0
## V603682 463.3694 0
## V603683 427.3406 0
## V603684 410.5174 0
## V603685 224.4825 0
## V603686 224.0822 0
## V603687 176.5799 0
## V603688 167.3136 0
## V603689 239.5958 0
## V603690 199.5308 0
## V603691 77.4415 0
## V603692 67.4052 0
## V603693 90.3649 0
## V603694 51.0089 0
## V603695 73.1495 0
## V603696 43.3884 0
## V603697 43.9029 0
## V603698 9.0867 0
## V603699 11.2804 0
## V6036100 8.6035 0
## V6036102 8.4762 0
## V6036106 6.8504 0
svymean(~V6036, design)
## mean SE
## V60360 1.3059e-02 0
## V60361 1.3269e-02 0
## V60362 1.3918e-02 0
## V60363 1.4558e-02 0
## V60364 1.5218e-02 0
## V60365 1.5079e-02 0
## V60366 1.4201e-02 0
## V60367 1.5349e-02 0
## V60368 1.5792e-02 0
## V60369 1.5942e-02 0
## V603610 1.8192e-02 0
## V603611 1.7176e-02 0
## V603612 1.7510e-02 0
## V603613 1.6582e-02 0
## V603614 1.7724e-02 0
## V603615 1.8214e-02 0
## V603616 1.9290e-02 0
## V603617 1.7821e-02 0
## V603618 1.8753e-02 0
## V603619 2.0262e-02 0
## V603620 2.0542e-02 0
## V603621 2.0318e-02 0
## V603622 1.9864e-02 0
## V603623 2.1239e-02 0
## V603624 2.1040e-02 0
## V603625 1.9511e-02 0
## V603626 1.9595e-02 0
## V603627 1.9790e-02 0
## V603628 2.0055e-02 0
## V603629 1.9152e-02 0
## V603630 1.9750e-02 0
## V603631 1.8031e-02 0
## V603632 1.7409e-02 0
## V603633 1.5321e-02 0
## V603634 1.6824e-02 0
## V603635 1.6624e-02 0
## V603636 1.4405e-02 0
## V603637 1.4759e-02 0
## V603638 1.4598e-02 0
## V603639 1.4052e-02 0
## V603640 1.4073e-02 0
## V603641 1.4006e-02 0
## V603642 1.3783e-02 0
## V603643 1.3184e-02 0
## V603644 1.2403e-02 0
## V603645 1.2848e-02 0
## V603646 1.1666e-02 0
## V603647 1.2945e-02 0
## V603648 1.1406e-02 0
## V603649 1.0796e-02 0
## V603650 1.1231e-02 0
## V603651 9.6716e-03 0
## V603652 1.0176e-02 0
## V603653 1.0697e-02 0
## V603654 9.7781e-03 0
## V603655 8.6681e-03 0
## V603656 7.7810e-03 0
## V603657 7.5376e-03 0
## V603658 7.0624e-03 0
## V603659 7.1044e-03 0
## V603660 7.2813e-03 0
## V603661 6.1951e-03 0
## V603662 6.1714e-03 0
## V603663 5.3305e-03 0
## V603664 5.9959e-03 0
## V603665 4.7743e-03 0
## V603666 5.0104e-03 0
## V603667 4.2864e-03 0
## V603668 3.8070e-03 0
## V603669 3.8093e-03 0
## V603670 4.8321e-03 0
## V603671 3.7058e-03 0
## V603672 3.2661e-03 0
## V603673 3.0671e-03 0
## V603674 3.3638e-03 0
## V603675 2.4135e-03 0
## V603676 2.3456e-03 0
## V603677 1.9197e-03 0
## V603678 1.7693e-03 0
## V603679 1.7963e-03 0
## V603680 1.5971e-03 0
## V603681 1.3046e-03 0
## V603682 1.2803e-03 0
## V603683 1.1808e-03 0
## V603684 1.1343e-03 0
## V603685 6.2026e-04 0
## V603686 6.1916e-04 0
## V603687 4.8790e-04 0
## V603688 4.6230e-04 0
## V603689 6.6202e-04 0
## V603690 5.5132e-04 0
## V603691 2.1398e-04 0
## V603692 1.8625e-04 0
## V603693 2.4968e-04 0
## V603694 1.4094e-04 0
## V603695 2.0212e-04 0
## V603696 1.1989e-04 0
## V603697 1.2131e-04 0
## V603698 2.5107e-05 0
## V603699 3.1169e-05 0
## V6036100 2.3772e-05 0
## V6036102 2.3421e-05 0
## V6036106 1.8928e-05 0
Habitantes por idade (em meses para menores de 1 ano)
svytotal(~V6037, design, na.rm = TRUE)
## total SE
## V60370 499.88 0
## V60371 366.02 0
## V60372 391.70 0
## V60373 405.20 0
## V60374 435.92 0
## V60375 257.02 0
## V60376 320.00 0
## V60377 417.78 0
## V60378 349.14 0
## V60379 368.50 0
## V603710 472.80 0
## V603711 442.35 0
svymean(~V6037, design, na.rm = TRUE)
## mean SE
## V60370 0.105766 0
## V60371 0.077444 0
## V60372 0.082876 0
## V60373 0.085734 0
## V60374 0.092233 0
## V60375 0.054381 0
## V60376 0.067706 0
## V60377 0.088394 0
## V60378 0.073871 0
## V60379 0.077967 0
## V603710 0.100035 0
## V603711 0.093593 0
Habitantes por condição no domicílio
svytotal(~V0502, design)
## total SE
## V05021 104162.473 0
## V05022 65885.442 0
## V05023 59.687 0
## V05024 98131.761 0
## V05025 42283.510 0
## V05026 4383.546 0
## V05027 3241.952 0
## V05028 3329.008 0
## V05029 763.824 0
## V050210 16804.545 0
## V050211 451.608 0
## V050212 9099.110 0
## V050213 150.613 0
## V050214 7955.756 0
## V050215 511.859 0
## V050216 2353.784 0
## V050217 117.616 0
## V050218 1079.857 0
## V050219 16.522 0
## V050220 1132.527 0
svymean(~V0502, design)
## mean SE
## V05021 0.28780922 0
## V05022 0.18204673 0
## V05023 0.00016492 0
## V05024 0.27114588 0
## V05025 0.11683271 0
## V05026 0.01211209 0
## V05027 0.00895777 0
## V05028 0.00919832 0
## V05029 0.00211051 0
## V050210 0.04643230 0
## V050211 0.00124783 0
## V050212 0.02514157 0
## V050213 0.00041615 0
## V050214 0.02198239 0
## V050215 0.00141431 0
## V050216 0.00650369 0
## V050217 0.00032498 0
## V050218 0.00298373 0
## V050219 0.00004565 0
## V050220 0.00312926 0
Habitantes por sexo, por condição do domicílio
svytotal(~interaction(V1006, V0601), design)
## total SE
## interaction(V1006, V0601)1.1 164985 0
## interaction(V1006, V0601)2.1 9264 0
## interaction(V1006, V0601)1.2 179442 0
## interaction(V1006, V0601)2.2 8224 0
svymean(~interaction(V1006, V0601), design)
## mean SE
## interaction(V1006, V0601)1.1 0.455867 0
## interaction(V1006, V0601)2.1 0.025597 0
## interaction(V1006, V0601)1.2 0.495813 0
## interaction(V1006, V0601)2.2 0.022724 0