From a84e19f664c6a3e98ecffbfbeb49bb29be888ed6 Mon Sep 17 00:00:00 2001 From: NaomiBeck <161232890+NaomiBeck@users.noreply.github.com> Date: Wed, 28 May 2025 14:06:41 -0400 Subject: [PATCH 1/9] Update citibike.sh --- week1/citibike.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/week1/citibike.sh b/week1/citibike.sh index 25604f545..f09330e1b 100755 --- a/week1/citibike.sh +++ b/week1/citibike.sh @@ -4,14 +4,21 @@ # # count the number of unique stations +cat 201402-citibike-tripdata.csv | cut -d, -f5 | sort | uniq | wc -l # count the number of unique bikes +cat 201402-citibike-tripdata.csv | cut -d, -f5 | sort | uniq | wc -l # count the number of trips per day + cat 201402-citibike-tripdata.csv |cut -d, -f2 | grep -o '.* ' | sort | uniq -c # find the day with the most rides +cat 201402-citibike-tripdata.csv |cut -d, -f2 | grep -o '^.* ' | sort | uniq -c | sort -nr | head -n1 | cut -d' +' -f4 # find the day with the fewest rides +cat 201402-citibike-tripdata.csv |cut -d, -f2 | grep -o '^.* ' | sort | uniq -c | sort -bn | head -n1 | awk '{print $2} + # find the id of the bike with the most rides From d9cc8c78e598e0e14b229c7b2d0e7444b3b1a27a Mon Sep 17 00:00:00 2001 From: naomi Date: Wed, 28 May 2025 14:41:41 -0400 Subject: [PATCH 2/9] done with assignment2 --- week1/__MACOSX/2014-citibike-tripdata/._.DS_Store | Bin 0 -> 120 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 week1/__MACOSX/2014-citibike-tripdata/._.DS_Store diff --git a/week1/__MACOSX/2014-citibike-tripdata/._.DS_Store b/week1/__MACOSX/2014-citibike-tripdata/._.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a5b28df1cbc6e15bd0d35cdadd0c2e65d5131c7d GIT binary patch literal 120 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}u^SMB_!U6R08`;00ODZ-jv*mIP;rnB Iur73U08|YJ=l}o! literal 0 HcmV?d00001 From a602a44fcb00bf484ad1fdcd8a83ce023f29ec2b Mon Sep 17 00:00:00 2001 From: naomi Date: Wed, 28 May 2025 14:44:54 -0400 Subject: [PATCH 3/9] assignemnt2 --- week1/citibike.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/week1/citibike.sh b/week1/citibike.sh index f09330e1b..5c6c16e98 100755 --- a/week1/citibike.sh +++ b/week1/citibike.sh @@ -21,10 +21,13 @@ cat 201402-citibike-tripdata.csv |cut -d, -f2 | grep -o '^.* ' | sort | uniq -c # find the id of the bike with the most rides +cat 201402-citibike-tripdata.csv |cut -d, -f12 | sort | uniq -c | sort -r | head -n1 | awk '{print $2}' # count the number of rides by gender and birth year +cat 201402-citibike-tripdata.csv | cut -d, -f 14,15 | sort | uniq | wc -l # count the number of trips that start on cross streets that both contain numbers (e.g., "1 Ave & E 15 St", "E 39 St & 2 Ave", ...) - +cat 201402-citibike-tripdata.csv | cut -d, -f5 | grep '.*[0-9]+*.*&.*[0-9]+*' | wc -l # compute the average trip duration +cat 201402-citibike-tripdata.csv | cut -d, -f1 | awk -F, '{sum += $1; count +=1} END {print sum/ count}' From 99c2707fe5c876a31e6c2f2edc09e07dea37ec58 Mon Sep 17 00:00:00 2001 From: naomi Date: Wed, 28 May 2025 14:49:15 -0400 Subject: [PATCH 4/9] clean up --- week1/citibike.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/week1/citibike.sh b/week1/citibike.sh index 5c6c16e98..ffc08797f 100755 --- a/week1/citibike.sh +++ b/week1/citibike.sh @@ -13,13 +13,11 @@ cat 201402-citibike-tripdata.csv | cut -d, -f5 | sort | uniq | wc -l cat 201402-citibike-tripdata.csv |cut -d, -f2 | grep -o '.* ' | sort | uniq -c # find the day with the most rides -cat 201402-citibike-tripdata.csv |cut -d, -f2 | grep -o '^.* ' | sort | uniq -c | sort -nr | head -n1 | cut -d' -' -f4 +cat 201402-citibike-tripdata.csv |cut -d, -f2 | grep -o '^.* ' | sort | uniq -c | sort -nr | head -n1 | cut -d' ' -f4 # find the day with the fewest rides cat 201402-citibike-tripdata.csv |cut -d, -f2 | grep -o '^.* ' | sort | uniq -c | sort -bn | head -n1 | awk '{print $2} - # find the id of the bike with the most rides cat 201402-citibike-tripdata.csv |cut -d, -f12 | sort | uniq -c | sort -r | head -n1 | awk '{print $2}' From 9136b892f05bddc13cc2e68ca1a79c4e3bdc218d Mon Sep 17 00:00:00 2001 From: naomi Date: Thu, 29 May 2025 16:54:30 -0400 Subject: [PATCH 5/9] assignment3 --- week1/citibike.R | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/week1/citibike.R b/week1/citibike.R index ad01de1d3..d33f51ccb 100644 --- a/week1/citibike.R +++ b/week1/citibike.R @@ -23,26 +23,55 @@ trips <- mutate(trips, gender = factor(gender, levels=c(0,1,2), labels = c("Unkn ######################################## # count the number of trips (= rows in the data frame) +summarize(trips, count=n()) # find the earliest and latest birth years (see help for max and min to deal with NAs) +trips <- read_csv('201402-citibike-tripdata.csv', na = c("", "\\N")) # clean up \N to NAs +# can also typecast it to numeric where it will coerce the NAs + +summarize(trips, min_year = min(birth_year, na.rm = TRUE), max_year = max(birth_year, na.rm = TRUE)) + # use filter and grepl to find all trips that either start or end on broadway +select(trips, start_station_name, end_station_name) |> + filter(grepl('.*Broadway.*', start_station_name) | + grepl('.*Broadway.*', end_station_name)) # do the same, but find all trips that both start and end on broadway +select(trips, start_station_name, end_station_name) |> + filter(grepl('.*Broadway.*', start_station_name) & + grepl('.*Broadway.*', end_station_name)) # find all unique station names +trips |> distinct(start_station_name) +# old school way +unique(trips$start_station_name) # count the number of trips by gender, the average trip time by gender, and the standard deviation in trip time by gender # do this all at once, by using summarize() with multiple arguments +trips |> group_by(gender) |> + summarize( count = n(), average_duration = mean(tripduration) /60, + sd_duration = sd(tripduration)/60) # find the 10 most frequent station-to-station trips +trips %>% count(start_station_name, end_station_name, sort = TRUE) |> head(10) + |> select(start_station_name, end_station_name) # find the top 3 end stations for trips starting from each start station +trips |> group_by(start_station_name) |> count(end_station_name, sort = TRUE) |> slice_max(n, n = 3) + # find the top 3 most common station-to-station trips by gender +trips |> group_by(gender) |> count(end_station_name, sort = TRUE) |> slice_max(n, n = 3) # find the day with the most trips # tip: first add a column for year/month/day without time of day (use as.Date or floor_date from the lubridate package) +trips |> mutate(date = as.Date(starttime)) |> count(date, sort =TRUE) |> head(1) |> select(date) # compute the average number of trips taken during each of the 24 hours of the day across the entire month # what time(s) of day tend to be peak hour(s)? +date_hour_counts <- trips |> mutate(hour = hour(starttime), date = as.Date(starttime)) |> group_by(date, hour) |> count(date, hour) +avg_rides_per_hour <- date_hour_counts |> group_by(hour) |> summarize(avg = mean(n)) #--> avgerage rides per hour + +# peak hour --> 17th hour +avg_rides_per_hour |> arrange(avg) |> tail(1) From 756c9766ac4792f2c089619b20946329fe2e796d Mon Sep 17 00:00:00 2001 From: naomi Date: Fri, 30 May 2025 16:45:00 -0400 Subject: [PATCH 6/9] assignment4 --- week1/plot_trips.R | 112 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/week1/plot_trips.R b/week1/plot_trips.R index 4f25437ba..bb2ace59b 100644 --- a/week1/plot_trips.R +++ b/week1/plot_trips.R @@ -5,6 +5,7 @@ # load some packages that we'll need library(tidyverse) library(scales) +library(ggplot2) # be picky about white backgrounds on our plots theme_set(theme_bw()) @@ -18,25 +19,86 @@ load('trips.RData') ######################################## # plot the distribution of trip times across all rides (compare a histogram vs. a density plot) +ggplot(trips, aes(x = tripduration)) + + geom_histogram() + + scale_x_log10(label = comma) + + xlab('Trip Duration') + + ylab('Frequency') + + +ggplot(trips, aes(x = tripduration)) + + geom_density(fill="grey") + + scale_x_log10(label = comma) + + xlab('Trip Duration') + + ylab('Frequency') # plot the distribution of trip times by rider type indicated using color and fill (compare a histogram vs. a density plot) +ggplot(trips) + + geom_histogram(aes(x = tripduration, color = usertype, fill=usertype)) + + scale_x_log10(label = comma) + + xlab('Trip Duration') + + ylab('Frequency') + +ggplot(trips) + + geom_density(aes(x = tripduration, color = usertype, fill=usertype)) + + scale_x_log10(label = comma) + + xlab('Trip Duration') + + ylab('Frequency') + # plot the total number of trips on each day in the dataset +trips |> mutate(Date = as.Date(starttime)) |> + ggplot() + + geom_histogram(aes(x = Date)) + # plot the total number of trips (on the y axis) by age (on the x axis) and gender (indicated with color) +trips |> mutate(age = 2025-birth_year) |> + ggplot() + + geom_histogram(aes(x = age, color = gender, fill=gender)) + + scale_x_log10(label = comma) # plot the ratio of male to female trips (on the y axis) by age (on the x axis) # hint: use the pivot_wider() function to reshape things to make it easier to compute this ratio # (you can skip this and come back to it tomorrow if we haven't covered pivot_wider() yet) +# Example: Summarize, reshape, and plot ratio by age + +# Thank you octopilot +trips |> + mutate(age = 2025 - birth_year) |> + group_by(age, gender) |> + summarize(n = n(), .groups = "drop") |> + tidyr::pivot_wider(names_from = gender, values_from = n, values_fill = 0) |> + mutate(ratio = Male / Female) |> + ggplot(aes(x = age, y = ratio)) + + geom_line() + + labs(x = "Age", y = "Male to Female Trip Ratio") + ######################################## # plot weather data ######################################## # plot the minimum temperature (on the y axis) over each day (on the x axis) +ggplot(weather, aes(x = date, y = tmin)) + + geom_point() + + xlab('Day') + + ylab('Minimum Temperature') # plot the minimum temperature and maximum temperature (on the y axis, with different colors) over each day (on the x axis) # hint: try using the pivot_longer() function for this to reshape things before plotting # (you can skip this and come back to it tomorrow if we haven't covered reshaping data yet) +# Reshape with pivot_longer +weather_long <- weather %>% + pivot_longer( + cols = c(tmin, tmax), + names_to = "temp_type", + values_to = "temperature" + ) + + View(weather_long ) + + ggplot(weather_long, aes(x = date, y = temperature, color = temp_type)) + + geom_point() ######################################## # plot trip and weather data @@ -47,16 +109,66 @@ trips_with_weather <- inner_join(trips, weather, by="ymd") # plot the number of trips as a function of the minimum temperature, where each point represents a day # you'll need to summarize the trips and join to the weather data to do this +num_trips <- trips |> mutate(ymd = as.Date(starttime)) |> group_by(ymd) |> summarize(count=n()) +num_trips_weather<- inner_join(num_trips, weather, by="ymd") + +ggplot(num_trips_weather, aes(x=tmin, y=count)) + + geom_point() + + xlab('Minimum Temperature') + + ylab('Number of Trips') + # repeat this, splitting results by whether there was substantial precipitation or not # you'll need to decide what constitutes "substantial precipitation" and create a new T/F column to indicate this +mutate(num_trips_weather, significant_prcp=ifelse(prcp >= .05, T,F)) |> +ggplot(aes(x=tmin, y=count)) + + geom_point() + + facet_wrap(~ significant_prcp) + + xlab('Minimum Temperature') + + ylab('Number of Trips') # add a smoothed fit on top of the previous plot, using geom_smooth +mutate(num_trips_weather, significant_prcp=ifelse(prcp >= .05, T,F)) |> +ggplot(aes(x=tmin, y=count)) + + geom_point() + + facet_wrap(~ significant_prcp) + + geom_smooth() + + xlab('Minimum Temperature') + + ylab('Number of Trips') + # compute the average number of trips and standard deviation in number of trips by hour of the day # hint: use the hour() function from the lubridate package +date_hour_counts <- trips |> mutate(hour = hour(starttime), date = as.Date(starttime)) |> group_by(date, hour) |> count(date, hour) +count_mean_sd <- date_hour_counts |> group_by(hour) |> summarize(avg = mean(n), std=sd(n)) +count_mean_sd # plot the above +long_count_mean_sd <- count_mean_sd %>% + pivot_longer( + cols = c(avg, std), + names_to = "stat_type", + values_to = "stat" + ) + + ggplot(long_count_mean_sd, aes(x =hour, y = stat, color = stat_type)) + + geom_point() # repeat this, but now split the results by day of the week (Monday, Tuesday, ...) or weekday vs. weekend days # hint: use the wday() function from the lubridate package +date_hour_counts <- trips |> mutate(hour = hour(starttime), date = as.Date(starttime)) |> group_by(date, hour) |> count(date, hour) +DAY_date_hour_counts <- date_hour_counts |> mutate(day=wday(date)) +View(DAY_date_hour_counts) +DAY_count_mean_sd <- DAY_date_hour_counts |> group_by(day) |> summarize(avg = mean(n), std=sd(n)) +View(DAY_count_mean_sd) + +# plot the above +DAY_long_count_mean_sd <- DAY_count_mean_sd %>% + pivot_longer( + cols = c(avg, std), + names_to = "stat_type", + values_to = "stat" + ) + + ggplot(DAY_long_count_mean_sd, aes(x =day, y = stat, color = stat_type)) + + geom_point() From 64d9054887e1598b2451c4751c5c4b74a032e71e Mon Sep 17 00:00:00 2001 From: naomi Date: Mon, 16 Jun 2025 17:08:03 -0400 Subject: [PATCH 7/9] citi_bike_best_model --- week4/predict_citibike.RData | Bin 0 -> 60531 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 week4/predict_citibike.RData diff --git a/week4/predict_citibike.RData b/week4/predict_citibike.RData new file mode 100644 index 0000000000000000000000000000000000000000..eb7eef57682889fbbb2f08db38f62bd2d42423d0 GIT binary patch literal 60531 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�S(R;iJ4x8nc!}%m~Tr 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 literal 0 HcmV?d00001 From 009df710f3b867ab159f4df4718cc68bec2052a4 Mon Sep 17 00:00:00 2001 From: naomi Date: Tue, 17 Jun 2025 13:23:49 -0400 Subject: [PATCH 8/9] 2015 citibike testing --- week4/test_citibike_predictions.Rmd | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 week4/test_citibike_predictions.Rmd diff --git a/week4/test_citibike_predictions.Rmd b/week4/test_citibike_predictions.Rmd new file mode 100644 index 000000000..e69de29bb From f1ce2abb9ac405fb706e4052b4718d2f2806e4c9 Mon Sep 17 00:00:00 2001 From: naomi Date: Tue, 17 Jun 2025 14:05:18 -0400 Subject: [PATCH 9/9] 2015_citibike_final --- week4/test_citibike_predictions.Rmd | 68 +++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/week4/test_citibike_predictions.Rmd b/week4/test_citibike_predictions.Rmd index e69de29bb..169126054 100644 --- a/week4/test_citibike_predictions.Rmd +++ b/week4/test_citibike_predictions.Rmd @@ -0,0 +1,68 @@ +# loads in the new trips_per_day_2015.csv and weather_2015.csv files along with your saved model (from yesterday's .Rdata file), and predicts the number of trips for each day. If you used any other data for your model, make sure to include code that downloads and incorporates that data as well. + + +```{r setup, include=FALSE} +library(dplyr) +library(readr) +``` + +```{r load_data, include=FALSE} +setwd('./week4') +trips_per_day <- read_tsv('trips_per_day_2015.tsv') +head(trips_per_day) + +weather_2015 <- read_csv('./weather_2015.csv') +#weather$DATE <- ymd(weather$DATE) +View(head(weather_2015)) + +trips_per_day <- + inner_join(trips_per_day, weather_2015, by=c("ymd" = "DATE")) + +names(trips_per_day) <- tolower(names(trips_per_day)) +head(trips_per_day) +trips_per_day <- + trips_per_day %>% + + # devide tmax and tmin by 10 + mutate(tmax=tmax/10, tmin=tmin/10) %>% + + # mutate the data to add weekday and season + mutate( + weekday = wday(ymd, label = TRUE), + # Season based on month + season = case_when( + month(ymd) %in% 3:5 ~ "Spring", + month(ymd) %in% 6:8 ~ "Summer", + month(ymd) %in% 9:11 ~ "Fall", + month(ymd) %in% c(12, 1, 2) ~ "Winter" + )) + + +View(head(trips_per_day)) + +``` + + +```{r load_model} +my_model <- load("./predict_citibike.RData") +my_model <- get(my_model) +validate_test_prediction <- predict(my_model, trips_per_day) + +# Calculate RMSE +rmse <- sqrt(mean((validate_test_prediction - trips_per_day$num_trips)^2)) +summary(my_model) + +rmse +``` + +10 percent testing data from 2014: +rmse +[1] 3968.397 +r_squared +[1] 0.8235913 + + +2015 test data: +rmse: 8039.796 +r_squared: 0.8873 +