Overview
Census survey microdata provides rich household and individual records, but its geographic resolution is too coarse for many local analyses. This research explored how to combine detailed microdata with Census tract-level demographic controls to construct statistically representative synthetic household populations.
Working with Professor Tayo Fabusuyi at the University of Michigan, I led the hands-on Python research engineering, including data preparation, geographic harmonization, population synthesis components, and diagnostic workflows. The project emphasized reproducible statistical modeling and the practical challenges of integrating complex public datasets.
The Research Problem
The American Community Survey (ACS) Public Use Microdata Sample (PUMS) contains detailed household and person observations, but its public geographic identifiers are relatively coarse. It does not provide household-level observations for every Census tract.
ACS aggregate demographic estimates offer finer geographic detail, including tract-level distributions, but do not contain complete household records. The data fusion challenge is to combine the richness of microdata with selected local demographic controls while reconciling geographic resolutions, variable definitions, household-person relationships, statistical distributions, and population weights.
Population synthesis offers a framework for constructing plausible household and person records consistent with selected geographic characteristics. These are statistical representations, rather than recovered observations of actual households in each tract, and can support subsequent socioeconomic and policy research.
Technical Approach and Statistical Methodology
Data ingestion and preparation
I developed Python workflows using pandas, NumPy, and Jupyter to load ACS and PUMS data, clean and standardize variables, and prepare linked household and person records for modeling. The engineering work centered on reconciling categories and record structures across complex Census datasets, rather than treating each file as an independent table.
Geographic harmonization and demographic controls
I worked on aligning PUMS geographic definitions with tract-level demographic controls, constructing control distributions, and harmonizing categories across sources. Reviewing consistency between the donor microdata and geographic controls was essential: finer-grained controls guide synthesis without turning coarse PUMS records into directly observed tract households.
Iterative proportional fitting — implemented
I implemented iterative proportional fitting (IPF) in the Python research notebooks. Household donor records provide the starting sample, and geographic demographic controls define the target marginal distributions. IPF repeatedly adjusts sample weights toward these controls across selected demographic dimensions.
An iterative approach is needed because adjusting one dimension can change the fit along another. The resulting weights can support synthetic population construction by expressing how strongly donor records should contribute to a target geography. This describes the implemented method and its intent; no specific convergence thresholds or measured fit results are claimed here.
Integerization — implemented
I also implemented integerization in the research notebooks. IPF can produce fractional household weights, while discrete synthetic households require integer counts or assignments. Integerization translates those weights into whole household contributions.
That translation introduces statistical and engineering tradeoffs: whole-number assignments can shift demographic totals, while retaining household structure constrains which records can be selected together. Implementing this component was significant hands-on modeling work, but does not establish completion or validation of the entire synthesis workflow.
Household and person relationships
Households contain linked person records, so population synthesis cannot be treated as independent sampling of unrelated individuals. I worked with household-person relationships during preparation and integration, maintaining the links needed to carry household membership into synthetic population construction. Household totals and person-level characteristics require joint attention; verified consistency results are not presented here.
Diagnostics and validation
I developed research diagnostics and validation procedures to compare synthetic demographic distributions with target controls, review population-weight behavior, identify inconsistencies, and assess representativeness. Variables outside the selected controls require particular scrutiny because matching controlled distributions does not establish their accuracy. Actual plots, fit statistics, and validation results would require review of the original notebooks before inclusion.
Research Workflow
- 01
Source data
- ACS PUMS household records
- ACS PUMS person records
- ACS geographic demographic controls
- 02
Data preparation
- Data ingestion
- Variable harmonization
- Geographic alignment
- 03
Statistical population synthesis
- Donor household selection
- Iterative proportional fittingImplemented
- IntegerizationImplemented
- Synthetic household/person construction
- 04
Diagnostics
- Demographic distribution comparisons
- Household-person consistency
- Research validation and review
Engineering Challenges and Research Status
Engineering challenges
Geographic resolution and variable harmonization were closely connected challenges: detailed but geographically coarse donor records had to be reconciled with finer controls using compatible definitions and categories. Household-person links added another layer of integration, while selected controls and donor coverage constrained statistical representativeness.
The work evolved into approximately 36 Jupyter notebooks alongside reusable research components. Organizing data preparation, modeling experiments, and diagnostics into a repeatable workflow was part of the engineering effort. The notebook count reflects the scope of exploration, rather than 36 completed or independently validated pipeline stages.
Research status
This was applied research conducted during 2026, with hands-on Python implementation of significant data preparation and population synthesis components, including IPF and integerization. The engagement concluded following development and handoff. The work did not deliver a fully completed, validated, or deployed synthetic population platform, and this case study does not claim published findings or nationwide validation.
My Role, Limitations, and Potential Applications
My role
Collaborating with Professor Tayo Fabusuyi, I designed and implemented the Python research workflow: preparing and harmonizing household and individual datasets, developing geographic demographic control structures, implementing IPF and integerization, and building population synthesis components and diagnostics. I organized the work into notebooks and reusable components and iteratively evaluated technical assumptions and limitations. My role was hands-on research engineering, within a collaborative academic research effort.
Limitations
The approach depends on the input microdata, donor coverage, and demographic control definitions. Geographic representativeness remains a constraint, and variables outside the control distributions are harder to validate. Integerization and household structure introduce statistical and computational tradeoffs. Implemented modeling components should therefore be distinguished from a fully validated synthesis system; no quantitative accuracy or performance results are claimed.
Potential applications
Synthetic household and person populations may support socioeconomic microsimulation, geographic policy analysis, household-level statistical modeling, and residential energy or related policy research. These are potential downstream applications. This project did not produce a completed residential energy microsimulation system or final energy policy simulation results.