DaySim icon indicating copy to clipboard operation
DaySim copied to clipboard

Added a telework (work at home) submodel to the IndividualPersonDayPatternModel

Open mabcal opened this issue 4 years ago • 4 comments

This was implemented for SACOG re-estimation.

A binary choice model predicts whether the person works at home for more than a certain threshold of hours during the day, and then that choice is used to affect tour and trip rates by purpose using new variables added in the IndividualPersonDayPattern PersonExactNumberOfTours and IntermediateStopGeneration models.

There are several new configuration settings....

UseWorkAtHomeModelAndVariables.

This is False be default to be backwards-compatible, but setting it to True causes the new model to be used.

WorkAtHome_DurationThreshold=2.5

This corresponds to the threshold number of hours that is considered to be a "work at home" day in survey data. (Although the model was estimated outside of DaySim, the threshold is used in the code for consistency. The default value is 2.5 hours. This was chosen for SACOG because it was found that in 2018, about 65% of workers who worked at home less than that amount made commute tours on the day, while only about 35% of workers who worked at home more than that duration made commute tours, so this variable has a large affect on the probability of making a commute tour.

Below are the coefficients from an estimated binary logit model. We do not have data on the person's industry or occupation, so the fraction of jobs in various employment sectors at the person's work location parcel are used instead. The employment types that generally required people to be at work (in 2018) show a lower probability of working at home.

WorkAtHome_AlternativeSpecificConstant=-1.300 WorkAtHome_PartTimeWorkerCoefficient=-0.363 WorkAtHome_Income25to50Coefficient=-0.238 WorkAtHome_IncomeOver150Coefficient= 0.241 WorkAtHome_NonWorkerAndKidsInHHCoefficient=0.369 WorkAtHome_NoVehiclesInHHCoefficient=0.394 WorkAtHome_FractionEducationJobsCoefficient= -0.490 WorkAtHome_FractionFoodServiceJobsCoefficient=-2.416 WorkAtHome_FractionGovernmentJobsCoefficient=-0.883 WorkAtHome_FractionIndustrialJobsCoefficient=-0.405 WorkAtHome_FractionMedicalJobsCoefficient=-0.822 WorkAtHome_FractionOfficeJobsCoefficient=-0.380

These coefficients can be changed to "calibrate" the model to future telework scenarios. In particular, the WorkAtHome_AlternativeSpecificConstant can be made more positive for more working from home, and the negative effect for specific industry types can be made less negative if those job types in particular are hypothesized to allow more teleworking in future scenarios - particulary Government and Office. There is also a key coefficient 134 W-wkathome added to the IndividualPersonDayPattern model that has a large negative effect for working at home on making commute tours - this could also be made stronger for future scenarios.

mabcal avatar Dec 29 '21 18:12 mabcal

More on this - the output choice is written to the wkathome field on the person-day output file. A value >0 (set to the threshold +2 and rounded) indicates that the person works at home for more than the threshold duration. For the base SACOG survey application, the model predicts that about 13% of workers do this, which is the same as in the survey data used to estimate the model.

mabcal avatar Dec 29 '21 18:12 mabcal

@mabcal @nsdhakar When testing this functionality at PSRC, I noticed the changing the alternative specific constant did nothing to the results. Debugging the code, it seems like the utility terms are not being being added to the model because the ChoiceProbablityCalculator looks for the coefficient numbered 20, does not find it and exits the AddUtilityTerm function before it can assign 'value' (which is the passed in utility term). Looking at the rest of the code in this function, I am not sure that value would ever get assigned properly since the subsequent code also needs the coefficient variable to not be null.

stefancoe avatar Aug 25 '23 21:08 stefancoe

There needs to be a coefficient 20 in the IndividualDayPatternModel coefficient file with coefficient 1.0...it looks like

20 X-WKATHOME T 1.0 0

mabcal avatar Aug 25 '23 22:08 mabcal

Thanks- that worked!

stefancoe avatar Aug 26 '23 01:08 stefancoe