Introduction

In recent years, bike share system is fast becoming a modern way of travelling in cities across the globe. Specifically, bike share systems are fun and cheap alternative means of transportation, designed to help customers to make quick trips with convenience in mind. In Washington DC, Capital Bikeshare system service the metro area with about 5,000 bikes and 600 stations in seven of its jurisdictions namely, Arlington Prince George County, Fairfax County, city of fall church, Montgomery, and Alexandria. In his presentation to the board of directors, the marketing director of Capital bikeshare system believes that a futuristic growth of the company is dependent on improving the number of annual memberships and predicting demand for Bike share system. Currently, the company is focused on growing its market share by appealing to a broad segment of customers who wants to save time, money, have fun and exercise while using the bikeshare system. For example, the company offers a $1.00 single ride ticket, $8.00 24 hours pass, and a $7.92/monthly annual membership fee. These offers appeal to various kind of users including tourist and customers resident in the metro area of Washington DC. Furthermore, the marketing strategist also noted in his presentation that customers are more likely to use bikeshare ride for leisure than commute to work every day. Furthermore, he mentioned that subscribed annual members of the bike sharing system generate more money than casual riders. Therefore, it is important for the company to get more of its casual riders to subscribe annually.

Packages

library("ggplot2")
library("tidyr")
library("dplyr")
## 
## 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("readr")

Dataset

For this project, data was obtained from Capital bikeshare, which contain 2 years of data from 2011 to 2012. Specifically, the data set contains 731 observations and 16 total attributes (instant, dteday, season, yr, month, holiday, hr, weekday, workingday, weathersit, temp, atemp, hum, winspeed, casual, registered, cnt). Data was obtained from UCI repository data https://archive.ics.uci.edu/ml/datasets/bike+sharing+dataset. The data sets used for this analysis are publicly available and are described below:

# import data
my_bikeshare_data <- read.csv("C:/Users/mojnr/OneDrive/Documents/Bikesharing/day.csv")
head(my_bikeshare_data)
##   instant     dteday season yr mnth holiday weekday workingday weathersit
## 1       1 2011-01-01      1  0    1       0       6          0          2
## 2       2 2011-01-02      1  0    1       0       0          0          2
## 3       3 2011-01-03      1  0    1       0       1          1          1
## 4       4 2011-01-04      1  0    1       0       2          1          1
## 5       5 2011-01-05      1  0    1       0       3          1          1
## 6       6 2011-01-06      1  0    1       0       4          1          1
##       temp    atemp      hum windspeed casual registered  cnt
## 1 0.344167 0.363625 0.805833 0.1604460    331        654  985
## 2 0.363478 0.353739 0.696087 0.2485390    131        670  801
## 3 0.196364 0.189405 0.437273 0.2483090    120       1229 1349
## 4 0.200000 0.212122 0.590435 0.1602960    108       1454 1562
## 5 0.226957 0.229270 0.436957 0.1869000     82       1518 1600
## 6 0.204348 0.233209 0.518261 0.0895652     88       1518 1606

Data Cleaning

This section focuses on renaming some of the data columns and changing the values of some of the variables to be more specific. Also, the data types were converted to ensure a variable is correctly processed by a function.

  • Rename bikeshare data columns
# Rename bikeshare data columns 
names(my_bikeshare_data)<-c('id','Date','Season','Year','Month','Holiday','Weekday','Workday','Weather_Cond','Temperature','aTemp','Humidity','Windspeed','Casual_Riders','Registered_Riders','Total_Counts')
head(my_bikeshare_data)
##   id       Date Season Year Month Holiday Weekday Workday Weather_Cond
## 1  1 2011-01-01      1    0     1       0       6       0            2
## 2  2 2011-01-02      1    0     1       0       0       0            2
## 3  3 2011-01-03      1    0     1       0       1       1            1
## 4  4 2011-01-04      1    0     1       0       2       1            1
## 5  5 2011-01-05      1    0     1       0       3       1            1
## 6  6 2011-01-06      1    0     1       0       4       1            1
##   Temperature    aTemp Humidity Windspeed Casual_Riders Registered_Riders
## 1    0.344167 0.363625 0.805833 0.1604460           331               654
## 2    0.363478 0.353739 0.696087 0.2485390           131               670
## 3    0.196364 0.189405 0.437273 0.2483090           120              1229
## 4    0.200000 0.212122 0.590435 0.1602960           108              1454
## 5    0.226957 0.229270 0.436957 0.1869000            82              1518
## 6    0.204348 0.233209 0.518261 0.0895652            88              1518
##   Total_Counts
## 1          985
## 2          801
## 3         1349
## 4         1562
## 5         1600
## 6         1606
  • Date type conversion and other viables to character and factor.
