From 0d5e3b16b64e47503e0f9e51e290b4edef52fd9f Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Wed, 27 May 2026 16:59:54 -0400 Subject: [PATCH 01/14] telework arrangement placeholder specs --- .../resident/annotate_persons_telework_arrangement.csv | 6 ++++++ configs/resident/telework_arrangement.csv | 3 +++ configs/resident/telework_arrangement.yaml | 10 ++++++++++ configs/resident/telework_arrangement_coeffs.csv | 3 +++ 4 files changed, 22 insertions(+) create mode 100644 configs/resident/annotate_persons_telework_arrangement.csv create mode 100644 configs/resident/telework_arrangement.csv create mode 100644 configs/resident/telework_arrangement.yaml create mode 100644 configs/resident/telework_arrangement_coeffs.csv diff --git a/configs/resident/annotate_persons_telework_arrangement.csv b/configs/resident/annotate_persons_telework_arrangement.csv new file mode 100644 index 0000000..adb93ea --- /dev/null +++ b/configs/resident/annotate_persons_telework_arrangement.csv @@ -0,0 +1,6 @@ +Description,Target,Expression +#,, annotate persons table after telework arrangement model has run +Legible label of telework arrangement on the simulation day,telework_arrangement,'not working' +Teleworking on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')!=CDAP_ACTIVITY_MANDATORY)&(persons.get('has_in_home_work_activity')), 'teleworking', telework_arrangement)" +Commuting on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY)&(~persons.get('has_in_home_work_activity')), 'commuting', telework_arrangement)" +Hybrid working on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY)&(persons.get('has_in_home_work_activity')), 'hybrid working', telework_arrangement)" \ No newline at end of file diff --git a/configs/resident/telework_arrangement.csv b/configs/resident/telework_arrangement.csv new file mode 100644 index 0000000..4a3ab0b --- /dev/null +++ b/configs/resident/telework_arrangement.csv @@ -0,0 +1,3 @@ +Label,Description,Expression,has_in_home_work_activity,no_in_home_work_activity +util_acs,alternative specific constant,1,,coef_acs_no_in_home_work_activity +util_cdap_activity_mandatory,mandatory activity on the simulation day,@(persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY),, \ No newline at end of file diff --git a/configs/resident/telework_arrangement.yaml b/configs/resident/telework_arrangement.yaml new file mode 100644 index 0000000..20eb237 --- /dev/null +++ b/configs/resident/telework_arrangement.yaml @@ -0,0 +1,10 @@ +SPEC: telework_arrangement.csv +COEFFICIENTS: telework_arrangement_coeffs.csv + +LOGIT_TYPE: MNL + +HAS_IN_HOME_WORK_ACTIVITY_ALT: 0 + +annotate_persons: + SPEC: annotate_persons_telework_arrangement + DF: persons \ No newline at end of file diff --git a/configs/resident/telework_arrangement_coeffs.csv b/configs/resident/telework_arrangement_coeffs.csv new file mode 100644 index 0000000..b1fed18 --- /dev/null +++ b/configs/resident/telework_arrangement_coeffs.csv @@ -0,0 +1,3 @@ +coefficient_name,value,constrain +coef_unavailable,-999,F +coef_acs_no_in_home_work_activity,-0.5,F From 28a9128622559bd95634424ca6cc7c33d7d26f40 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Wed, 27 May 2026 22:47:23 -0400 Subject: [PATCH 02/14] telework duration placeholder spec --- configs/resident/telework_duration.csv | 3 +++ configs/resident/telework_duration.yaml | 23 +++++++++++++++++++ configs/resident/telework_duration_alts.csv | 5 ++++ configs/resident/telework_duration_coeffs.csv | 8 +++++++ configs/resident/telework_duration_probs.csv | 2 ++ 5 files changed, 41 insertions(+) create mode 100644 configs/resident/telework_duration.csv create mode 100644 configs/resident/telework_duration.yaml create mode 100644 configs/resident/telework_duration_alts.csv create mode 100644 configs/resident/telework_duration_coeffs.csv create mode 100644 configs/resident/telework_duration_probs.csv diff --git a/configs/resident/telework_duration.csv b/configs/resident/telework_duration.csv new file mode 100644 index 0000000..8e768c4 --- /dev/null +++ b/configs/resident/telework_duration.csv @@ -0,0 +1,3 @@ +Label,Description,Expression,0_2_hours,2_4_hours,4_8_hours,8_plus_hours +util_asc,alternative specific constant,1,coef_acs_0_2h,coef_acs_2_4h,,coef_acs_8_plus_h +util_part_time,part-time worker,@df.ptype==PTYPE_PART,,coef_parttime_2_4h,coef_parttime_4_8h,coef_parttime_8_plus_h \ No newline at end of file diff --git a/configs/resident/telework_duration.yaml b/configs/resident/telework_duration.yaml new file mode 100644 index 0000000..c7603a4 --- /dev/null +++ b/configs/resident/telework_duration.yaml @@ -0,0 +1,23 @@ +# CHOICE_MODEL: PROBABILISTIC +CHOICE_MODEL: MNL + +# Worker filters: apply only to workers with in-home work activity. +CHOOSER_FILTER_COLUMN_NAME: has_in_home_work_activity + +# Output columns on persons table. +DURATION_CATEGORY_COLUMN_NAME: telework_duration_category +DURATION_HOURS_COLUMN_NAME: telework_duration_hours + +# Shared alternatives for both model types. +ALTS: telework_duration_alts.csv +ALT_NAME_COLUMN: alt +ALT_DURATION_COLUMN: duration_hours + +# Probabilistic configuration. +PROBS_SPEC: telework_duration_probs.csv +PROBS_JOIN_COLS: null + +# MNL configuration (used when CHOICE_MODEL: MNL). +SPEC: telework_duration.csv +COEFFICIENTS: telework_duration_coeffs.csv +LOGIT_TYPE: MNL \ No newline at end of file diff --git a/configs/resident/telework_duration_alts.csv b/configs/resident/telework_duration_alts.csv new file mode 100644 index 0000000..82f8a9b --- /dev/null +++ b/configs/resident/telework_duration_alts.csv @@ -0,0 +1,5 @@ +alt,duration_hours +0_2_hours,1 +2_4_hours,3 +4_8_hours,6 +8_plus_hours,8 diff --git a/configs/resident/telework_duration_coeffs.csv b/configs/resident/telework_duration_coeffs.csv new file mode 100644 index 0000000..7c3309e --- /dev/null +++ b/configs/resident/telework_duration_coeffs.csv @@ -0,0 +1,8 @@ +coefficient_name,value,constrain +coef_unavailable,-999,F +coef_acs_0_2h,-0.2,F +coef_acs_2_4h,-0.1,F +coef_acs_8_plus_h,-0.4,F +coef_parttime_2_4h,-0.3,F +coef_parttime_4_8h,-0.3,F +coef_parttime_8_plus_h,-0.4,F \ No newline at end of file diff --git a/configs/resident/telework_duration_probs.csv b/configs/resident/telework_duration_probs.csv new file mode 100644 index 0000000..21e4e23 --- /dev/null +++ b/configs/resident/telework_duration_probs.csv @@ -0,0 +1,2 @@ +0_2_hours,2_4_hours,4_8_hours,8_plus_hours +0.15,0.50,0.25,0.1 From 331f9134d9f85287ded2b5a0d342327d3fc952b0 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Wed, 27 May 2026 22:47:38 -0400 Subject: [PATCH 03/14] update settings --- configs/resident/settings.yaml | 3 ++- configs/resident/settings_mp.yaml | 3 ++- configs/resident/settings_mp_sharrow.yaml | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/configs/resident/settings.yaml b/configs/resident/settings.yaml index 7b566c4..9a3bd9d 100644 --- a/configs/resident/settings.yaml +++ b/configs/resident/settings.yaml @@ -173,7 +173,8 @@ models: - transponder_ownership - free_parking - telecommute_frequency - - telecommute_status + - telework_arrangement + - telework_duration - cdap_simulate - mandatory_tour_frequency - mandatory_tour_scheduling diff --git a/configs/resident/settings_mp.yaml b/configs/resident/settings_mp.yaml index f948d0c..ab96f15 100644 --- a/configs/resident/settings_mp.yaml +++ b/configs/resident/settings_mp.yaml @@ -42,7 +42,8 @@ models: - transponder_ownership - free_parking - telecommute_frequency - - telecommute_status + - telework_arrangement + - telework_duration - cdap_simulate - mandatory_tour_frequency - mandatory_tour_scheduling diff --git a/configs/resident/settings_mp_sharrow.yaml b/configs/resident/settings_mp_sharrow.yaml index 02ff2af..e52ecbc 100644 --- a/configs/resident/settings_mp_sharrow.yaml +++ b/configs/resident/settings_mp_sharrow.yaml @@ -45,7 +45,8 @@ models: - transponder_ownership - free_parking - telecommute_frequency - - telecommute_status + - telework_arrangement + - telework_duration - cdap_simulate - mandatory_tour_frequency - mandatory_tour_scheduling From 601e8bc2a61d6d9658f4da4ece128d37f26ec64e Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Mon, 29 Jun 2026 12:05:37 -0400 Subject: [PATCH 04/14] correct sequence --- configs/resident/settings.yaml | 2 +- configs/resident/settings_mp.yaml | 2 +- configs/resident/settings_mp_sharrow.yaml | 2 +- test/test_sandag_abm3.py | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/configs/resident/settings.yaml b/configs/resident/settings.yaml index 9a3bd9d..e7d039e 100644 --- a/configs/resident/settings.yaml +++ b/configs/resident/settings.yaml @@ -173,9 +173,9 @@ models: - transponder_ownership - free_parking - telecommute_frequency + - cdap_simulate - telework_arrangement - telework_duration - - cdap_simulate - mandatory_tour_frequency - mandatory_tour_scheduling - school_escorting diff --git a/configs/resident/settings_mp.yaml b/configs/resident/settings_mp.yaml index ab96f15..a3d9140 100644 --- a/configs/resident/settings_mp.yaml +++ b/configs/resident/settings_mp.yaml @@ -42,9 +42,9 @@ models: - transponder_ownership - free_parking - telecommute_frequency + - cdap_simulate - telework_arrangement - telework_duration - - cdap_simulate - mandatory_tour_frequency - mandatory_tour_scheduling - school_escorting diff --git a/configs/resident/settings_mp_sharrow.yaml b/configs/resident/settings_mp_sharrow.yaml index e52ecbc..125965a 100644 --- a/configs/resident/settings_mp_sharrow.yaml +++ b/configs/resident/settings_mp_sharrow.yaml @@ -45,9 +45,9 @@ models: - transponder_ownership - free_parking - telecommute_frequency + - cdap_simulate - telework_arrangement - telework_duration - - cdap_simulate - mandatory_tour_frequency - mandatory_tour_scheduling - school_escorting diff --git a/test/test_sandag_abm3.py b/test/test_sandag_abm3.py index 905c8eb..4bd36b9 100644 --- a/test/test_sandag_abm3.py +++ b/test/test_sandag_abm3.py @@ -71,8 +71,9 @@ def regress(out_dir: Path, regress_dir: Path = None, filename="final_trips.csv") "transponder_ownership", "free_parking", "telecommute_frequency", - "telecommute_status", "cdap_simulate", + "telework_arrangement", + "telework_duration", "mandatory_tour_frequency", "mandatory_tour_scheduling", "school_escorting", From 67190d62fd162225c0f1e06ec7582dc5bc0b8683 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Wed, 15 Jul 2026 18:20:15 -0400 Subject: [PATCH 05/14] [skip ci] estimated tele arrangement (v51) --- configs/resident/telework_arrangement.csv | 24 +++++++++++++++++-- .../resident/telework_arrangement_coeffs.csv | 20 ++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/configs/resident/telework_arrangement.csv b/configs/resident/telework_arrangement.csv index 4a3ab0b..9769ff9 100644 --- a/configs/resident/telework_arrangement.csv +++ b/configs/resident/telework_arrangement.csv @@ -1,3 +1,23 @@ Label,Description,Expression,has_in_home_work_activity,no_in_home_work_activity -util_acs,alternative specific constant,1,,coef_acs_no_in_home_work_activity -util_cdap_activity_mandatory,mandatory activity on the simulation day,@(persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY),, \ No newline at end of file +util_acs,alternative specific constant,@1,coef_acs_has_in_home_work_activity, +util_part_time_worker,partime worker,ptype==2,coef_parttime_has_in_home, +util_univ_student,university student,ptype==3,coef_univ_student_has_in_home, +util_driving_age_student,driving age student,ptype==6,-999, +util_has_preschool_at_home,has preschool children at home on the day,has_preschool_kid_at_home,coef_has_preschool_at_home_has_in_home, +util_income_100_150,income 100-150k,(income_in_thousands>=100)&(income_in_thousands<150),coef_income_100_150, +util_income_150p,income 150k plus,income_in_thousands>=150,coef_income_150p, +util_age_above_35,age above 35,age>=35,coef_age_above_35, +util_workplace_mc_logsum,workplace mode choice logsum,"@np.where(df.workplace_zone_id>-1, df.workplace_modechoice_logsum, 0)",coef_workplace_mc_logsum, +util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace, +# interaction terms,,,, +util_telecommute_1_day_cdap_N,telecommute 1 day and cdap non-mandatory,"(telecommute_frequency==""1_day_week"") & (cdap_activity==""N"")",coef_telecommute_1_day_cdap_N, +util_telecommute_2_3_days_cdap_N,telecommute 2-3 days and cdap non-mandatory,"(telecommute_frequency==""2_3_days_week"") & (cdap_activity==""N"")",coef_telecommute_2_3_4p_days_cdap_N, +util_telecommute_4p_days_cdap_N,telecommute 4p days and cdap non-mandatory,"(telecommute_frequency==""4_days_week"") & (cdap_activity==""N"")",coef_telecommute_2_3_4p_days_cdap_N, +util_telecommute_1_day_cdap_H,telecommute 1 day and cdap home,"(telecommute_frequency==""1_day_week"") & (cdap_activity==""H"")",coef_telecommute_1_day_cdap_H, +util_telecommute_2_3_days_cdap_H,telecommute 2-3 days and cdap home,"(telecommute_frequency==""2_3_days_week"") & (cdap_activity==""H"")",coef_telecommute_2_3_days_cdap_H, +util_telecommute_4p_days_cdap_H,telecommute 4p days and cdap home,"(telecommute_frequency==""4_days_week"") & (cdap_activity==""H"")",coef_telecommute_4p_days_cdap_H, +util_work_from_home_cdap_N,work from home and cdap non-mandatory,"(work_from_home==True) & (cdap_activity==""N"")",coef_work_from_home_cdap_N, +util_work_from_home_cdap_H,work from home and cdap home,"(work_from_home==True) & (cdap_activity==""H"")",coef_work_from_home_cdap_H, +# industry,,,, +util_industry_business_srv,srv industry_business,"(industry==""business_srv"")",coef_industry_business_srv, +util_cdap_N_non_mandatory_accessibility,CDAP N and Disaggreage non-mandatory accessibility at home location,"(cdap_activity==""N"")*(othdiscr_accessibility + shopping_accessibility) / 2",coef_cdap_N_non_mandatory_accessibility, diff --git a/configs/resident/telework_arrangement_coeffs.csv b/configs/resident/telework_arrangement_coeffs.csv index b1fed18..478c700 100644 --- a/configs/resident/telework_arrangement_coeffs.csv +++ b/configs/resident/telework_arrangement_coeffs.csv @@ -1,3 +1,19 @@ coefficient_name,value,constrain -coef_unavailable,-999,F -coef_acs_no_in_home_work_activity,-0.5,F +coef_acs_has_in_home_work_activity,-1.28,F +coef_age_above_35,-0.155,F +coef_cdap_N_non_mandatory_accessibility,0.012,F +coef_dummy_missing_workplace,-0.0295,F +coef_has_preschool_at_home_has_in_home,0.384,F +coef_income_100_150,0.187,F +coef_income_150p,0.293,F +coef_industry_business_srv,0.65,F +coef_parttime_has_in_home,-0.497,F +coef_telecommute_1_day_cdap_H,0.684,F +coef_telecommute_1_day_cdap_N,0.298,F +coef_telecommute_2_3_4p_days_cdap_N,1.73,F +coef_telecommute_2_3_days_cdap_H,1.57,F +coef_telecommute_4p_days_cdap_H,1.87,F +coef_univ_student_has_in_home,-0.798,F +coef_work_from_home_cdap_H,1.95,F +coef_work_from_home_cdap_N,2.25,F +coef_workplace_mc_logsum,-0.00867,F From c711926bd8721e715c7707c376ee4283465a89e1 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Wed, 15 Jul 2026 18:21:01 -0400 Subject: [PATCH 06/14] [skip ci] estimated tele duration (v26) --- configs/resident/telework_duration.csv | 13 +++++++--- configs/resident/telework_duration_alts.csv | 8 +++---- configs/resident/telework_duration_coeffs.csv | 24 +++++++++++++------ 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/configs/resident/telework_duration.csv b/configs/resident/telework_duration.csv index 8e768c4..20be13b 100644 --- a/configs/resident/telework_duration.csv +++ b/configs/resident/telework_duration.csv @@ -1,3 +1,10 @@ -Label,Description,Expression,0_2_hours,2_4_hours,4_8_hours,8_plus_hours -util_asc,alternative specific constant,1,coef_acs_0_2h,coef_acs_2_4h,,coef_acs_8_plus_h -util_part_time,part-time worker,@df.ptype==PTYPE_PART,,coef_parttime_2_4h,coef_parttime_4_8h,coef_parttime_8_plus_h \ No newline at end of file +Label,Description,Expression,3-5 hours,5-7 hours,7-9 hours,9+ hours +util_asc,alternative specific constant,@1,coef_acs_3_5,coef_acs_5_7,,coef_asc_9_plus +util_part_time,part-time worker,@df.ptype==2,coef_part_time_3_5,coef_part_time_5_7,,coef_part_time_9_plus +util_university_student,university student,@df.ptype==3,coef_university_student_3_5,coef_university_student_5_7,, +util_work_from_home,work from home,work_from_home,coef_work_from_home_3_7,coef_work_from_home_3_7,,coef_work_from_home_9_plus +util_hybrid,hybrid worker,"(telework_arrangement==""hybrid working"")",,,coef_hybrid_7_plus,coef_hybrid_7_plus +util_income_100_150,income 100-150k,(income_in_thousands>=100)&(income_in_thousands<150),coef_income_100_150_3_7,coef_income_100_150_3_7,, +util_income_150_plus,income 150k+,(income_in_thousands>=150),coef_income_150_plus_3_5,coef_income_150_plus_5_7,, +util_workplace_mc_logsum,workplace mode choice logsum,"@np.where(df.workplace_zone_id > -1, df.workplace_modechoice_logsum, 0)",coef_workplace_mc_logsum_3_7,coef_workplace_mc_logsum_3_7,, +util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace_3_5,coef_dummy_missing_workplace_5_7,, diff --git a/configs/resident/telework_duration_alts.csv b/configs/resident/telework_duration_alts.csv index 82f8a9b..58006f8 100644 --- a/configs/resident/telework_duration_alts.csv +++ b/configs/resident/telework_duration_alts.csv @@ -1,5 +1,5 @@ alt,duration_hours -0_2_hours,1 -2_4_hours,3 -4_8_hours,6 -8_plus_hours,8 +3-5 hours,4 +5-7 hours,6 +7-9 hours,8 +9+ hours,10 diff --git a/configs/resident/telework_duration_coeffs.csv b/configs/resident/telework_duration_coeffs.csv index 7c3309e..e9474fc 100644 --- a/configs/resident/telework_duration_coeffs.csv +++ b/configs/resident/telework_duration_coeffs.csv @@ -1,8 +1,18 @@ coefficient_name,value,constrain -coef_unavailable,-999,F -coef_acs_0_2h,-0.2,F -coef_acs_2_4h,-0.1,F -coef_acs_8_plus_h,-0.4,F -coef_parttime_2_4h,-0.3,F -coef_parttime_4_8h,-0.3,F -coef_parttime_8_plus_h,-0.4,F \ No newline at end of file +coef_acs_3_5,-1.32,F +coef_acs_5_7,-1.40,F +coef_asc_9_plus,-1.47,F +coef_dummy_missing_workplace_3_5,1.4,F +coef_dummy_missing_workplace_5_7,0.995,F +coef_hybrid_7_plus,-0.323,F +coef_income_100_150_3_7,-0.189,F +coef_income_150_plus_3_5,-0.201,F +coef_income_150_plus_5_7,-0.342,F +coef_part_time_3_5,1.45,F +coef_part_time_5_7,1.28,F +coef_part_time_9_plus,-0.849,F +coef_university_student_3_5,1.74,F +coef_university_student_5_7,1.42,F +coef_work_from_home_3_7,-0.297,F +coef_work_from_home_9_plus,-0.341,F +coef_workplace_mc_logsum_3_7,0.138,F From c1e22d8c7609e8818564fa686efda844f7d916d0 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Sun, 19 Jul 2026 16:07:47 -0400 Subject: [PATCH 07/14] drop missing workplace dummy --- configs/resident/telework_arrangement.csv | 4 ++-- configs/resident/telework_duration.csv | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/resident/telework_arrangement.csv b/configs/resident/telework_arrangement.csv index 9769ff9..bb5055f 100644 --- a/configs/resident/telework_arrangement.csv +++ b/configs/resident/telework_arrangement.csv @@ -8,7 +8,7 @@ util_income_100_150,income 100-150k,(income_in_thousands>=100)&(income_in_thousa util_income_150p,income 150k plus,income_in_thousands>=150,coef_income_150p, util_age_above_35,age above 35,age>=35,coef_age_above_35, util_workplace_mc_logsum,workplace mode choice logsum,"@np.where(df.workplace_zone_id>-1, df.workplace_modechoice_logsum, 0)",coef_workplace_mc_logsum, -util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace, +#util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace, # interaction terms,,,, util_telecommute_1_day_cdap_N,telecommute 1 day and cdap non-mandatory,"(telecommute_frequency==""1_day_week"") & (cdap_activity==""N"")",coef_telecommute_1_day_cdap_N, util_telecommute_2_3_days_cdap_N,telecommute 2-3 days and cdap non-mandatory,"(telecommute_frequency==""2_3_days_week"") & (cdap_activity==""N"")",coef_telecommute_2_3_4p_days_cdap_N, @@ -19,5 +19,5 @@ util_telecommute_4p_days_cdap_H,telecommute 4p days and cdap home,"(telecommute_ util_work_from_home_cdap_N,work from home and cdap non-mandatory,"(work_from_home==True) & (cdap_activity==""N"")",coef_work_from_home_cdap_N, util_work_from_home_cdap_H,work from home and cdap home,"(work_from_home==True) & (cdap_activity==""H"")",coef_work_from_home_cdap_H, # industry,,,, -util_industry_business_srv,srv industry_business,"(industry==""business_srv"")",coef_industry_business_srv, +util_industry_business_srv,srv industry_business,@df.naics_code==54,coef_industry_business_srv, util_cdap_N_non_mandatory_accessibility,CDAP N and Disaggreage non-mandatory accessibility at home location,"(cdap_activity==""N"")*(othdiscr_accessibility + shopping_accessibility) / 2",coef_cdap_N_non_mandatory_accessibility, diff --git a/configs/resident/telework_duration.csv b/configs/resident/telework_duration.csv index 20be13b..6ffdee0 100644 --- a/configs/resident/telework_duration.csv +++ b/configs/resident/telework_duration.csv @@ -7,4 +7,4 @@ util_hybrid,hybrid worker,"(telework_arrangement==""hybrid working"")",,,coef_hy util_income_100_150,income 100-150k,(income_in_thousands>=100)&(income_in_thousands<150),coef_income_100_150_3_7,coef_income_100_150_3_7,, util_income_150_plus,income 150k+,(income_in_thousands>=150),coef_income_150_plus_3_5,coef_income_150_plus_5_7,, util_workplace_mc_logsum,workplace mode choice logsum,"@np.where(df.workplace_zone_id > -1, df.workplace_modechoice_logsum, 0)",coef_workplace_mc_logsum_3_7,coef_workplace_mc_logsum_3_7,, -util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace_3_5,coef_dummy_missing_workplace_5_7,, +#util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace_3_5,coef_dummy_missing_workplace_5_7,, From f5f4ab6edf5e3900dd1650831939d34316dcbd50 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Tue, 4 Aug 2026 19:12:11 -0400 Subject: [PATCH 08/14] update annotate --- configs/resident/annotate_persons_telework_arrangement.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/resident/annotate_persons_telework_arrangement.csv b/configs/resident/annotate_persons_telework_arrangement.csv index adb93ea..36ee548 100644 --- a/configs/resident/annotate_persons_telework_arrangement.csv +++ b/configs/resident/annotate_persons_telework_arrangement.csv @@ -2,5 +2,5 @@ Description,Target,Expression #,, annotate persons table after telework arrangement model has run Legible label of telework arrangement on the simulation day,telework_arrangement,'not working' Teleworking on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')!=CDAP_ACTIVITY_MANDATORY)&(persons.get('has_in_home_work_activity')), 'teleworking', telework_arrangement)" -Commuting on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY)&(~persons.get('has_in_home_work_activity')), 'commuting', telework_arrangement)" +Commuting on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY)&(~persons.get('has_in_home_work_activity'))&(persons.get('is_worker')), 'commuting', telework_arrangement)" Hybrid working on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY)&(persons.get('has_in_home_work_activity')), 'hybrid working', telework_arrangement)" \ No newline at end of file From c57444bf6574fa727d4c9e04d947e8519c9ad5bc Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Tue, 11 Aug 2026 11:55:01 -0400 Subject: [PATCH 09/14] [skip ci] reclassified hybrid workers (v59) --- configs/resident/telework_arrangement.csv | 14 +++++- .../resident/telework_arrangement_coeffs.csv | 47 ++++++++++++------- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/configs/resident/telework_arrangement.csv b/configs/resident/telework_arrangement.csv index bb5055f..a6117f4 100644 --- a/configs/resident/telework_arrangement.csv +++ b/configs/resident/telework_arrangement.csv @@ -19,5 +19,17 @@ util_telecommute_4p_days_cdap_H,telecommute 4p days and cdap home,"(telecommute_ util_work_from_home_cdap_N,work from home and cdap non-mandatory,"(work_from_home==True) & (cdap_activity==""N"")",coef_work_from_home_cdap_N, util_work_from_home_cdap_H,work from home and cdap home,"(work_from_home==True) & (cdap_activity==""H"")",coef_work_from_home_cdap_H, # industry,,,, -util_industry_business_srv,srv industry_business,@df.naics_code==54,coef_industry_business_srv, +util_industry_retail,retail industry,"@df.naics_code.isin([44,45])",coef_industry_retail, +util_industry_construction,construction industry,@df.naics_code==23,coef_industry_construction, +util_industry_other,srv industry_other,@df.naics_code==81,coef_industry_other, +util_industry_healthcare,healthcare industry,@df.naics_code==62,coef_industry_healthcare, +util_industry_education,education industry,@df.naics_code==61,coef_industry_education, +util_industry_government,government industry,@df.naics_code==92,coef_industry_government, +util_industry_mgmt_srv,mgmt_srv,@df.naics_code==55,coef_industry_mgmt_srv, +util_industry_manufacturing,manufacturing,"@df.naics_code.isin([31,32,33,3000])",coef_industry_manufacturing, +util_industry_entertainment,entertainment,@df.naics_code==71,coef_industry_entertainment, +util_industry_accomodation,accomodation,"@df.naics_code.isin([721,722])",coef_industry_accomodation, +util_industry_military,military,@df.naics_code==9000,coef_industry_military, util_cdap_N_non_mandatory_accessibility,CDAP N and Disaggreage non-mandatory accessibility at home location,"(cdap_activity==""N"")*(othdiscr_accessibility + shopping_accessibility) / 2",coef_cdap_N_non_mandatory_accessibility, +# intrazonal,,,, +util_intrazonal,intrazonal,home_zone_id==workplace_zone_id,coef_intrazonal, diff --git a/configs/resident/telework_arrangement_coeffs.csv b/configs/resident/telework_arrangement_coeffs.csv index 478c700..bbecf11 100644 --- a/configs/resident/telework_arrangement_coeffs.csv +++ b/configs/resident/telework_arrangement_coeffs.csv @@ -1,19 +1,30 @@ coefficient_name,value,constrain -coef_acs_has_in_home_work_activity,-1.28,F -coef_age_above_35,-0.155,F -coef_cdap_N_non_mandatory_accessibility,0.012,F -coef_dummy_missing_workplace,-0.0295,F -coef_has_preschool_at_home_has_in_home,0.384,F -coef_income_100_150,0.187,F -coef_income_150p,0.293,F -coef_industry_business_srv,0.65,F -coef_parttime_has_in_home,-0.497,F -coef_telecommute_1_day_cdap_H,0.684,F -coef_telecommute_1_day_cdap_N,0.298,F -coef_telecommute_2_3_4p_days_cdap_N,1.73,F -coef_telecommute_2_3_days_cdap_H,1.57,F -coef_telecommute_4p_days_cdap_H,1.87,F -coef_univ_student_has_in_home,-0.798,F -coef_work_from_home_cdap_H,1.95,F -coef_work_from_home_cdap_N,2.25,F -coef_workplace_mc_logsum,-0.00867,F +coef_acs_has_in_home_work_activity,-1.39,F +coef_age_above_35,-0.206,F +coef_cdap_N_non_mandatory_accessibility,0.0584,F +coef_dummy_missing_workplace,0.433,F +coef_has_preschool_at_home_has_in_home,0.341,F +coef_income_100_150,0.128,F +coef_income_150p,0.222,F +coef_industry_accomodation,-0.798,F +coef_industry_construction,-0.851,F +coef_industry_education,-0.541,F +coef_industry_entertainment,-1.09,F +coef_industry_government,-0.517,F +coef_industry_healthcare,-0.466,F +coef_industry_manufacturing,-0.415,F +coef_industry_mgmt_srv,-0.594,F +coef_industry_military,-0.645,F +coef_industry_other,-0.986,F +coef_industry_retail,-0.746,F +coef_intrazonal,0.586,F +coef_parttime_has_in_home,-0.631,F +coef_telecommute_1_day_cdap_H,1.43,F +coef_telecommute_1_day_cdap_N,0.397,F +coef_telecommute_2_3_4p_days_cdap_N,1.81,F +coef_telecommute_2_3_days_cdap_H,2.27,F +coef_telecommute_4p_days_cdap_H,2.54,F +coef_univ_student_has_in_home,-0.737,F +coef_work_from_home_cdap_H,2.81,F +coef_work_from_home_cdap_N,2.59,F +coef_workplace_mc_logsum,-0.0349,F From 38f036fd53777f14dcb662bdccbba8fedf828740 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Tue, 11 Aug 2026 11:56:23 -0400 Subject: [PATCH 10/14] [skip ci] reclassified workers (v30) --- configs/resident/telework_duration.csv | 3 +- configs/resident/telework_duration_coeffs.csv | 32 +++++++++---------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/configs/resident/telework_duration.csv b/configs/resident/telework_duration.csv index 6ffdee0..230212e 100644 --- a/configs/resident/telework_duration.csv +++ b/configs/resident/telework_duration.csv @@ -4,7 +4,6 @@ util_part_time,part-time worker,@df.ptype==2,coef_part_time_3_5,coef_part_time_5 util_university_student,university student,@df.ptype==3,coef_university_student_3_5,coef_university_student_5_7,, util_work_from_home,work from home,work_from_home,coef_work_from_home_3_7,coef_work_from_home_3_7,,coef_work_from_home_9_plus util_hybrid,hybrid worker,"(telework_arrangement==""hybrid working"")",,,coef_hybrid_7_plus,coef_hybrid_7_plus -util_income_100_150,income 100-150k,(income_in_thousands>=100)&(income_in_thousands<150),coef_income_100_150_3_7,coef_income_100_150_3_7,, -util_income_150_plus,income 150k+,(income_in_thousands>=150),coef_income_150_plus_3_5,coef_income_150_plus_5_7,, +util_income_150_plus,income 150k+,(income_in_thousands>=150),coef_income_150_plus_3_7,coef_income_150_plus_3_7,, util_workplace_mc_logsum,workplace mode choice logsum,"@np.where(df.workplace_zone_id > -1, df.workplace_modechoice_logsum, 0)",coef_workplace_mc_logsum_3_7,coef_workplace_mc_logsum_3_7,, #util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace_3_5,coef_dummy_missing_workplace_5_7,, diff --git a/configs/resident/telework_duration_coeffs.csv b/configs/resident/telework_duration_coeffs.csv index e9474fc..c3957d1 100644 --- a/configs/resident/telework_duration_coeffs.csv +++ b/configs/resident/telework_duration_coeffs.csv @@ -1,18 +1,16 @@ coefficient_name,value,constrain -coef_acs_3_5,-1.32,F -coef_acs_5_7,-1.40,F -coef_asc_9_plus,-1.47,F -coef_dummy_missing_workplace_3_5,1.4,F -coef_dummy_missing_workplace_5_7,0.995,F -coef_hybrid_7_plus,-0.323,F -coef_income_100_150_3_7,-0.189,F -coef_income_150_plus_3_5,-0.201,F -coef_income_150_plus_5_7,-0.342,F -coef_part_time_3_5,1.45,F -coef_part_time_5_7,1.28,F -coef_part_time_9_plus,-0.849,F -coef_university_student_3_5,1.74,F -coef_university_student_5_7,1.42,F -coef_work_from_home_3_7,-0.297,F -coef_work_from_home_9_plus,-0.341,F -coef_workplace_mc_logsum_3_7,0.138,F +coef_acs_3_5,-1.45,F +coef_acs_5_7,-1.58,F +coef_asc_9_plus,-1.53,F +coef_dummy_missing_workplace_3_5,1.43,F +coef_dummy_missing_workplace_5_7,1.05,F +coef_hybrid_7_plus,-7.27,F +coef_income_150_plus_3_7,-0.199,F +coef_part_time_3_5,1.98,F +coef_part_time_5_7,1.83,F +coef_part_time_9_plus,-1.76,F +coef_university_student_3_5,1.66,F +coef_university_student_5_7,1.39,F +coef_work_from_home_3_7,-0.256,F +coef_work_from_home_9_plus,-0.274,F +coef_workplace_mc_logsum_3_7,0.124,F From 8e93c911edb003fc2de105987fc04fd712af9614 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Tue, 18 Aug 2026 21:40:05 -0400 Subject: [PATCH 11/14] [skipci] duration model v39 --- configs/resident/telework_duration.csv | 5 ++-- configs/resident/telework_duration_coeffs.csv | 28 +++++++++---------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/configs/resident/telework_duration.csv b/configs/resident/telework_duration.csv index 230212e..69f4cb4 100644 --- a/configs/resident/telework_duration.csv +++ b/configs/resident/telework_duration.csv @@ -2,8 +2,9 @@ Label,Description,Expression,3-5 hours,5-7 hours,7-9 hours,9+ hours util_asc,alternative specific constant,@1,coef_acs_3_5,coef_acs_5_7,,coef_asc_9_plus util_part_time,part-time worker,@df.ptype==2,coef_part_time_3_5,coef_part_time_5_7,,coef_part_time_9_plus util_university_student,university student,@df.ptype==3,coef_university_student_3_5,coef_university_student_5_7,, -util_work_from_home,work from home,work_from_home,coef_work_from_home_3_7,coef_work_from_home_3_7,,coef_work_from_home_9_plus -util_hybrid,hybrid worker,"(telework_arrangement==""hybrid working"")",,,coef_hybrid_7_plus,coef_hybrid_7_plus +util_work_from_home,work from home,work_from_home,,,,coef_work_from_home_9_plus +util_hybrid,hybrid worker,(cdap_activity=='M')&(ptype<3),,,coef_hybrid_7_plus,coef_hybrid_7_plus util_income_150_plus,income 150k+,(income_in_thousands>=150),coef_income_150_plus_3_7,coef_income_150_plus_3_7,, util_workplace_mc_logsum,workplace mode choice logsum,"@np.where(df.workplace_zone_id > -1, df.workplace_modechoice_logsum, 0)",coef_workplace_mc_logsum_3_7,coef_workplace_mc_logsum_3_7,, #util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace_3_5,coef_dummy_missing_workplace_5_7,, +util_intrazonal,intrazonal,home_zone_id==workplace_zone_id,coef_intrazonal_3_5,,, diff --git a/configs/resident/telework_duration_coeffs.csv b/configs/resident/telework_duration_coeffs.csv index c3957d1..3fa6b42 100644 --- a/configs/resident/telework_duration_coeffs.csv +++ b/configs/resident/telework_duration_coeffs.csv @@ -1,16 +1,16 @@ coefficient_name,value,constrain -coef_acs_3_5,-1.45,F -coef_acs_5_7,-1.58,F +coef_acs_3_5,-1.71,F +coef_acs_5_7,-1.80,F coef_asc_9_plus,-1.53,F -coef_dummy_missing_workplace_3_5,1.43,F -coef_dummy_missing_workplace_5_7,1.05,F -coef_hybrid_7_plus,-7.27,F -coef_income_150_plus_3_7,-0.199,F -coef_part_time_3_5,1.98,F -coef_part_time_5_7,1.83,F -coef_part_time_9_plus,-1.76,F -coef_university_student_3_5,1.66,F -coef_university_student_5_7,1.39,F -coef_work_from_home_3_7,-0.256,F -coef_work_from_home_9_plus,-0.274,F -coef_workplace_mc_logsum_3_7,0.124,F +coef_dummy_missing_workplace_3_5,1.7,F +coef_dummy_missing_workplace_5_7,1.28,F +coef_hybrid_7_plus,-6.70,F +coef_income_150_plus_3_7,-0.194,F +coef_intrazonal_3_5,0.495,F +coef_part_time_3_5,2,F +coef_part_time_5_7,1.85,F +coef_part_time_9_plus,-1.64,F +coef_university_student_3_5,2.16,F +coef_university_student_5_7,1.85,F +coef_work_from_home_9_plus,-0.264,F +coef_workplace_mc_logsum_3_7,0.0624,F From b99fd592f842f207687b6c29ec67728627dc9d8c Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Tue, 18 Aug 2026 21:40:58 -0400 Subject: [PATCH 12/14] move classification after mtf due to student workers --- configs/resident/annotate_persons_mtf.csv | 4 ++++ configs/resident/annotate_persons_telework_arrangement.csv | 6 ------ configs/resident/telework_arrangement.yaml | 4 ---- 3 files changed, 4 insertions(+), 10 deletions(-) delete mode 100644 configs/resident/annotate_persons_telework_arrangement.csv diff --git a/configs/resident/annotate_persons_mtf.csv b/configs/resident/annotate_persons_mtf.csv index 47e4160..f90f9d2 100644 --- a/configs/resident/annotate_persons_mtf.csv +++ b/configs/resident/annotate_persons_mtf.csv @@ -8,3 +8,7 @@ number of mandatory tours for each person,num_mand,"_PERSON_TOUR_COUNT('tour_cat number of work tours for each person,num_work_tours,"_PERSON_TOUR_COUNT('tour_type==%s' % _Q('work'), persons, tours).fillna(0)" presence of pre school kid with mandatory tours,has_pre_school_child_with_mandatory,"other_than(persons.household_id, (persons.ptype == 8) & (num_mand > 0))" presense of driving age school children with mandatory tours,has_driving_age_child_with_mandatory,"other_than(persons.household_id, (persons.ptype == 6) & (num_mand > 0))" +Legible label of telework arrangement on the simulation day,telework_arrangement,'not working' +Teleworking on the simulation day,telework_arrangement,"np.where((num_work_tours==0)&(persons.get('has_in_home_work_activity')), 'teleworking', telework_arrangement)" +Commuting on the simulation day,telework_arrangement,"np.where((num_work_tours>0)&(~persons.get('has_in_home_work_activity'))&(persons.get('is_worker')), 'commuting', telework_arrangement)" +Hybrid working on the simulation day,telework_arrangement,"np.where((num_work_tours>0)&(persons.get('has_in_home_work_activity')), 'hybrid working', telework_arrangement)" \ No newline at end of file diff --git a/configs/resident/annotate_persons_telework_arrangement.csv b/configs/resident/annotate_persons_telework_arrangement.csv deleted file mode 100644 index 36ee548..0000000 --- a/configs/resident/annotate_persons_telework_arrangement.csv +++ /dev/null @@ -1,6 +0,0 @@ -Description,Target,Expression -#,, annotate persons table after telework arrangement model has run -Legible label of telework arrangement on the simulation day,telework_arrangement,'not working' -Teleworking on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')!=CDAP_ACTIVITY_MANDATORY)&(persons.get('has_in_home_work_activity')), 'teleworking', telework_arrangement)" -Commuting on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY)&(~persons.get('has_in_home_work_activity'))&(persons.get('is_worker')), 'commuting', telework_arrangement)" -Hybrid working on the simulation day,telework_arrangement,"np.where((persons.get('cdap_activity')==CDAP_ACTIVITY_MANDATORY)&(persons.get('has_in_home_work_activity')), 'hybrid working', telework_arrangement)" \ No newline at end of file diff --git a/configs/resident/telework_arrangement.yaml b/configs/resident/telework_arrangement.yaml index 20eb237..e1ff4b4 100644 --- a/configs/resident/telework_arrangement.yaml +++ b/configs/resident/telework_arrangement.yaml @@ -4,7 +4,3 @@ COEFFICIENTS: telework_arrangement_coeffs.csv LOGIT_TYPE: MNL HAS_IN_HOME_WORK_ACTIVITY_ALT: 0 - -annotate_persons: - SPEC: annotate_persons_telework_arrangement - DF: persons \ No newline at end of file From d2dc726aea2c1f01651bf1ede53dc8bd78c86aa3 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Wed, 19 Aug 2026 11:12:53 -0400 Subject: [PATCH 13/14] telework duration probabilistic ver --- configs/resident/telework_duration.yaml | 3 ++- configs/resident/telework_duration_probs.csv | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/configs/resident/telework_duration.yaml b/configs/resident/telework_duration.yaml index c7603a4..1de5843 100644 --- a/configs/resident/telework_duration.yaml +++ b/configs/resident/telework_duration.yaml @@ -15,7 +15,8 @@ ALT_DURATION_COLUMN: duration_hours # Probabilistic configuration. PROBS_SPEC: telework_duration_probs.csv -PROBS_JOIN_COLS: null +PROBS_JOIN_COLS: + - ptype # MNL configuration (used when CHOICE_MODEL: MNL). SPEC: telework_duration.csv diff --git a/configs/resident/telework_duration_probs.csv b/configs/resident/telework_duration_probs.csv index 21e4e23..73758f1 100644 --- a/configs/resident/telework_duration_probs.csv +++ b/configs/resident/telework_duration_probs.csv @@ -1,2 +1,4 @@ -0_2_hours,2_4_hours,4_8_hours,8_plus_hours -0.15,0.50,0.25,0.1 +ptype,3-5 hours,5-7 hours,7-9 hours,9+ hours +1,0.14,0.13,0.62,0.11 +2,0.45,0.33,0.22,0 +3,0.73,0.11,0.03,0.13 \ No newline at end of file From 7a63b249b3fc7874fdeb5529bc4183a17c6e6f46 Mon Sep 17 00:00:00 2001 From: Sijia Wang Date: Thu, 24 Sep 2026 11:29:33 -0400 Subject: [PATCH 14/14] separate out 2_3_days_week --- configs/resident/telework_arrangement.csv | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/configs/resident/telework_arrangement.csv b/configs/resident/telework_arrangement.csv index a6117f4..0266568 100644 --- a/configs/resident/telework_arrangement.csv +++ b/configs/resident/telework_arrangement.csv @@ -1,6 +1,6 @@ Label,Description,Expression,has_in_home_work_activity,no_in_home_work_activity util_acs,alternative specific constant,@1,coef_acs_has_in_home_work_activity, -util_part_time_worker,partime worker,ptype==2,coef_parttime_has_in_home, +util_part_time_worker,part-time worker,ptype==2,coef_parttime_has_in_home, util_univ_student,university student,ptype==3,coef_univ_student_has_in_home, util_driving_age_student,driving age student,ptype==6,-999, util_has_preschool_at_home,has preschool children at home on the day,has_preschool_kid_at_home,coef_has_preschool_at_home_has_in_home, @@ -11,10 +11,10 @@ util_workplace_mc_logsum,workplace mode choice logsum,"@np.where(df.workplace_zo #util_dummy_missing_workplace,util_dummy_missing_workplace,"@np.where((df.workplace_zone_id<=-1)&(~df.work_from_home), 1, 0)",coef_dummy_missing_workplace, # interaction terms,,,, util_telecommute_1_day_cdap_N,telecommute 1 day and cdap non-mandatory,"(telecommute_frequency==""1_day_week"") & (cdap_activity==""N"")",coef_telecommute_1_day_cdap_N, -util_telecommute_2_3_days_cdap_N,telecommute 2-3 days and cdap non-mandatory,"(telecommute_frequency==""2_3_days_week"") & (cdap_activity==""N"")",coef_telecommute_2_3_4p_days_cdap_N, +util_telecommute_2_3_days_cdap_N,telecommute 2-3 days and cdap non-mandatory,"((telecommute_frequency==""2_days_week"") | (telecommute_frequency==""3_days_week"")) & (cdap_activity==""N"")",coef_telecommute_2_3_4p_days_cdap_N, util_telecommute_4p_days_cdap_N,telecommute 4p days and cdap non-mandatory,"(telecommute_frequency==""4_days_week"") & (cdap_activity==""N"")",coef_telecommute_2_3_4p_days_cdap_N, util_telecommute_1_day_cdap_H,telecommute 1 day and cdap home,"(telecommute_frequency==""1_day_week"") & (cdap_activity==""H"")",coef_telecommute_1_day_cdap_H, -util_telecommute_2_3_days_cdap_H,telecommute 2-3 days and cdap home,"(telecommute_frequency==""2_3_days_week"") & (cdap_activity==""H"")",coef_telecommute_2_3_days_cdap_H, +util_telecommute_2_3_days_cdap_H,telecommute 2-3 days and cdap home,"((telecommute_frequency==""2_days_week"") | (telecommute_frequency==""3_days_week"")) & (cdap_activity==""H"")",coef_telecommute_2_3_days_cdap_H, util_telecommute_4p_days_cdap_H,telecommute 4p days and cdap home,"(telecommute_frequency==""4_days_week"") & (cdap_activity==""H"")",coef_telecommute_4p_days_cdap_H, util_work_from_home_cdap_N,work from home and cdap non-mandatory,"(work_from_home==True) & (cdap_activity==""N"")",coef_work_from_home_cdap_N, util_work_from_home_cdap_H,work from home and cdap home,"(work_from_home==True) & (cdap_activity==""H"")",coef_work_from_home_cdap_H, @@ -28,8 +28,8 @@ util_industry_government,government industry,@df.naics_code==92,coef_industry_go util_industry_mgmt_srv,mgmt_srv,@df.naics_code==55,coef_industry_mgmt_srv, util_industry_manufacturing,manufacturing,"@df.naics_code.isin([31,32,33,3000])",coef_industry_manufacturing, util_industry_entertainment,entertainment,@df.naics_code==71,coef_industry_entertainment, -util_industry_accomodation,accomodation,"@df.naics_code.isin([721,722])",coef_industry_accomodation, +util_industry_accommodation,accommodation,"@df.naics_code.isin([721,722])",coef_industry_accomodation, util_industry_military,military,@df.naics_code==9000,coef_industry_military, -util_cdap_N_non_mandatory_accessibility,CDAP N and Disaggreage non-mandatory accessibility at home location,"(cdap_activity==""N"")*(othdiscr_accessibility + shopping_accessibility) / 2",coef_cdap_N_non_mandatory_accessibility, +util_cdap_N_non_mandatory_accessibility,CDAP N and Disaggregate non-mandatory accessibility at home location,"(cdap_activity==""N"")*(othdiscr_accessibility + shopping_accessibility) / 2",coef_cdap_N_non_mandatory_accessibility, # intrazonal,,,, util_intrazonal,intrazonal,home_zone_id==workplace_zone_id,coef_intrazonal,