Skip to content
Sam Maurer edited this page Sep 11, 2018 · 16 revisions

Template-based UrbanSim model components

UrbanSim models are made up of sequences of steps, each of which captures a single dynamic: home price prediction, household moves, etc. These steps fit together to produce detailed forecasts.

We're developing a template-based system to make it easier to build and manage these model steps. One part of the project is urbansim_templates, a library of python classes for abstract categories of steps: OLS models, binary logit models, multinomial logit models with sampling of alternatives, etc.

Another part of the project is this repository. The goal is to build out a set of notebooks that represent a generically specified model of the Bay Area -- or two models, actually, one representing housing stock at the unit level and the other at the parcel or building level.

These models will support a variety of other efforts: extending UrbanSim to capture travel and congestion dynamics, integrating it with other modeling systems, testing and validating the template system, benchmarking empirical improvements to individual components.

(This repository also hosts experimental models, and generic template-related notebooks not tied to a specific model.)

Development guide

Setting up the required software packages

  • See instructions in the main README for setting up the conda environment
  • Feel free to create other environment files for specific projects as needed

Building a model step notebook

  1. Set up the required software packages on Rome server or local machine
  2. Make sure you have current copy of the base data (data is not tracked by Git because the files are too large)
  3. Does the data match the parcel model data spec, or equivalent unit model spec? If not, coordinate with others to implement a fix that will work across model steps. Save the notebook you use to generate any new data files, and update the data READMEs.
  4. Import any model steps that are prerequisites for running the one you're working on, and make sure they work.
  5. Work with Paul to estimate a simple but empirically sensible model step.
  6. Do some validation and visualization of the inputs and outputs.
  7. Save your working notebooks, but also create a clean notebook that builds, saves, and validates the final version of the model step. These will be collected together into an end-to-end model.

Project outline and tasks

Initial tasks

  • Identify which data tables to use for the model, and document this in the data READMEs -> Max? Paul? Sam?
  • Develop an official data spec for unit-based model
  • Which data still needs to be imputed? -> Max, Paul, Simon
  • Which model steps can proceed with the data we already have in place?

Units with tenure

  1. Accessibility metrics, aka "network aggregations"
    (not yet templatized)
  2. Real estate price model: home sales
  3. Real estate price model: residential rents
  4. Household relocation: owners
  5. Household relocation: renters
  6. Household location choice: owners
  7. Household location choice: renters
  8. Real estate price model: commercial rents (can proceed with current data)
  9. Firm relocation
  10. Firm location choice
  11. Person's choice of workplace
  12. Auto ownership choice
  13. Student's assignment to a school
  14. Pro forma feasibility and real estate development
    (not yet templatized)
  15. Demographic transition
    (not yet templatized)

Benchmark and validate full model. Develop policy scenarios for testing.

Additional resources

  • Archival project outline and tasks, from summer 2018: Google Doc