my_bikeshare_data$Date<- as.Date(my_bikeshare_data$Date)
my_bikeshare_data$Year<- as.character(my_bikeshare_data$Year)
my_bikeshare_data$Month<-as.factor(my_bikeshare_data$Month)
my_bikeshare_data$Season <-as.factor(my_bikeshare_data$Season)
my_bikeshare_data$Holiday<- as.factor(my_bikeshare_data$Holiday)
my_bikeshare_data$Weekday<- as.character(my_bikeshare_data$Weekday)
my_bikeshare_data$Workday<- as.factor(my_bikeshare_data$Workday)
class(my_bikeshare_data$casual_Riders)
## [1] "NULL"
  • Replacing Year Value: The year value columns have 0 and 1 which represents 2011 and 2012 respectively. For this project, 0 will be changed to 2011, while 1 will be changed to 2012 as shown below,
my_bikeshare_data$Year[my_bikeshare_data$Year== "0"] <- "2011"
my_bikeshare_data$Year[my_bikeshare_data$Year== "1"] <- "2012"
head(my_bikeshare_data)
##   id       Date Season Year Month Holiday Weekday Workday Weather_Cond
## 1  1 2011-01-01      1 2011     1       0       6       0            2
## 2  2 2011-01-02      1 2011     1       0       0       0            2
## 3  3 2011-01-03      1 2011     1       0       1       1            1
## 4  4 2011-01-04      1 2011     1       0       2       1            1
## 5  5 2011-01-05      1 2011     1       0       3       1            1
## 6  6 2011-01-06      1 2011     1       0       4       1            1
##   Temperature    aTemp Humidity Windspeed Casual_Riders Registered_Riders
## 1    0.344167 0.363625 0.805833 0.1604460           331               654
## 2    0.363478 0.353739 0.696087 0.2485390           131               670
## 3    0.196364 0.189405 0.437273 0.2483090           120              1229
## 4    0.200000 0.212122 0.590435 0.1602960           108              1454
## 5    0.226957 0.229270 0.436957 0.1869000            82              1518
## 6    0.204348 0.233209 0.518261 0.0895652            88              1518
##   Total_Counts
## 1          985
## 2          801
## 3         1349
## 4         1562
## 5         1600
## 6         1606
  • Replacing the week values:
my_bikeshare_data$Weekday<-factor(my_bikeshare_data$Weekday
                    ,levels = c(0,1,2,3,4,5,6)
                    ,labels = c("Sun","Mon","Tue","Wed","Thur","Fri","Sat"))
head(my_bikeshare_data)
##   id       Date Season Year Month Holiday Weekday Workday Weather_Cond
## 1  1 2011-01-01      1 2011     1       0     Sat       0            2
## 2  2 2011-01-02      1 2011     1       0     Sun       0            2
## 3  3 2011-01-03      1 2011     1       0     Mon       1            1
## 4  4 2011-01-04      1 2011     1       0     Tue       1            1
## 5  5 2011-01-05      1 2011     1       0     Wed       1            1
## 6  6 2011-01-06      1 2011     1       0    Thur       1            1
##   Temperature    aTemp Humidity Windspeed Casual_Riders Registered_Riders
## 1    0.344167 0.363625 0.805833 0.1604460           331               654
## 2    0.363478 0.353739 0.696087 0.2485390           131               670
## 3    0.196364 0.189405 0.437273 0.2483090           120              1229
## 4    0.200000 0.212122 0.590435 0.1602960           108              1454
## 5    0.226957 0.229270 0.436957 0.1869000            82              1518
## 6    0.204348 0.233209 0.518261 0.0895652            88              1518
##   Total_Counts
## 1          985
## 2          801
## 3         1349
## 4         1562
## 5         1600
## 6         1606

