Skip to content

Model Outputs

Alex Bettinardi edited this page May 8, 2025 · 4 revisions

ActivitySim Outputs

ActivitySim outputs include a household file, a person file, a vehicle file, a tour file, and a trip file. Each file is attributed with unique IDs so that files can be linked to each other, some fields that are provided either in the input data from PopulationSim or derived from input attributes, and the choices made by each decision-maker in the ActivitySim model system. Additionally, ActivitySim creates both aggregate and disaggregate accessibilities.

The output household file (final_households.csv) is shown below. The table includes some of the attributes from the input household file and some derived attributes that are useful for summaries of data. Other attributes from input household data file created by PopulationSim can be appended to the table by merging with the PopulationSim output household data table by household_id. Outputs from household-level choice models are clearly indicated in the table. Outputs from person, tour, and trip level choice models can be appended to the household table by manipulating (summing, averaging, etc.) the results from those files and merging the resulting data table(s) with the household data by household_id.

ActivitySim Output Household File fields

Field Description
household_id Household ID
home_MAZ Household MAZ
home_TAZ Household TAZ
GQ Indicator for group quarters household (0,1)
income Household income in dollars ($2023)
hhsize Number of persons in household
HHT Household dwelling unit type
num_workers Number of workers in household
sample_rate Sample rate for household
num_drivers Number of licensed drivers in household
num_adults Number of adults (age >= 18) in household
num_children Number of children (age < 18) in household
auto_ownership (Model output) Auto ownership
escooter_owner (Model output) escooter ownership
ebike_owner (Model output) ebike ownership
av_ownership (Model output) AV ownership indicator (0,1) from AV ownership model
numAVowned (Model output) Number of AVs owned from vehicle type choice model
workplace_location_accessibility (Disaggregate accessibility output) Work location choice logsum
shopping_accessibility (Disaggregate accessibility output) Shop destination choice logsum
othdiscr_accessibility (Disaggregate accessibility output) Other discretionary choice logsum
num_travel_active (Model output) Number of household members from CDAP with an active travel day (CDAP pattern M or N)
num_travel_active_adults (Model output) Number of adults in household (age 18+) from CDAP with an active travel day (CDAP pattern M or N)
num_travel_active_children (Model output) Number of children in household (age <18) from CDAP with an active travel day (CDAP pattern M or N)
school_escorting_outbound (Model output) School escorting indicator (0,1) in outbound direction from school pickup/dropoff model
school_escorting_inbound (Model output) School escorting indicator (0,1) in inbound direction from school pickup/dropoff model
school_escorting_outbound_cond (Model output) School escorting indicator (0,1) in outbound direction from school pickup/dropoff conditional model
num_hh_joint_tours (Model output) Number of fully joint tours from joint tour frequency/composition model
joint_tour_frequency_composition (Model output) Joint tour frequency composition from joint tour frequency/composition model

The output person file (final_persons.csv) is shown in below. Similar to the household file, the person file also contains some attributes of the input persons file and some derived attributes such as person type that are useful for data summaries. Also like the household file, outputs from person-level models including mobility models and tour frequency models are appended to the table. Other variables can be calculated and appended from merging tour and trip files by household_id and person_id if necessary.

ActivitySim Output Person File fields

