List Balancing for Reweighting and Population Synthesis

Performs iterative proportional updating given a seed table and an arbitrary number of marginal distributions. This is commonly used in population synthesis, survey raking, matrix rebalancing, and other applications. For example, a household survey may be weighted to match the known distribution of households by size from the census. An origin/ destination trip matrix might be balanced to match traffic counts. The approach used by this package is based on a paper from Arizona State University (Ye, Xin, et. al. (2009) < http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.537.723&rep=rep1&type=pdf>). Some enhancements have been made to their work including primary and secondary target balance/importance, general marginal agreement, and weight restriction.


CRANstatus Travis build status Codecov test coverage

ipfr

A package for iterative proportional fitting on multiple marginal distributions in R. The goal of this package is to make survey raking, matrix balancing, and population synthesis easier.

Installation

Install the latest official version from CRAN:

install.packages("ipfr")

Install the development version of the package:

library(devtools)
install_github("dkyleward/ipfr", build_vignettes = TRUE)

Basic Usage

(See vignettes at the bottom for advanced topics.)

A basic matrix balance task:

mtx <- matrix(data = runif(9), nrow = 3, ncol = 3)
row_targets <- c(3, 4, 5)
column_targets <- c(5, 4, 3)
result <- ipu_matrix(mtx, row_targets, column_targets)

A basic survey balance task:

survey <- tibble(
  size = c(1, 2, 1, 1),
  autos = c(0, 2, 2, 1),
  weight = 1
)
targets <- list()
targets$size <- tibble(
  `1` = 75,
  `2` = 25
)
targets$autos <- tibble(
  `0` = 25,
  `1` = 50,
  `2` = 25
)
result <- ipu(survey, targets)

Creating synthetic households from the ipu() result:

synthesize(result$weight_tbl)

Vignettes

Using ipfr: https://cran.r-project.org/web/packages/ipfr/vignettes/using_ipfr.html
Common ipf problems: https://cran.r-project.org/web/packages/ipfr/vignettes/common_ipf_problems.html

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("ipfr")

1.0.2 by Kyle Ward, 7 years ago


https://github.com/dkyleward/ipfr


Report a bug at https://github.com/dkyleward/ipfr/issues


Browse source code at https://github.com/cran/ipfr


Authors: Kyle Ward [aut, cre, cph] , Greg Macfarlane [ctb]


Documentation:   PDF Manual  


Apache License (== 2.0) license


Imports dplyr, ggplot2, magrittr, tidyr, mlr

Suggests knitr, rmarkdown, testthat, covr


See at CRAN