Replacing Holiday Values:

my_bikeshare_data$Holiday<- factor(my_bikeshare_data$Holiday
                     ,levels = c(0,1)
                     ,labels = c("notholiday", "holiday"))
head(my_bikeshare_data)
##   id       Date Season Year Month    Holiday Weekday Workday Weather_Cond
## 1  1 2011-01-01      1 2011     1 notholiday     Sat       0            2
## 2  2 2011-01-02      1 2011     1 notholiday     Sun       0            2
## 3  3 2011-01-03      1 2011     1 notholiday     Mon       1            1
## 4  4 2011-01-04      1 2011     1 notholiday     Tue       1            1
## 5  5 2011-01-05      1 2011     1 notholiday     Wed       1            1
## 6  6 2011-01-06      1 2011     1 notholiday    Thur       1            1
##   Temperature    aTemp Humidity Windspeed Casual_Riders Registered_Riders
## 1    0.344167 0.363625 0.805833 0.1604460           331               654
## 2    0.363478 0.353739 0.696087 0.2485390           131               670
## 3    0.196364 0.189405 0.437273 0.2483090           120              1229
## 4    0.200000 0.212122 0.590435 0.1602960           108              1454
## 5    0.226957 0.229270 0.436957 0.1869000            82              1518
## 6    0.204348 0.233209 0.518261 0.0895652            88              1518
##   Total_Counts
## 1          985
## 2          801
## 3         1349
## 4         1562
## 5         1600
## 6         1606
my_bikeshare_data$Season<- factor(my_bikeshare_data$Season
                    ,levels = c(1,2,3,4)
                    ,labels = c("spring", "summer", "fall", "winter")
)
head(my_bikeshare_data)
##   id       Date Season Year Month    Holiday Weekday Workday Weather_Cond
## 1  1 2011-01-01 spring 2011     1 notholiday     Sat       0            2
## 2  2 2011-01-02 spring 2011     1 notholiday     Sun       0            2
## 3  3 2011-01-03 spring 2011     1 notholiday     Mon       1            1
## 4  4 2011-01-04 spring 2011     1 notholiday     Tue       1            1
## 5  5 2011-01-05 spring 2011     1 notholiday     Wed       1            1
## 6  6 2011-01-06 spring 2011     1 notholiday    Thur       1            1
##   Temperature    aTemp Humidity Windspeed Casual_Riders Registered_Riders
## 1    0.344167 0.363625 0.805833 0.1604460           331               654
## 2    0.363478 0.353739 0.696087 0.2485390           131               670
## 3    0.196364 0.189405 0.437273 0.2483090           120              1229
## 4    0.200000 0.212122 0.590435 0.1602960           108              1454
## 5    0.226957 0.229270 0.436957 0.1869000            82              1518
## 6    0.204348 0.233209 0.518261 0.0895652            88              1518
##   Total_Counts
## 1          985
## 2          801
## 3         1349
## 4         1562
## 5         1600
## 6         1606
my_bikeshare_data$Month<-factor(my_bikeshare_data$Month
                    ,levels = c(1,2,3,4,5,6,7,8,9,10,11,12)
                    ,labels = c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
)
head(my_bikeshare_data)
##   id       Date Season Year Month    Holiday Weekday Workday Weather_Cond
## 1  1 2011-01-01 spring 2011   Jan notholiday     Sat       0            2
## 2  2 2011-01-02 spring 2011   Jan notholiday     Sun       0            2
## 3  3 2011-01-03 spring 2011   Jan notholiday     Mon       1            1
## 4  4 2011-01-04 spring 2011   Jan notholiday     Tue       1            1
## 5  5 2011-01-05 spring 2011   Jan notholiday     Wed       1            1
## 6  6 2011-01-06 spring 2011   Jan notholiday    Thur       1            1
##   Temperature    aTemp Humidity Windspeed Casual_Riders Registered_Riders
## 1    0.344167 0.363625 0.805833 0.1604460           331               654
## 2    0.363478 0.353739 0.696087 0.2485390           131               670
## 3    0.196364 0.189405 0.437273 0.2483090           120              1229
## 4    0.200000 0.212122 0.590435 0.1602960           108              1454
## 5    0.226957 0.229270 0.436957 0.1869000            82              1518
## 6    0.204348 0.233209 0.518261 0.0895652            88              1518
##   Total_Counts
## 1          985
## 2          801
## 3         1349
## 4         1562
## 5         1600
## 6         1606

