How Do People Adapt Their Travel Behavior to Extreme Heat?
CP 8883- Introduction to Urban Analytics- Project Report
Research Motivation & Background
Increase in daily temperature is affecting how we move, breathe and spend our daily lives. The effects of climate change are being discerned in different aspects of daily lives including travel patterns. These changes are happening now and are rapidly influencing different aspects of our lives. It is important to understand this now more than ever if these shifts further contribute to climate change and whether each decision made is taking us closer or farther away from climate risk mitigation.
Figure 2: Unequal Impacts of Climate Change on Daily Life
Urban transportation systems are becoming increasingly vulnerable to the impacts of extreme weather conditions, with extreme heat emerging as a critical factor influencing mobility patterns in cities. A rising heat index, particularly in dense urban environments like Chicago, poses not only a public health threat but also disrupts how transportation is perceived and used. In general, travelers respond to extreme weather events by reducing travel time, changing travel mode, staying indoors, and/ or rescheduling trips (Figure 2). In recent years, the increasing frequency and intensity of extreme heat events have raised critical questions about their impact on urban mobility, particularly for vulnerable populations who rely more on surface transportation than other groups.
Figure 2: Adaptation Mechanisms to Extreme Heat
This study investigates how taxi and TNC usage patterns respond to extreme heat conditions in New York City. We examine sensitivity to different definitions of extreme heat, including days with a heat index (HI) exceeding 90°F, those surpassing historical heat index trends, and officially declared heat advisory days. Temporal variation is explored across multiple dimensions: comparing usage before and after the COVID-19 pandemic (2019 vs. 2023–2024), analyzing intra-day shifts by the hour. The analysis distinguishes between taxis and TNCs to uncover any mode-specific behavioral responses to high heat exposure.
Research Goals & Objectives
- To what extent is “demand” affected by extreme heat?
- When do these changes occur?
- Where do these changes occur?
- Do these changes disproportionately affect different socio-economic and demographic groups?
Case Study Selection
For this study, we picked New York City (NYC) metro area which includes all five boroughs, i.e. Manhattan, the Bronx, Queens, Brooklyn, and Staten Island. NYC is the most populous city in the United States, with an area spanning 300.4 square miles and is served by one of the world’s most extensive and complex multimodal public transportation systems. Operated predominantly by the Metropolitan Transportation Authority (MTA), the city’s transit infrastructure includes 6,553 subways that in 2023 traveled 355.5 million mile on 665 miles of track, 472 subway stations, 5,800 buses that in 2023 traveled 152 million miles, with 238 local bus routes, 20 select bus service routes and 75 express bus routes in the five boroughs, commuter railroads (Long Island Rail Road and Metro-North), paratransit services (Access-A-Ride), and the Staten Island Railway, along with a network of bridges and tunnels for vehicular traffic [citehttps://www.mta.info/agency/new-york-city-transit].
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tmap)
library(tmap)
library(leaflet)
library(RColorBrewer)
#census_api_key(Sys.getenv(CENSUS_API_KEY))
census_api_key("698568bc0852158fccf6044f4cd5ec586b74b2e0", install = TRUE, overwrite = TRUE)## Your original .Renviron will be backed up and stored in your R HOME directory if needed.
## Your API key has been stored in your .Renviron and can be accessed by Sys.getenv("CENSUS_API_KEY").
## To use now, restart R or run `readRenviron("~/.Renviron")`
## [1] "698568bc0852158fccf6044f4cd5ec586b74b2e0"
tract_chicago_2023 <- suppressMessages(
get_acs(
geography = "tract",
state = "IL",
county = c("031","043","097","197","111"),
variables = c(
median_income = "B19013_001",
total_households = "B11001_001"
),
year = 2023,
survey = "acs5",
geometry = TRUE,
output = "wide"
)
)## | | | 0% | |= | 1% | |== | 2% | |=== | 4% | |=== | 5% | |==== | 6% | |===== | 7% | |====== | 8% | |====== | 9% | |======= | 10% | |======= | 11% | |======== | 11% | |======== | 12% | |========= | 13% | |========== | 14% | |========== | 15% | |=========== | 16% | |============ | 17% | |============= | 18% | |============= | 19% | |============== | 20% | |=============== | 21% | |================ | 22% | |================ | 23% | |================= | 24% | |================== | 26% | |=================== | 27% | |=================== | 28% | |==================== | 29% | |===================== | 30% | |====================== | 31% | |====================== | 32% | |======================= | 33% | |======================== | 34% | |========================= | 35% | |========================== | 36% | |========================== | 38% | |=========================== | 39% | |============================ | 40% | |============================= | 41% | |============================= | 42% | |============================== | 43% | |=============================== | 44% | |================================ | 45% | |================================ | 46% | |================================= | 47% | |================================== | 49% | |=================================== | 50% | |==================================== | 51% | |==================================== | 52% | |===================================== | 53% | |====================================== | 54% | |======================================= | 55% | |======================================= | 56% | |======================================== | 57% | |========================================= | 58% | |========================================== | 60% | |========================================== | 61% | |=========================================== | 62% | |============================================ | 63% | |============================================= | 64% | |============================================= | 65% | |============================================== | 66% | |=============================================== | 67% | |================================================ | 68% | |================================================= | 69% | |================================================= | 70% | |================================================== | 72% | |=================================================== | 73% | |==================================================== | 74% | |==================================================== | 75% | |===================================================== | 76% | |====================================================== | 77% | |======================================================= | 78% | |======================================================= | 79% | |======================================================== | 80% | |========================================================= | 81% | |========================================================== | 83% | |=========================================================== | 84% | |=========================================================== | 85% | |============================================================ | 86% | |============================================================= | 87% | |============================================================== | 88% | |============================================================== | 89% | |=============================================================== | 90% | |================================================================ | 91% | |================================================================= | 92% | |================================================================= | 93% | |================================================================== | 95% | |=================================================================== | 96% | |==================================================================== | 97% | |===================================================================== | 98% | |===================================================================== | 99% | |======================================================================| 100%
# Create a color palette based on median_income
pal <- colorQuantile("YlOrRd", domain = tract_chicago_2023$median_incomeE, n = 5)
leaflet(tract_chicago_2023) %>%
addProviderTiles(providers$CartoDB.Positron) %>% # clean basemap
addPolygons(
fillColor = ~pal(median_incomeE),
weight = 1,
color = "white",
opacity = 0.7,
fillOpacity = 0.7,
highlightOptions = highlightOptions(
weight = 2,
color = "#666",
fillOpacity = 0.9,
bringToFront = TRUE
),
label = ~paste0("Tract: ", GEOID, "<br>",
"Median Income: $", formatC(median_incomeE, format="d", big.mark=",")),
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "13px",
direction = "auto"
)
) %>%
addLegend(
pal = pal,
values = ~median_incomeE,
opacity = 0.7,
title = "Median Income ($)",
position = "bottomright"
)## Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
## Need '+proj=longlat +datum=WGS84'
Methodology
add workflow from Miro
The ERA5 dataset provides information on climate variables, including hourly temperature, total precipitation, and humidity from 1980 onwards. This data was used to derive the heat index from climate variables using the weathermetrics package in R across all three years at the daily and hourly level from May- September. Once these heat indexes were calculated, we identified different thresholds to better understand extreme and dangerous heat levels. As per the National Weather Service (NWS), a heat index between 80°F and 90°F could result in fatigue under prolonged exposure and a heat index between 90-105°F falls under the extreme caution category, possibly resulting in heat disorders such as sunstroke and heat exhaustion. Using these definitions, we described Hot_1 as days when the heat index is equal to or greater than the historical 90th percentile (to better understand local climate with historical trends) and the heat index is greater than or equal to 80°F; Hot_2 as days when the maximum heat index is greater than or equal to 90°F.. For instance, for 2019, the historical 90th percentile was calculated from 1980 up until 2018. Lastly, Hot_3 includes days when the heat index is greater than or equal to 100°F, which falls under heat advisory and heat warning categories.
The ERA5 dataset was also used to calculate precipitation to identify heavy rain days that may alter regular travel decisions on a given day. During the data exploratory phase, we noticed an unusual decrease in the overall number of trips on certain days with no particular association with the heat index. Upon further investigation, we found these days to have received precipitation at different times of the day or throughout. One of the key decisions made during this phase was to identify a heavy precipitation day from a regular rainy day. A heavy precipitation event is defined as days where the total amount of precipitation is in the top 1 percent of all precipitation days during the 1958-2022 reference period. Based on this definition, each day’s total daily precipitation was calculated for New York City, and days in the top 1 percent category for each year were marked as rainy days, which were later dropped from model estimations. In the case of 2023, one of the most noticeable heavy precipitation days was on September 29th, with a maximum hourly intensity of 1.87 inches in Central Park and new records at JFK airport. Therefore, this day was flagged as a heavy rain day in our analysis, as travel decisions and consequently, TNC/taxi trip counts were heavily influenced by a weather condition other than extreme heat.
Figure 3: Heat Index Thresholds
Figure 4: Identifying Hot and Control Days
Figure 5: Count of Hot and Control Days in Different Categories