Demographic Process Models
This set of models simulates changes in household structure over time.
Note: This is work in progress, as noted in the descriptions below. Primary funding is from the Maricopa Association of Governments, and Federal Highway Administration, Urban Continuum project, but it also is relevant to the SustainCity project in Europe, and of interest to planning agencies and researchers regardless of location.
Models Being Implemented or Re-Factored
Fertility Model
For women in child-bearing years, fertility rates by age and other characteristics provide a probabilistic basis for predicting the birth of a child. Monte carlo sampling will be used to compare a draw from a uniform distribution to the fertility rate for each female of child-bearing age, in order to simulate the event of a child birth. If the prediction is positive, then a new person record is added to the person database and linked to the household_id of the mother. This model will require no parameter estimation since it relies on fertility rates.
Status
- Basic fertility rate tables are constructed that account for the age and race of females. The model is currently a child of the Agent Relocation Model. Some code generalization, refactoring, or simple renaming will be required. Some methods to initialize reasonable and appropriate values for all attributes in a 'persons' dataset will need to be written.
- New-borns are now assigned the mother's race. Ideally, the race of both parents should be accounted for so that children with parents of different races can be assigned the "two or more race" category.
- Code has been added to partially address the issue of duplicate person_no in a household when multiple births occur in the same year, but this is a work-in-progress.
- Consider initializing the marriage_status attribute with 6 instead of 0. If marriage_status of 0 is used, then some way of changing it from 0 to 6 once a child reaches 15 years of age is needed. It may be simpler just to avoid marriage_status = 0, which refers to "under 15 years old" but otherwise doesn't convey information about marriage status.
Possible Side-Effects of Algorithm
Given the current set of variables in the fertility rate table (age and race), some groups are probably experiencing more births than is appropriate. This problem may to some extent be addressed once household formation/dissolution/room-mate models are implemented- households consisting of large groups of young females may not stay together for extended periods of time as the females age and form smaller households. Explore using filters to exclude group quarters or room-mate households from fertility model. (Dorms, prisons, etc)
Mortality Model
For all persons, a mortality rate appropriate to their age and other person characteristics will be used as a probabilistic basis for predicting a death event, in the same way that the fertility model makes birth predictions. In the event of a death event prediction, the person record is deleted from the persons database. If there are no remaining members of the household, the household record is deleted as well.
Status
- Basic mortality rate tables are constructed that account for age, sex, and race. The model is currently a child of the Agent Relocation Model. Some code generalization, refactoring, or simple renaming will be required.
- Code has been added to prevent adult deaths that will result in orphaned children. In households where orphans are at risk of being created, the model samples one adult to keep alive. A next step is replacing this with an adoption model, which would be more realistic.
- The mortality model updates the household table's persons attribute to account for death, update the household table's children attribute to account for child deaths, and update the household table's workers attribute to account for worker death. Additionally, when a person's spouse dies, the person's marriage_status is changed from married to widowed. If the head of the household dies, "head of the household" status is assigned to another person, then the age_of_head attribute is updated to reflect the age of the new head of the household.
- Instead of updating table attributes via code in the mortality model, it may be better to use computed variables instead of primary attributes in the dataset.
Possible Side-Effects of Algorithm
Adults whose death would result in orphans are being saved. This is decreasing mortality.
Household Formation Model(s)
This model predicts the event of individual persons of different genders combining to form a household. It is a 'matching model' in the sense that it needs to pair two individuals and create a single, combined household. Public Use Microdata will be used to identify criteria to use in creating a scoring for potential matches. The scores will be used as the basis for a probabilistic matching of individuals that are single-person households. Once a family formation event is predicted, the one of the persons' household record is deleted, and the person is reassigned to the household id of the other person with whom a family has been formed.
This could be broken out into more than 1 model to account for the different ways households are formed such as a child leaving home, roommate situations, etc. See some of the models in the Models Remaining for Implementation section below.
Status
Household formation is currently implemented as two rate-based models:
MARRIAGE
- Annual marriage rates (by the gender and age of non-married persons) calculated from ACS PUMS. ACS asks whether a person "married in the past 12 months".
- Females are assumed to be the mate choosers. Of the persons predicted to be in the marriage market, females represent the choosers and males represent the available mates.
- Shuffle the order of females. For each female predicted to marry, create a 1D array with the probabilities that each available mate (the pool of males predicted to marry) is selected, sample a choice of mate, and, if the chosen person has not already been chosen, a match is made.
- The probability of being selected is based on a formula that takes age/education similarity into account.
- If there are still unmatched choosers and unmatched available_mates after 1 iteration, match just the remaining females and the remaining males with each other according the process described in the previous step. This continues until all females have been paired.
- Designate each couple as married
- Assign household_id's in the following way:
- if both persons have other adults living in their original household, assign the couple a new household_id
- if both persons are in a 1 person hh, assign the man the woman's household_id
- if woman single_parent, but the man is not, assign the man the woman's household_id (this avoids orphans)
- if man single_parent, but the woman is not, assign the woman the man's household_id (this avoids orphans)
- if both are single_parents, assign all individuals in the man's household the woman's household_id.
- if woman is in a 1 person hh, but man is not, assign the man the woman's household_id
- if man is in a 1 person hh, but woman is not, assign the woman the man's household_id
- Update person/household attributes to reflect marriages
COHABITATION
- Works in a similar fashion to the marriage model, except cohabitation rates are obtained by multiplying annual marriage rates at each age by the ratio of cohabitating persons to married persons at each age.
Possible Side-Effects of Algorithm
Needs to be assessed. More testing is needed (especially when running all the demographic models together).
Make sure no one 18 or older has a marriage_status = 0 when running the model. The marriage/cohabitation rate tables do not account for marriage_status = 0. (see recent code addition to the fertility model that changes marriage_status from 0 to 6 for all people who had a marriage_status of 0).
Given existing attributes in persons table, the model doesn't know who is cohabitating in the base-year. Consider a "relationship" attribute.
A 30-year simulation resulted in a proportion of the population that is married by age to be somewhat lower than that observed in the 2005-2009ACS for most age groups. This outcome reflects both marriage rates and divorce rates (and to a lesser extent mortality/fertility rates). Examine this outcome.
Need to double-check how person_no and head_of_household are determined. Some very young household heads were noticed.
Household Dissolution Model(s)
This model predicts the probability that a household with two or more adults chooses to separate. For the initial version of the model, a probability of separation will be computed based on national longitudinal surveys. If a positive event is predicted, then all but one of the adults in the household are assigned to new household records, and the previous household id is retained by the remaining member of the household.
If there are children present in the household predicted to dissolve, then the children are assigned on a probabilistic basis to the household of one of the adults, based on gender and age. The probabilities will also be derived from available survey data.
Status
Household dissolution is currently implemented as two rate-based models:
DIVORCE
- Annual divorce rate is calculated for the county from the ACS PUMS (MARHD variable: "Divorced in the past 12 months"). The rate table currently accounts for the gender and age of married persons.
- For each woman that is predicted to divorce, a married man in the household gets assigned a new household_id. The woman is assumed to retain custody of the children and keep the existing household_id.
- When there is only 1 married man in the household, selecting the man to divorce is straight-forward. In the minority of cases when a women's household contains multiple married men, the man to divorce is sampled depending on the age/education of the men.
- Update the marriage_status attribute of each person predicted to divorce.
- The model updates household table attributes (#persons, children, workers, head of household) to reflect divorces that occur.
BREAKUP (dissolution of a cohabitating couple)
- Works in a similar fashion to the divorce model, except rates are from PSID data.
Possible Side-Effects of Algorithm
- Divorce rate table does not currently account for presence of children, which is probably a relevant variable
- Men where marriage_status = 2 (married to a female not in the same household) will not experience divorces
- Code needs to be added that assigns new person_no after divorces occur
- Given existing attributes in persons table, the model doesn't know who is cohabitating in the base-year.
- When there are multiple married men in the household, the man that the woman divorces is being sampled. This might be avoided with a "relationship" attribute in the persons table.
Income Model
This model will predict the 'income' attribute of the 'persons' dataset. One possible implementation is a regression model of annual earnings, as a function of age, years of education, years of employment
Status
Not yet coded. A work plan, data research, coding and testing are all needed.
Possible Side-Effects of Algorithm
Needs to be assessed.
Number of Workers Model
This model will predict a person's work status. This model may need to work with the 'jobs,' 'businesses,' and/or employment control totals datasets at a minimum.
Status
Not yet coded. A work plan, data research, coding and testing are all needed.
Possible Side-Effects of Algorithm
Needs to be assessed. There are possible interactions with other currently implemented models such as the Work at Home Model, Workplace Choice Model, and other potential employment related models (e.g. begin working model, retirement model, etc.).
Models Implemented
Aging Model
This model is a simple deterministic model that adds one to the age of each person at the beginning of the year. It runs before the following models.
STATUS: This is a trivial model that adds one to the age of each person. It is fully implemented in one line of code as a simple model.
Work At Home Model
Logit model that predicts that a worker will choose to work at home as a usual workplace. Can depend on any person and household attributes.
STATUS: Implemented and applied in the Puget Sound with good validation results.
Workplace Choice Model
Logit model for each worker who is not a work-at-home worker, which selects a vacant job at a specific location. Can depend on person and household characteristics, interacted with job characteristics and on the commute characteristics from home to workplace.
STATUS: Implemented and applied in the Puget Sound, with good validation results.
Models Remaining for Implementation
Child Leaving Home Model
This model predicts the event of a child leaving home to form a new household. The initial proposal for this model is to use an age and gender-specific set of rates, to be computed from national longitudinal surveys. These rates would be the basis for a probabilistic prediction of a child leaving home during a simulation year. If a positive departure event is predicted, then a new household record is created, and the person is assigned the new household_id.
STATUS: Code and data structure is implemented, and being integrated into the main urbansim.xml project so that it is automatically available for each application, by inheritance from this project.
Roommate Model
The probability that two persons of the same gender will cohabitate, whether as room-mates or as a same-sex couple (these circumstances cannot be easily distinguished using available data), is predicted in this model on a probabilistic basis using PUMS data, using a comparable algorithm to the family formation model.
STATUS: Not yet coded. Working on a simple matching algorithm.
School Attainment Model
Trivial model to increment the number of years of education. Begins incrementing from 0 at age 5, and continues until the End Schooling model predicts that the person will transition out of school.
STATUS: Not yet implemented but trivial to code.
End Schooling Model
Probability model for leaving school, conditional on age and being in school.
Status: Not yet implemented, but trivial to code.
Begin Working Model
Probability model for transitioning into the work force, conditional on not being a worker, and on age, gender, and education attainment of the person.
STATUS: Not yet implemented
Change Jobs Model
Probability of a person changing jobs, based on age, gender, years of education, years of employment, and annual earnings
STATUS: Not yet implemented
Retirement Model
Logit model of ending working status, as a function of age, gender, years of work, earnings
STATUS: Not yet implemented
--
PaulWaddell - 10 Aug 2009