Exploratory Analysis:

table(is.na(my_bikeshare_data))
## 
## FALSE 
## 11696
#Standardise Temp, aTemp, Humidity, and Winspeed values which were normalized in the dataset.
my_bikeshare_data$Temperature<- my_bikeshare_data$Temperature*41 
my_bikeshare_data$aTemp<- my_bikeshare_data$aTemp*50
my_bikeshare_data$Humidity<- my_bikeshare_data$Humidity*100
my_bikeshare_data$Windspeed<-my_bikeshare_data$Windspeed*67

head(my_bikeshare_data)
##   id       Date Season Year Month    Holiday Weekday Workday Weather_Cond
## 1  1 2011-01-01 spring 2011   Jan notholiday     Sat       0            2
## 2  2 2011-01-02 spring 2011   Jan notholiday     Sun       0            2
## 3  3 2011-01-03 spring 2011   Jan notholiday     Mon       1            1
## 4  4 2011-01-04 spring 2011   Jan notholiday     Tue       1            1
## 5  5 2011-01-05 spring 2011   Jan notholiday     Wed       1            1
## 6  6 2011-01-06 spring 2011   Jan notholiday    Thur       1            1
##   Temperature    aTemp Humidity Windspeed Casual_Riders Registered_Riders
## 1   14.110847 18.18125  80.5833 10.749882           331               654
## 2   14.902598 17.68695  69.6087 16.652113           131               670
## 3    8.050924  9.47025  43.7273 16.636703           120              1229
## 4    8.200000 10.60610  59.0435 10.739832           108              1454
## 5    9.305237 11.46350  43.6957 12.522300            82              1518
## 6    8.378268 11.66045  51.8261  6.000868            88              1518
##   Total_Counts
## 1          985
## 2          801
## 3         1349
## 4         1562
## 5         1600
## 6         1606
#Correlation between Bike share total counts vs Temperature,aTemp, Humidity,and Windspeed.
par(mfrow=c(2,2))
# Temperature:
plot(my_bikeshare_data$Total_Counts~my_bikeshare_data$Temperature ,type = 'p', col= 'Red', xlab = 'Temperature', ylab = 'Total Count')
abline(lm(my_bikeshare_data$Total_Counts~my_bikeshare_data$Temperature))

# aTemp: 
plot(my_bikeshare_data$Total_Counts~my_bikeshare_data$aTemp ,type = 'p', col= 'black', xlab = 'Feels Like Temp', ylab = 'Total Count')
abline(lm(my_bikeshare_data$Total_Counts~my_bikeshare_data$aTemp)) 
# Windspeed
plot(my_bikeshare_data$Total_Counts~my_bikeshare_data$Windspeed ,type = 'p', col= 'green', xlab = 'Windspeed', ylab = 'Total Count')
abline(lm(my_bikeshare_data$Total_Counts~my_bikeshare_data$Windspeed)) 
# Humidity
plot(my_bikeshare_data$Total_Counts~my_bikeshare_data$Humidity ,type = 'p', col= 'yellow', xlab = 'Humidity', ylab = 'Total Count')
abline(lm(my_bikeshare_data$Total_Counts~my_bikeshare_data$Humidity))

Correlation between temperature and Total counts: To confirm whether there is a correlation between temperature and total counts, analysis was done as shown below

cor(my_bikeshare_data[,c('Temperature','Total_Counts')])
##              Temperature Total_Counts
## Temperature     1.000000     0.627494
## Total_Counts    0.627494     1.000000

Figure 1.1 above shows a positive correlation between temperature and total counts. Meaning, the higher the temperature, the more likely users are likely to rent bikes.

Data Visualization:

ggplot(my_bikeshare_data, aes(x = Season, y = Total_Counts, fill = Season))+ geom_bar(stat = "identity")+ labs(title = "Bike count vs Season", x = "Season", y = "Count of bikes") + theme(legend.position = "right")

