Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Motivation
Uber and Lyft who are the main ridesharing companies can make more money at a faster rate by filling their cars with passengers at a higher peak time when they are on the road. The typical Uber/Lyft driver normally have full-time jobs, full-time students, or in between jobs. Being an Uber/Lyft driver to make some extra cash on the side is ideal, however, you would want to optimize your time. With this being in mind and using the data that’s freely available to the public at sfcta.org, I created a Shiny app for rideshare drivers that suggests where they will most likely find passengers in an area for pick up to drop off quicker. The Shiny app is based on the area zone in the Bay area, time, and day of the week.
The Data
The San Francisco Transportation Authority released some data of Uber and Lyft usage within the city by the Bay area. The two rideshare companies combined logged more than 150,000 daily rides on typical Fridays in the fall of 2016 which only included pick-ups and drop-offs within the city limits. With the “TNCs” official report and data, I used pick-ups and drop-offs from the Fall of 2016 in which the data also provided the GPS coordinates and were also in the form of shape files. I also used data from the Transportation Authority for the block level summaries “taz” zones (traffic analysis zones) in which divided the city up into different area zones.
The App: Visualization and Suggestion
Once I cleaned and merged the data, I transformed the given shape files of the GPS coordinates into a heatmap using Leaflet maps, longitude and latitude points. I added filters so the user can manually select the days of the week and times for pick-ups or drop-offs. To give drivers a better idea for times ahead, I added a histogram on the sidebar to show the number of pick-ups and drop-offs overtime on the users filter criteria.
This Shiny app offers both basic exploratory data analysis and a tool to visualize Uber/Lyft pick-ups and drop-offs. Open the app in the hyperlink above and test out the scenarios below.
Above, you have the options for the day of the week and pick-ups or drop-offs with the leaflet heat map to the left. The “taz” information in the data set are the colored areas that you see in the heatmap. Once your criteria are selected, you will see the different taz areas change color showing the user how many pick-ups or drop-offs are being made in that specific area. This gives drivers a better understanding of what area of the city would be best to be in for picking up passengers on a given day at a given time.
You also have the time of day option to the right with an option play button which shows the transformation of the number of pick-ups and drop-offs throughout the selected day which appears in the leaflet heat map. The bottom right of the heat map has a legend designating the colors specific value. The bottom of the time slider, you may select the play button which shows the driver how the heatmap changes through the selected day. Therefore, the driver knows what area to be in later on in the day if need be. The histogram above the time slider also shows the user the peak times for that day for optimizing use.
This is an example for typical Monday evening pick-ups. Not too much activity, however, you have the peak times in the morning commute hours and more so in the evening commute hours.
Now, this is a Saturday evening and as you can see there is a lot more activity compared to the earlier example. By looking at the legend, you can see the values changed to a higher value. The histogram also shows the steady increase in pick-ups throughout the day and evening as supposed to Monday.
Suppose a full-time college student is working on the side as a driver for Uber/Lyft for some extra cash. Due to the intensity of his/her studies and the limited free time he/she wants to optimize their time on the road. With limited time or only being able to work a couple of days a week, they would want to be on the road working at the best possible times and day of the week to earn as much as they can. Makes sense right? Using this app that type of user can calculate the best day, time and area to be available to optimize their earnings. As you can see below, the user who decides they want to work on a Saturday night can select that day, choose pick-up, then use the slider bar to watch what areas on the map appear the most red. Therefore, the “college student” can plan accordingly for their work time.
Future Work
This investigation didn’t take into account the Uber/Lyft waiting time for particular pick-ups. With drivers being able to identify times and locations for better optimizing their time, this could cause some problems for passengers having to wait an unreasonable amount of time. Therefore, a lot more work to be done to investigate other choices of transportation such as community bike or scooters. San Fransisco only had data available for the fall season where having data year- round would give users a better understanding of how different seasons affect the passengers. Considering events occurring in the city that demand drive rideshare would be ideal. Then, I believe it would be good to implement predictive analytics and suggestions for drivers, such as route and time optimization using machine learning.
The Code
All of the code and data used for this Shiny app can be found on my GitHub page here.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.