O pacote pdadr dá acesso aos microdados da Pesquisa Distrital por Amostra de Domicílios do Distrito Federal e entorno (PDAD-A) 2024, divulgados pelo IPE/DF em https://pdad.ipe.df.gov.br/, e acompanha uma tabela de metadados completa das bases de domicílios e moradores.
Metadados
A tabela pdadmeta reúne, em formato longo (tidy), o
dicionário de variáveis oficial: para cada variável, sua descrição e,
quando codificada, os códigos e respectivos rótulos.
# consultar os metadados de uma variável
dicionario(coluna = "localidade")
# todas as variáveis da base de moradores
dicionario(base = "moradores")
# busca por expressão regular: todas as variáveis de renda
dicionario(coluna = "^renda|renda$")A coluna anexo indica de qual planilha do dicionário
oficial os códigos foram extraídos (“anexo_1” a “anexo_11”).
Microdados
get_pdad() baixa e lê as bases, com cache local (o
download ocorre uma única vez por máquina):
dom <- get_pdad("domicilios")
mor <- get_pdad("moradores")
# as duas bases de uma vez (lista nomeada)
dados <- get_pdad(c("domicilios", "moradores"))Com rotular = TRUE, as variáveis codificadas já retornam
como factor com os rótulos do dicionário:
Também é possível rotular um data.frame já carregado com
rotular(), que infere a base a partir das colunas
presentes.
Pesos e análise
As bases trazem pesos de expansão: peso_dom (domicílios)
e peso_mor (moradores), além do deflator
infla_ipcadf (as variáveis de renda com sufixo
_r já vêm corrigidas pela inflação).
estimar() calcula médias, totais e proporções
ponderadas, com desagregação por qualquer coluna:
dom <- get_pdad("domicilios")
# renda domiciliar média por RA (valores corrigidos pela inflação)
estimar(dom, "renda_domiciliar_r", tipo = "media", por = "localidade")
# proporção ponderada de domicílios por situação (após rotular)
estimar(rotular(dom), "A01uf", tipo = "proporcao")Antes de estimar variáveis com códigos reservados (77777 = Recusa,
88888 = Não sabe, 99999 = Não se aplica), converta-os em NA
com limpar_reservados().
Para usar o ecossistema do pacote survey,
design_pdad() cria o desenho amostral ponderado:
desenho <- design_pdad(dom)
survey::svymean(~renda_domiciliar_r, desenho)
survey::svyby(~renda_domiciliar_r, ~localidade, desenho, survey::svymean)Como o IPE/DF não divulga as unidades primárias de amostragem nem os
estratos, o desenho é apenas ponderado (ids = ~1):
erros-padrão do survey subestimam a variância amostral e
não devem ser usados para inferência (as estimativas pontuais não são
afetadas).
Por fim, juntar_bases() cruza as bases pela chave do
domicílio (A01nficha), sufixando as colunas comuns com
_dom/_mor:
bases <- get_pdad(c("domicilios", "moradores"))
dados <- juntar_bases(bases$domicilios, bases$moradores)
# com os dois pesos presentes, informe qual usar
estimar(dados, "renda_total_r", peso = "peso_mor")Territórios e harmonização com o IBGE e o geobr
A variável localidade identifica os 48 territórios da
amostra: 36 Regiões Administrativas (RAs) do DF e 12 municípios goianos
do entorno. As funções localidades() e
setores() trazem a correspondência com os códigos do
IBGE:
head(localidades())
setores(localidade = "Ceilândia")A estrutura territorial importa para a harmonização:
- o IBGE trata o DF como um único município (5300108,
Brasília); no recorte mais fino do Censo 2022, as RAs correspondem aos
subdistritos do distrito de Brasília (coluna
cod_ibge_subdistrito, com 11 dígitos); - os municípios goianos correspondem diretamente a municípios IBGE
(
cod_ibge_municipio); - as localidades Arapoanga, Água Quente e Área Rural não têm
correspondente no Censo 2022 (as duas primeiras foram criadas após o
Censo; a última não é subdistrito) e ficam com
cod_ibge_subdistrito = NA.
Mapas em nível de município
library(geobr)
# todos os territórios da amostra sobre o mapa de municípios do Censo 2022
muns <- read_municipality(code = "all", year = 2022)
mapa_mun <- merge(muns, localidades(), by.x = "code_muni",
by.y = "cod_ibge_municipio")
plot(mapa_mun["nome"])Mapas em nível de RA
Como as RAs não existem como unidade própria nas tabelas do IBGE, o polígono de cada RA é obtido agregando os setores censitários do Censo 2022 por subdistrito:
# setores censitários do DF e agregação por subdistrito (= RA)
ct <- read_census_tract(5300108, year = 2022)
ras <- stats::aggregate(
ct["code_subdistrict"],
by = list(cod_ibge_subdistrito = ct$code_subdistrict),
FUN = function(x) x[1]
)
mapa_ra <- merge(ras, localidades(), by = "cod_ibge_subdistrito")
plot(mapa_ra["nome"])Com os dados agregados por RA (ex.: renda média via
estimar(..., por = "localidade")), basta um novo
merge() pela coluna valor para produzir
cartogramas temáticos da PDAD-A 2024.
Códigos reservados e particularidades dos dados
O questionário usa códigos reservados, presentes no dicionário em 185 variáveis:
| Código | Significado |
|---|---|
| 77777 | Recusa |
| 88888 | Não sabe |
| 99999 | Não se aplica |
Outras particularidades constatadas na auditoria dos microdados
contra o dicionário (data-raw/auditoria_metadados.csv no
repositório):
-
Vírgula decimal misturada: parte das colunas
numéricas (
peso_dom,peso_mor,infla_ipcadfe todas as rendas com sufixo_r) usa vírgula como separador decimal, enquanto o restante dos arquivos usa ponto.get_pdad()normaliza essas colunas paranumericautomaticamente. -
Colunas de quantidade: em 47 variáveis (ex.:
C07_x,C11_x,B12) o dicionário só codifica0 = Não teme os códigos reservados; os demais valores são as próprias quantidades, lidas como numéricas. -
Lacunas do dicionário oficial:
localidadenão tem códigos na planilha de moradores (use os códigos da base de domicílios);D15registra99999e0não previstos;E15_BeG06_1/G06_2têm valores observados fora da lista oficial;E08_1(CEP) é texto livre. Nessas colunasrotular()preserva os valores originais.