* Figure 1.2: The above plot shows bikeshare rentals in various seasons of the year. The results shows Fall with the highest count of rentals, followed by summer and winter months. Also, the result shows winter as the least count rentals for bikeshare seasonal wise.

ggplot(my_bikeshare_data, aes(x=Weather_Cond, y=Total_Counts, fill=Weather_Cond)) + geom_bar(stat="identity")+labs(title = "Bike count vs Weather Condition", x = "Weather", y = "Bike_Count") + theme(legend.position = "right")

Figure 1.3: The above plot shows bike counts in various weather condition. Weather is represent in numerical values

Clearly, Figure 1.3 above suggest that more people tend to use bikeshare in good weather condition than a bad weather condition.

Count vs date with Temperature

my_bikeshare_data$Date <- as.POSIXct(my_bikeshare_data$Date)
pl <- ggplot(my_bikeshare_data,aes(Date,Total_Counts)) + geom_point(aes(color=Temperature),alpha=0.5)
pl + scale_color_continuous(low = '#55D8CE',high = '#FF6E2E') + theme_bw()

Figure 1.4: The above scatter plot shows the seasonality trends of bike rentals, which confirms results as shown in figure 1.2. The result shows a decrease in bike rentals in the months of December, January, and February. However, there is an increase in bike rentals in the summer months. Also, it is important to note that the scatter plot results suggest an increasing number of bike rentals in 2013 compared to 2011 based on available data.

Relationship between Bike count (casual vs registered) vs working/Non-working day

ggplot(my_bikeshare_data, aes(x = Casual_Riders, y = Registered_Riders, color = Workday))+
  geom_point()+
  labs(title = "Relation Between Bike counts(casual& registeres) vs Work, No work")+
   scale_color_manual(values=c("blue", "red")) +
  xlab("Casual Riders Count") +
  ylab("Registered Riders Count")

Figure 1.5: Above result shows relationship of bike rental counts with casual vs registered during work (1) and no working (0) day. Specifically, the plot shows how registered users rent bikes on for working days during days of the week. However, casual riders are more likely to rent bikes during non working days. Therefore, suggesting that registered users are workers who are more likely to use bikes on regular weekdays to work. In contrast,casual riders are more likely to be tourist users renting bikes during the weekends.

Daily Counts

par(mfrow=c(1,1))
boxplot(my_bikeshare_data$Total_Counts~my_bikeshare_data$Weekday,xlab="days", ylab="count of users", col = "Red",
        main = "Daily Bike Users")

Figure 1.6 The above results shows some interesting facts as shown below

Model Building:

Model 1: Temperature vs.Total Count

For this analysis, a linear progression model was built to predict the total count of bike sharing based on Temperature Variable.

model_temp1 <- lm(Total_Counts ~ Temperature, my_bikeshare_data)
print(summary(model_temp1))
## 
## Call:
## lm(formula = Total_Counts ~ Temperature, data = my_bikeshare_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4615.3 -1134.9  -104.4  1044.3  3737.8 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1214.642    161.164   7.537 1.43e-13 ***
## Temperature  161.969      7.444  21.759  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1509 on 729 degrees of freedom
## Multiple R-squared:  0.3937, Adjusted R-squared:  0.3929 
## F-statistic: 473.5 on 1 and 729 DF,  p-value: < 2.2e-16

Figure 1.7: Above shows intercept at 1214.6, meaning the model predicts aproximately 1214 rental when the temperature is at 0.**. The above result also show a temperature variable estimate of 161 counts. Meaning, when temperature increase by 1 degree celcius, one can predict that total count of rentals is about 161 rentals. Therefore, if temperature is raised by 30 degree at a certain day of the week, total rentals of bikes would be estimated at about 6,044 bikes.

1214 + 161 * 30
## [1] 6044

Figure 1.8: Above results predicts that when temperature is at 30’C, about 6044 bikes will be rented on that day.

Model 2: Temperature Vs. Windspeed

model_temp2 <- lm(Total_Counts ~ Windspeed, my_bikeshare_data)
print(summary(model_temp2))
## 
## Call:
## lm(formula = Total_Counts ~ Windspeed, data = my_bikeshare_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4522.7 -1374.7   -74.6  1461.8  4544.0 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5621.15     185.06  30.374  < 2e-16 ***
## Windspeed     -87.51      13.43  -6.514 1.36e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1884 on 729 degrees of freedom
## Multiple R-squared:  0.05501,    Adjusted R-squared:  0.05372 
## F-statistic: 42.44 on 1 and 729 DF,  p-value: 1.36e-10

