Initial Summary

The Replica trip table represents a typical weekday during Quarter 4 2023 within Virginia Beach, including all trips arriving and departing from block groups within the county limits. There are around 3.3 million trips on an average weekday, with an average length of 8.14 miles and average length of 20.46.

A breakdown of trips by mode and purpose is shown below.

ggplot(trips) +
  geom_bar(aes(x=mode, fill=travel_purpose)) +
  labs(
    title = "Count of Daily Trips by Mode and Purpose",
    x = NULL,
    y = "Count",
    fill = "Purpose"
  ) +
  scale_x_discrete(labels = label_wrap(10)) +
  scale_fill_rpg("rpg_rainbow_no_grey")

Trips by Mode

trips %>% 
  group_by(mode) %>% 
  summarize(trips = n()) %>% 
  kbl() %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
mode trips
Bike 46473
Carpool 620430
Commercial 69703
Drove Alone 2313931
On Demand 11845
Other 24512
Transit 5621
Walk 270166

Trips by Purpose

trips %>% 
  group_by(travel_purpose) %>% 
  summarize(trips = n()) %>% 
  kbl() %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
travel_purpose trips
Commercial 69703
Eat 361608
Home 1120875
Lodging 27803
Maintenance 130788
Recreation 145594
Region Departure 3177
School 179987
Shop 759310
Social 165060
Stage 48
Work 398728

The replica purpose definitions can be found here.

Time of Day

Virgina Beach trips follow a typical bimodal distribution common in most cities, with significant peaks from 7-9 AM and from 4-7 PM. While the mode tends to stay consistent across the day, travel purpose varies significantly. Below is a breakdown of trips by start time and mode, grouped into 5 minute increments.

ggplot(trips) +
  geom_histogram(aes(x=start_time, fill=mode), binwidth = 300) +
  labs(
    title = "Trips by Start Time and Mode",
    # caption = "5 Minute Bin Width",
    x = "Start Time",
    y = "Count",
    fill = "Purpose"
  ) +
  scale_fill_rpg("rpg_cold_warm") +
  scale_x_time(breaks = time_breaks)

Trips to work tend to peak in the AM between 6am an 8am and taper off for, trips to school show a similar pattern, with trips home showing the inverse peaking around 4pm to 6pm. The other purposes are relatively consistent through out the day, except for shopping which has a significant peak between 4pm and 8pm. Below is a breakdown of trips by start time and purpose, grouped into 5 minute increments.

ggplot(trips) +
  geom_histogram(aes(x=start_time, fill=travel_purpose), binwidth = 300) +
  labs(
    title = "Trips by Start Time and Travel Purpose",
    # caption = "5 Minute Bin Width",
    x = "Start Time",
    y = "Count",
    fill = "Purpose"
  ) +
  scale_fill_rpg("rpg_rainbow_no_grey") +
  scale_x_time(breaks = time_breaks)

Mode Share

The total mode share for all trips is displayed in the table below followed by a break down of mode share across the day in 10 minute increments.

trips %>% 
  group_by(mode) %>% 
  summarise(trips = n()) %>% 
  mutate(mode_share = round((trips/sum(trips))*100, digits = 2)) %>% 
  kbl() %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
mode trips mode_share
Bike 46473 1.38
Carpool 620430 18.45
Commercial 69703 2.07
Drove Alone 2313931 68.81
On Demand 11845 0.35
Other 24512 0.73
Transit 5621 0.17
Walk 270166 8.03
mode_share %>%
  ggplot(aes(x=time_bins, y=mode_share, color=mode)) +
  geom_line(linewidth=1.5) +
  scale_color_rpg("rpg_cold_warm") +
  scale_x_time(breaks = time_breaks) +
  labs(
    title = "Mode Share Across the day",
    # caption = "5 Minute Bin Width",
    x = "Time of Day",
    y = "Share",
    fill = "Mode"
  )

While the mode share is relatively consistent across the day there are few shifts worth mentioning. There is some volatility between midnight and 6 am, this is likely do to the low number of trips, see the histograms above for counts, and not indicative of any significant behavioral pattern. During peak commuting hours carpooling, walking, and biking all have significant spikes in mode share indicating that multimedia commuting is a popular options during peak hours