Skip to content
GregorSchroeder edited this page Jun 19, 2025 · 47 revisions

SANDAG ESTIMATES PROGRAM

SANDAG has produced annual population and housing estimates since 1974. These estimates provide both internal and external customers with sub-jurisdiction-level information about population, housing, demographic, and household characteristics from a composite of data sources. They supplement the decennial census and American Community Survey datasets for the San Diego region.

As new input data used to calculate the estimates—such as new releases from the Census Bureau, SANDAG’s Land Use and Dwelling Unit Inventory, or the California Department of Finance—are made available each year, we provide new editions of our estimates. It is a best practices to use the most recent release available.

Find SANDAG’s estimates products on the Open Data Portal.

Modules

SANDAG's Estimates Program consists of multiple self-contained modules. Each module acts as a black box, with clearly defined inputs/outputs and a deterministic pathway between them. This makes debugging easier and outputs consistent. The modular structure allows users to easily run specific parts of the program in order to generate specific data. Instructions for running the entirety or only part of the Estimates Program can be found in the README.md in the "Code" section of this repository.

The following table contains a high-level overview of each module, including the inputs, outputs, and a quick description. For a more in depth description, including the actual algorithms used, follow the links to module specific pages under the Module column. Be aware that inputs to individual modules can be dependent on and created by previous Modules, such as "census tract rates" in the "Housing and Households" module.

Module Input(s) Output(s) Description
Startup MGRA cross reference. Special MGRAs. Create MGRA geography for subsequent modules.
Housing and Households Point geometry housing stock by land use. Census tract occupancy rates by structure type. City occupancy rate controls. Housing and households by structure type in each MGRA. Aggregate point geometry housing counts to the MGRA level by structure type. Apply census tract level occupancy rates by structure type to get households by structure type. Control overall occupancy rate to city level controls.
Population by Type Point geometry group quarters by type. City total group quarters controls. Households in each MGRA. Census tract average household size. City household population controls. Population by housing type in each MGRA. Aggregate point geometry group quarters counts to the MGRA level by type. Control total group quarters to city level controls. Apply census tract level average household size to households to get household population. Control household population to city level controls.
Population by Age/Sex/Ethnicity To create regional age/sex/ethnicity controls by housing type; regional population by housing type, regional age/sex/ethnicity distributions for group quarters by type, regional age/sex/ethnicity controls for total population.

To create census tract seed data; census tract distributions of ethnicity, age, and age/ethnicity.

To create population by age/sex/ethnicity by housing type; households in each MGRA, population by housing type in each MGRA, special MGRAs, regional age/sex/ethnicity controls by housing type, census tract seed data.
Population by Age/Sex/Ethnicity by housing type in each MGRA. TODO
Household Characteristics TODO TODO TODO
Staging TODO N/A TODO

In graph form, the web of dependencies is as follows:

Module IO drawio

Additionally, shared functionalities across modules are stored in the Utility module. This module solely contains software configurations specified in the config.yml, helper functions for rounding and integerization, as well as a handler allowing the program to use earlier American Community Survey (ACS) 5-year releases if the current year's release is unavailable.

A Note on ACS 5-year Detailed Tables

The Estimates Program uses a large number of ACS 5-year Detailed Tables, typically by combining two or more tables together in order to get the distribution of some variable within a census tract. For example, to compute the distribution of households by household income for a census tract, the households by household income table is combined with the total households table. This provides highly granular and specific data for each estimate year of the Estimates Program.

The year of the estimate determines the ACS 5-year release to use. An estimate made for 2020 will use the 2016-2020 ACS 5-year, an estimate made for 2021 will use the 2017-2021 ACS 5-year, and so on and so forth. SANDAG's Estimates Program and the Census Bureau have different release schedules. SANDAG typically releases estimates data at a roughly six-month time lag from year end, while the Census Bureau typically releases ACS 5-year Detailed Tables at a roughly one-year time lag from year end (see the ACS data release schedule).

For example, in the summer of 2025, SANDAG aims to release estimates years up to 2024, but the Census Bureau plans to release the ACS 5-year 2020-2024 Detailed Tables in December of 2025. With no alternative data source, SANDAG's Estimates Program reverts to using the ACS 5-year 2019-2023 release for estimate year 2024.

Clone this wiki locally