Based on Model 2 results shown in figure Figure 1.9 above, wind speed is not a good predictor of bike rentals. Also, it is important to note that Humidity cannot also be used as a good predictor of bikeshare rental counts.

Therefore, Temperatures is the best model to predict Bikeshare rentals based on the model used for this Analysis.

Report Summary

In summary,this project is focused on exploring and predicting seasonal trends in bikeshare demands in Washington DC using linear regression model. Specifically, available data from Capital bikeshare was obtained from UCI repository was used to explore bike share system in Washington DC. Specifically, the day.csv was imported into the R studio and converted into my_bikeshare_data. Moreover, my_bikeshare_data contains 731 observations with about 16 total attributes.

Methods used for this analysis involved using packages such as ggplot2, tidyr,readr and dplyr to clean and visualize the bikeshare data. Specifically, data cleaning process involved renaming columns and changing values of some variables. For example, some of the variables renamed include dteday, yr,mnth, temp, hum, and cnt to Date, Year, Temperature, Humidity, and Total_Counts respectively. This changes were made for the purpose of clarity in the final analysis.

After cleaning the data, an exploratory analysis was first performed to gain insight into the analysis. Specifically, analysis was done to evaluate the relationship between Total count of bike demands vs Temperature, aTemp, Humidity and Windspeed. Result from this analysis shows that temperature and aTemp are directly proportional to Total Counts of bike share demand as shown in figure 1.0. Meaning, an increase in temperature would lead to increased user demand in Washington DC, thereby, making weather a strong determining factor for demands. In contrast, Humidity and windspeed are indirectly proportional to total counts. Meaning, the an increase in humidity and windspeed would lead to less demand in bike share in Washington DC as shown in figure 1.0.

Another exploratory analysis was performed on seasonal demand on bike share system in DC. As shown in figure 1.2 above, result shows Fall season has the highest demand, followed by Summer and winter season. However, fall seasons has the least demand for bike share demands in Washington DC.

Furthermore, this analysis also touched on how weather situations can affect demands of bikeshare rentals. For example, figure 1.3 shows that a higher demand when the weather is good, while demand falls when weather conditions is poor. Meaning, weather conditions are a strong factor that determines demands for bike share system in DC.

Analysis was also performed on the relationship between bike counts (casual and registered) vs working days vs non - working days. Based on results from this analysis as shown in figure 1.5, registered users rent bikes on for working days during days of the week. However, casual riders are more likely to rent bikes during non working days. Therefore, suggesting that registered users are workers who are more likely to use bikes on regular weekdays to work. In contrast,casual riders are more likely to be tourist users renting bikes during the weekends.

Finally, in the exploratory analysis of of daily demands of bike share system, a box plot was used to visualize daily trends. For example as shown in figure 1.6, result shows that there is a 75% chance that that total amount of demand everyday is estimated at about 2000-4000 rentals. Another interesting part about the box plot is that Saturday has the highest demand compared to other days of the week. Lastly, the box plots also revealed the average rental everyday is about 4000 bikes daily wise.

After exploring the data, this project also focused on building a model that can predict demand count based on temperature in celsius. Specifically, this analysis was performed by using a linear regression as shown in figure 1.7 to predict the total count of demand based on temperature variable. Moreover, results shows that at 30 degree celsius, there are about 6044 demands for bike share rental in Washington DC.

Implication of the Analysis

Based on insight obtained from this result, there are host of implications to major stakeholder. First, it is important to note that Fall and summer Seasons have high demands and it is important to ensure all docking stations have bikes readily available and bike maintenance should be topmost priority for these these seasons.

Moreover, it is important to note that an ideal day for high demand for rentals is a warm work day in the fall/summer with slow wind and low humidity. Therefore, bike rentals is dependent on weather conditions and season. Also, this analysis can help stakeholders predict bike count rentals using temperature based on the linear regression model built for the purpose of this analysis.

Limitation of this Analysis