datazoom.social

CRAN status CRAN RStudio mirror downloads CRAN RStudio mirror downloads Languages Commits Open Issues Closed Issues Files Followers

The datazoom.social package facilitates access to official Brazilian social data.

This package is in development: more datasets will be added soon.

In the first version of the package, the focus is on the Continuous PNAD panel. We allow for many quarters to be easily downloaded and read, and provide identification of individuals across time forming a panel.

Installation

You can install the released version of datazoom.social from CRAN with:

install.packages("datazoom.social")

You can install the development version of datazoom.social from GitHub with:

install.packages("devtools")
devtools::install_github("datazoompuc/datazoom.social")

Data

load_pnadc Download PNADC of a range of quarters
build_pnadc_panel Identify individuals throughout time

Continuous PNAD

The load_pnadc function is a wrapper for get_pnadc from the package PNADcIBGE, with added identification algorithms for panel construction. For details on the identification algorithms, see vignette("BUILD_PNADC_PANEL").


Panel Structure:

The table below shows the first and last quarter (ANOtrimestre, e.g. 20121 = 2012 Q1) covered by each PNADC rotating panel:

Panel Start End
1 20121 20124
2 20121 20141
3 20132 20152
4 20143 20163
5 20154 20174
6 20171 20191
7 20182 20202
8 20193 20213
9 20204 20224
10 20221 20241
11 20232 20252
12 20243 20263
13 20254 20274
14 20271 20291

Usage:

Default:


load_pnadc(
  save_to = getwd(),
  years,
  quarters = 1:4,
  panel = "advanced_3",
  raw_data = FALSE,
  save_options = c(TRUE, TRUE),
  vars = NULL
)

To download PNADC data for all quarters of 2022 and 2023, with advanced fuzzy identification (Stage 3), simply run:

load_pnadc(
  save_to = "Directory/You/Would/like/to/save/the/files",
  years = 2022:2023,
  panel = "advanced_3"
)

To download PNADC data for all of 2022, but only the first quarter of 2023, run:

load_pnadc(
  save_to = "Directory/You/Would/like/to/save/the/files",
  years = 2022:2023,
  quarters = list(1:4, 1)
)

To download PNADC data without any variables treatment or identification (e.g., for all quarters of 2021), run:

load_pnadc(
  save_to = "Directory/You/Would/like/to/save/the/files",
  years = 2021,
  panel = "none",
  raw_data = TRUE
)

To download PNADC data, save quarters on disk, and save panels as Parquet, run:

load_pnadc(
  save_to = "Directory/You/Would/like/to/save/the/files",
  years = 2022,
  save_options = c(TRUE, FALSE)
)

To download PNADC data and save panels as RDS but discard the quarterly files, run:

load_pnadc(
  save_to = "Directory/You/Would/like/to/save/the/files",
  years = 2022,
  save_options = c(FALSE, TRUE)
)

To download only a specific subset of variables — for example, age (V2009) and habitual income (VD4019) — alongside the structural columns that PNADcIBGE always returns, run:

load_pnadc(
  save_to = "Directory/You/Would/like/to/save/the/files",
  years = 2022,
  vars = c("V2009", "VD4019")
)

Note: PNADcIBGE::get_pnadc() always downloads a set of ~210 structural columns regardless of the vars argument. These include survey design weights (V1027, V1028, V1028001V1028200, posest, posest_sxi), deflator variables (Habitual, Efetivo), and identifiers such as UF, Estrato, V1029, V1033, and ID_DOMICILIO. The vars argument adds columns on top of those; it does not restrict them. Use vars = NULL (the default) to download all available microdata columns.

If you specify vars and also request panel identification, any columns required by the identification algorithm that are absent from vars will be added automatically and a warning will tell you which ones were added. For example, when using panel = "advanced_3", the columns V2007, V20082, V20081, V2008, and V2003 must be present. If you omit them from vars, the function adds them for you:

# Only V2009 requested, but panel = "advanced_3" needs
# V2007, V20082, V20081, V2008 and V2003 — these are added automatically
# with a warning.
load_pnadc(
  save_to = "Directory/You/Would/like/to/save/the/files",
  years = 2022,
  panel = "advanced_3",
  vars = c("V2009", "VD4019")
)