Field Description
person_id Person ID
household_id Household ID
home_MAZ Household MAZ
home_TAZ Household TAZ
age Age in years
PNUM Person number in household (1…n where n is total persons in household)
sex 1=male, 2=female
pemploy
pstudent
ptype
educ Educational attainment: 1 = No schooling completed 9 = High school graduate 13 = Bachelor's degree
naics_code Census NAICS codes; 0 for unemployed
soc2 Census SOC2 codes; 0 for unemployed
occupation 0 unemployed; 1: Management, business, science, and arts; 2: Service; 3: Sales and office; 4: Natural resources, construction, and maintenance; 5: Production, transportation, and material moving; 6: Military specific occupations
is_adult TRUE if age>18, else FALSE
is_student TRUE if student, else FALSE
is_worker TRUE if worker, else FALSE
time_factor_work Simulated travel time sensitivity factor for work tours
time_factor_nonwork Simulated travel time sensitivity factor for other tours
has_license (Model output) TRUE if has a driver’s license, else FALSE
bike_comfort_level (Model output) Bike comfort level 1: “No way no how”, 2: “Interested but concerned”, 3: “Enthused and confident”, 4: “Strong and fearless”
work_from_home (Model output) TRUE if worker works from home, else FALSE
is_out_of_home_worker (Model output) TRUE if worker has a usual out of home workplace else FALSE
is_external_worker (Model output) TRUE if external worker, else FALSE
external_workplace_MAZ (Model output) external station MAZ if external worker, else 0
external_workplace_TAZ (Model output) external station TAZ if external worker, else 0
external_workplace_location_logsum (Model output) work location choice logsum from external workplace location choice model, else 0
external_workplace_modechoice_logsum (Model output) work mode choice logsum from external workplace mode choice model, else 0
school_MAZ (Model output) school MAZ from school location choice model, else 0
school_TAZ (Model output) school TAZ from school location choice model, else 0
school_location_logsum (Model output) school location choice logsum from school location choice model, else 0
school_modechoice_logsum (Model output) school mode choice logsum from school mode choice model, else 0
distance_to_school (Model output) Distance from home to school in miles, else 0, using midday SOV medium value of time skim
workplace_MAZ (Model output) work MAZ from work location choice model, else 0
workplace_TAZ (Model output) work TAZ from work location choice model, else 0
workplace_location_logsum (Model output) work location choice logsum from work location choice model, else 0
workplace_modechoice_logsum (Model output) work mode choice logsum from work mode choice model, else 0
distance_to_work (Model output) Distance from home to work in miles, else 0, using the midday SOV medium value of time skim
expected_daily_parkcost (Model output) expected parking cost at work in cents ($2023)
transit_pass_subsidy (Model output) 1 if transit pass is subsidized, else 0
transit_pass_ownership (Model output) 1 if owns a transit pass, else 0
free_parking_at_work (Model output) TRUE if has free parking at work, else FALSE
telecommute_frequency (Model output) Days worker telecommutes per week, 0-4
cdap_activity (Model output) Daily activity pattern M: Mandatory, N: Non-mandatory, H: Home
mandatory_tour_frequency (Model output) Mandatory tour frequency choice (0: no mandatory tours, 1: 1 work tour, 2: 2 work tours, 3: 1 school tour, 4: 2 school tours, 5: 1 work tour and 1 school tour
num_work_tours (Model output) Number of work tours (0, 1, or 2)
num_school_tours (Model output) Number of school tours (0, 1, or 2)
escorted_in_outbound_dir (Model output) Result from school pickup/dropoff model. TRUE if student is escorted in the outbound direction, else FASE
escorted_in_inbound_dir (Model output) Result from school pickup/dropoff model. TRUE if student is escorted in the inbound direction, else FASE
num_pure_escort_chap_tours (Model output) Result from school pickup/dropoff model. Number of pure escort tours as chaperone
num_pure_escort_chap_outbound_dir (Model output) Result from school pickup/dropoff model. TRUE if performs a pure escort activity in the outbound direction, else FALSE
num_pure_escort_chap_inbound_dir (Model output) Result from school pickup/dropoff model. TRUE if performs a pure escort activity in the inbound direction, else FALSE
rideshare_escort_chap_outbound_dir (Model output) Result from school pickup/dropoff model. TRUE if performs a dropoff activity on a work tour in the outbound direction, else FALSE
rideshare_escort_chap_inbound_dir (Model output) Result from school pickup/dropoff model. TRUE if performs a pickup activity on a work tour in the inbound direction, else FALSE
num_joint_tours (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint tours
num_joint_shop_tours (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint shop tours
num_joint_maint_tours (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint maintenance tours
num_joint_eatout_tours (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint eating out tours
num_joint_social_tours (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint social tours
num_joint_discr_tours (Model output) Joint Tour Frequency\Composition Choice Model result: Total number of fully joint discretionary tours
non_mandatory_tour_frequency (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual non-mandatory tours
num_indiv_escort_tours (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Number of individual escort tours
num_indiv_shop_tours (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual shop tours
num_indiv_maint_tours (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual maintenance tours
num_indiv_eatout_tours (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual eating out tours
num_indiv_social_tours (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual social tours
num_indiv_discr_tours (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual discretionary tours
num_indiv_tours (Model output) Individual Non-Mandatory Tour Frequency Choice Model result: Total number of individual non-mandatory tours
num_atwork_subtours (Model output) At-work subtour Frequency model results: Total at-work subtours
total_home_tours (Model output) Total home-based tours
total_tours (Model output) Total tours including mandatory tours, tours generated by the school pickup/dropoff model, joint tours, individual tours, and at-work subtours

The output vehicle file (final_vehicles.csv) is shown below. This file has one record for each vehicle owned by each household. The file is created entirely from the vehicle type choice model.

ActivitySim Output Vehicle File fields

Field Description
vehicle_id Vehicle ID
household_id Household ID
vehicle_num Vehicle number from Vehicle Type Choice Model alternatives file
vehicle_type A string field consisting of [Body type][age][fuel type] and an optional extension “_AV” if the vehicle is an autonomous vehicle
auto_operating_cost Auto operating cost in cents ($2023)
range Electric vehicle range in miles
MPG Average miles per gallon or equivalent
KWH Kilowatt hours of energy consumed

The output tour file (final_tours.csv) is shown in below. The file has one record per tour; joint tours are also represented as one record per joint tour. In other words, there are at least two participants on each joint tour, but the joint tour is represented only once on the tour file. The tour_id field is unique in the tour file and can be used to join the tour file to any calculations made in the trip file.

ActivitySim Output Tour File fields

Field Description
tour_id Tour ID
person_id Person ID
household_id Household ID
parent_tour_id Parent tour ID if this is a work-based subtour, else 0
tour_category The category string of the primary activity on the tour. “mandatory”, “joint”, “non_mandatory”, “atwork”
tour_type Purpose string of the primary activity on the tour: For home-based tours, the purposes are: “work”, “school”, “escort”, “shopping”, “othmaint”, “eatout”, “social”, and “othdiscr”. For work-based subtours, the purposes are “business”, “eat”, and “maint”.
primary_purpose Recoding of tour_type where all atwork subtours are identified as “atwork” regardless of destination purpose
tour_type_count The total number of tours within the tour_type
tour_type_num The sequential number of the tour within the tour_category. In other words if a person has 3 tours; 1 work tour and 2 non-mandatory tours, the tour_type_num would be 1 for the work tour, 1 for the first non-mandatory tour and 2 for the second non-mandatory tour.
number_of_participants Number of participants on the tour for fully joint tours, else 1
participant_IDs A space-delimited string file listing IDs of each joint tour participant; blank for individual tours
origin_MAZ MAZ number of tour origin
destination_MAZ MAZ number of primary destination
origin_TAZ TAZ number of tour origin
destination_TAZ TAZ number of primary destination
start Time period of departure from tour origin (1…48)
end Time period of arrival back at tour origin (1…48)
duration Duration of the tour including all activity episodes and travel in periods (1…48)
school_esc_outbound For school tours where the child is being escorted according to the school pickup/dropoff model, this string field indicates the type of escorting in the outbound direction: “pure_escort” or “rideshare”
school_esc_inbound For school tours where the child is being escorted according to the school pickup/dropoff model, this string field indicates the type of escorting in the inbound direction: “pure_escort” or “rideshare”
num_escortees Number of children being escorted on this tour (max of outbound and inbound direction)
chaperone_ID_outbound Tour ID of chaperone if child is escorted to school in outbound direction
chaperone_ID_inbound Tour ID of chaperone if child is escorted to school in inbound direction
composition Composition of tour if joint “adults”, “children”
is_external_tour TRUE if primary destination activity is external to region, else FALSE
destination_logsum Logsum from tour destination choice model
tour_mode Tour mode string “DRIVEALONE”, “SHARED2”, “SHARED3”, “WALK”, “BIKE”, “ESCOOTER”, “EBIKE”, “WLKTRAN”, “PNRTRAN”, “KNRTRAN”, BIKTRAN”, “TAXI”, “TNC_SINGLE”, “TNC_POOLED”, “SCHBUS”
mode_choice_logsum Logsum from tour mode choice model
selected_vehicle Selected vehicle from vehicle type choice model; a string field consisting of [Body type][age][fuel type] and an optional extension “_AV” if the vehicle is an autonomous vehicle
atwork_subtour_frequency At-work subtour frequency choice model result; a string field with the following values: “no_subtours”, “business1”, “business2”, “eat”, “eat_business”, “maint”, or blank for non-work tours.
atwork_subtours Number of at-work subtours generated
stop_frequency Stop frequency choice model result; a string value of the form [0…n]out_[0…n]in where the first number is the number of outbound stops and the second number is the number of inbound stops
stops_outbound Number of outbound stops
stops_inbound Number of inbound stops
VOT Value of time for tour in dollars/hour ($2023)
time_sensitivity Time sensitivity factor for trip

Context on Representing Joint vs Individual Travel

[Helpful context provided from Joel Freedman, RSG on 5-8-25]

There are three main reasons for breaking out joint travel:

  1. More accurate household-level trip rates. Why? Consider how a trip-based model works. Trip rates are calculated at the household level and one of the explanatory variables is household size. Use of this variable implicitly accounts for the effects of household-level travel decisions based on the number of persons in the household. If we were to model everything at the person level in an activity-based model, the influence of one household members’ travel decisions on other household members can only be loosely considered via a household size interaction effect. We use models like CDAP and joint travel generation to get a more accurate depiction of person level travel by explicitly considering the travel decisions of other household members.
  2. More accurate mode choice elasticities. Why? Because most joint travel occurs because of household needs and joint activity participation, rather than as a mode choice decision. For example, going out to dinner, giving a child a ride to\from school, going to the park or a social event. These are not mode decisions like the choice between driving and transit. They are activity participation decisions. So treating them as if they were mode decisions (e.g. drive alone vs. shared ride) is likely to over-state the elasticity with respect to network level of service. Worsening auto times would probably over-state the reduction in joint travel and introducing an HOV lane would likely over-state the increase in joint travel.
  3. Explicit representation of auto availability. Ultimately if we want to model whether a household auto is available for a given travel episode, which is a worthwhile goal in AB modeling IMO, then we need an explicit representation of joint travel. Otherwise we can’t identify how many travel episodes there are explicitly, and we cant explicitly model whether a car is available for those episodes.

We account for probably around 85% of joint travel explicitly in ActivitySim, the two biggest components are:

  1. fully joint travel across household members for the purpose of engaging in joint activity participation across all activities on the tour (which could include parents traveling with children to watch them participate in sports events and so on, even when they aren’t actively participating in such events)
  2. partially joint travel for the purpose of dropping off children or picking up children from school

The remaining 15% is quite complicated – it includes dropping off or picking up household members at work or other locations not including school, and joint travel with non-household members. This travel is treated as if it were a mode choice decision.

Trip table Overview

The output trip file (final_trips.csv) is shown below. The file has one record per trip, with trips on joint tours also represented as one record which includes multiple participants. The trip_id field is unique. A number of tour fields are provided in the trip file in order to allow an analyst to summarize trip data more easily.

ActivitySim can be configured to write out travel data used in model calculations such as the times and costs experienced by travelers as a result of the choices they made. The SANDAG ActivitySim model was configured to write out this data and will be a good starting point for the Oregon models.. The data can be summarized to understand total VMT by person or household, fuel consumption, energy consumption, greenhouse gas emissions, total travel time expenditures, total travel cost expenditures, and so on. The data can also be annualized if desired. Annualization factors, energy consumption parameters, and greenhouse gas generation parameters would need to be developed and applied to the results. These data items are stored as additional fields in the output trip file shown in Table 37.

ActivitySim Output Trip File fields

Field Description
trip_id Trip ID
person_id Person ID
household_id Household ID
tour_id Tour ID
vehicle_id Vehicle ID if auto trip
outbound TRUE if trip is in the outbound direction, else FALSE
trip_num Sequential number of trip by direction (1…n where n is maximum trips on half-tour, e.g. max stops + 1)
primary_purpose Primary purpose of tour (see tour table)
origin_MAZ MAZ of trip origin
destination_MAZ MAZ of trip destination
origin_TAZ TAZ of trip origin
destination_TAZ TAZ of trip destination
escort_participants Space delimited string field listing person IDs of other children escorted on this trip, else null
chaperone_tour_ID Tour ID of chaperone’s tour if trip is a child being escorted to or from school
school_escort_direction String field indicating whether child is being dropped off at school (“outbound”) or picked up from school (“inbound”). “null” if not a child being picked up or dropped off.
destination_logsum Logsum from trip destination choice model. -9 if destination is tour origin or primary destination.
depart Departure time period (1…48)
trip_mode Trip mode string “DRIVEALONE”, “SHARED2”, “SHARED3”, “WALK”, “BIKE”, “ESCOOTER”, “EBIKE”, “WLKTRAN”, “PNRTRAN”, “KNRTRAN”, BIKTRAN”, “TAXI”, “TNC_SINGLE”, “TNC_POOLED”, “SCHBUS”
mode_choice_logsum Logsum from trip mode choice model
VOT Value of time for trip in dollars per hour ($2023)
time_sensitivity Time sensitivity factor for trip
parking_MAZ Parking MAZ from parking location choice model, else -1
parking_TAZ Parking TAZ from parking location choice model, else -1
trip_period A string indicating the skim period for the trip (“EA”,”AM”,”MD”,”PM’,”EV”)
tour_participants Number of joint tour participants if joint tour, else 1
tour_participant_IDs Space delimited string field of person IDs for each joint tour participant, else null
sample_rate Sample rate for trip
trip_veh_body Body type of vehicle used for trip, else “null”
trip_veh_age Age of vehicle used for trip, else “null”
trip_veh_fueltype Fuel type of vehicle used for trip, else “null”
origin_purpose Origin purpose of trip (see primary purpose codes)
destination_purpose Destination purpose of trip (see primary purpose codes)
auto_time Time spent in autos on the trip (including any auto mode time, PNR and KNR access/egress time, time in taxi/TNC-single, TNC-shared, or school bus. TNC-shared time should account for TNC-shared time factor)
auto_distance Distance traveled in autos on the trip (including any auto mode distance, PNR and KNR access/egress distance, distance in taxi/TNC-single, TNC-shared, or school bus. TNC-shared distance should account for TNC-shared time factor)
auto_tolls Skimmed toll costs for auto modes on the trip (including any auto mode tolls, PNR and KNR access/egress tolls, tolls for taxi/TNC-single, TNC-shared, or school bus). Considers toll discount specified in input person file.
walk_time Time spent walking (includes walk mode, transit walk access/egress/auxiliary, terminal time for auto trips, and walk time from parking zone to activity location zone)
walk_dist Distance spent walking (includes walk mode, transit walk access/egress/auxiliary, distance calculated from terminal time, and distance from parking zone to activity location).
bike_logsum Bicycle logsum used in trip mode choice model
bike_time Bicycle time including bike mode time and bike-transit access/egress time
bike_distance Bicycle distance including bike mode distance and distance calculated from bike-transit access/egress time
escooter_time e-scooter time
escooter_distance e-scooter distance
ebike_time e-bike time
ebike_distance e-bike distance
wait_time Time spent waiting for transit (first wait + transfer wait), school bus, and ride-hail modes, as well as time spent accessing shared micromobility
parking_cost Parking costs at trip origin and destination, calculated as one-half of the costs at each end, with subsidies considered.
auto_operating_cost Auto operating cost for trip, including auto modes and PNR/KNR-transit auto operating costs
transit_fare Transit fare (including discounts) paid for trip
ridehail_fare Ride-hail fare paid for trip
micromobility_cost Cost of using shared micromobility
MPG Miles per gallon of vehicle used for trip
fuel_consumed Fuel consumed for trip

Clone this wiki locally