Options:

  1. save_to: The directory in which the user desires to save the downloaded files.

  2. years: picks the years for which the data will be downloaded

  3. quarters: The quarters within those years to be downloaded. Can be either a vector such as 1:4 for consistent quarters across years, or a list of vectors, if quarters are different for each year (e.g. list(1:4, 1:2) for four quarters in the first year and two in the second).

  4. panel: Which panel algorithm to apply to this data. There are five options:

  5. raw_data: A command to define if the user would like to download the raw or treated data. There are two options:

  6. save_options: A logical vector of length 2 controlling file saving behavior:

  7. vars: A character vector of additional variable names to download, following the same convention as vars in PNADcIBGE::get_pnadc(). Use NULL (the default) to download all available microdata columns. See the note above regarding the ~210 structural columns that are always returned by PNADcIBGE::get_pnadc() regardless of this argument


Details:

The function performs the following steps:

  1. Loop over years and quarters using PNADcIBGE::get_pnadc to download the data. All quarters are collected in memory and saved depending on save_options.
  2. Split the data into panels by the panel variable V1014.
  3. Apply the identification algorithms defined in build_pnadc_panel.
  4. Save the panel files as .rds or .parquet, depending on save_options.


PNAD Panel Identification


Usage:

Basic Panel:

panel_data <- build_pnadc_panel(dat = pnad_sample, panel = "basic")

Advanced Panel (Stages 1, 2, or 3):

# Stage 1: Exact matching with donated birth dates
panel_data <- build_pnadc_panel(dat = pnad_sample, panel = "advanced_1")

# Stage 2: Relaxed matching constraints
panel_data <- build_pnadc_panel(dat = pnad_sample, panel = "advanced_2")

# Stage 3: Fuzzy matching using Graph Theory (Recommended)
panel_data <- build_pnadc_panel(dat = pnad_sample, panel = "advanced_3")

Description

Our load_pnadc function uses the internal function build_pnadc_panel to identify households and individuals across quarters. The base method used for the identification draws from the paper of Ribas, Rafael Perez, and Sergei Suarez Dillon Soares (2008): “Sobre o painel da Pesquisa Mensal de Emprego (PME) do IBGE”, with modernizations implemented by the Data Zoom team to handle missing data and typographical errors.


Basic Identification

The household identifier – stored as id_dom – combines the variables:

In order to create a unique number for every combination of those variables.


The basic individual identifier – stored as id_ind – combines the household id with:

In order to create a unique number for every combination of those variables.


Advanced Identification

On individuals who were not matched across all interviews using the basic method, we apply a progressive multi-stage algorithm to increase matching power without compromising uniqueness.

Identification Rates

The table below shows the average unconditional tracking rates (base line) obtained using the basic and advanced identification algorithms across multiple panels.

Note: Following the Data Zoom methodological guidelines, we reserve the term Attrition strictly for the dropout of households. When referring to individuals (people), we use the term Identification Rate. Wave 1 represents the pure initial identification rate (data lost exclusively due to the inability to construct a valid identifier or household grouping constraints). The subsequent waves (2 to 5) represent the cumulative loss of tracked data over time.

Interview (Wave) Basic Rate (%) Adv 1 Rate (%) Adv 2 Rate (%) Adv 3 Rate (%) Difference (Adv 3 - Basic)
1 93.82378 95.82954 96.40170 96.39606 + 2.57228 p.p.
2 81.63945 84.52960 85.32100 85.63223 + 3.99278 p.p.
3 75.58231 78.90345 79.87407 80.37762 + 4.79531 p.p.
4 71.13217 74.66729 75.75082 76.39818 + 5.26601 p.p.
5 67.56865 71.18041 72.31560 73.06694 + 5.49829 p.p.

Each cell in the rate columns represents the percentage of raw PNADC individual observations successfully identified and tracked in that specific interview, using the total number of raw lines from Wave 1 as the universal denominator.


Credits

DataZoom is developed by a team at Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio), Department of Economics. Our official website is at: https://datazoom.com.br/en/.

To cite package datazoom.social in publications use:

Data Zoom (2023). Data Zoom: Simplifying Access To Brazilian Microdata.
https://datazoom.com.br/en/

A BibTeX entry for LaTeX users is:

@Unpublished{DataZoom2024,
    author = {Data Zoom},
    title = {Data Zoom: Simplifying Access To Brazilian Microdata},
    url = {https://datazoom.com.br/en/},
    year = {2024}}