# Libraries used 

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.1     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(lubridate)
library(stringr)
library(jsonlite)
## 
## Attaching package: 'jsonlite'
## 
## The following object is masked from 'package:purrr':
## 
##     flatten
library(sf)
## Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
library(httr)

Question 1 and 2

#Importing data 
Speed_Camera <- read.csv("Speed_Camera_Violations.csv")
# Convert the "VIOLATION.DATE" column to a date format:
Speed_Camera$VIOLATION.DATE <- as.Date(Speed_Camera$VIOLATION.DATE, format = "%m/%d/%Y")
#creating a year column from the date
Speed_Camera$year <- year(Speed_Camera$VIOLATION.DATE)
# Create a year and month column from the date
Speed_Camera$month <- month(Speed_Camera$VIOLATION.DATE)
#Filter the data to include only the years 2018 to 2021:
filtered_data <- Speed_Camera %>%
  filter(year(VIOLATION.DATE) >= 2018 & year(VIOLATION.DATE) <= 2021)
#Count the total number of speed camera violations for each year
violation_counts <- filtered_data %>%
  group_by(year = year(VIOLATION.DATE)) %>%
  summarise(total_violations = n())
#calling the counts
violation_counts
## # A tibble: 4 × 2
##    year total_violations
##   <dbl>            <int>
## 1  2018            39234
## 2  2019            40563
## 3  2020            29603
## 4  2021            39601

Question 3 and 4

# Calculate the monthly volume of speed camera violations
monthly_violations <- filtered_data %>%
  group_by(year, month) %>%
  summarise(total_violations = n())
## `summarise()` has grouped output by 'year'. You can override using the
## `.groups` argument.
# Extract the count for February 2021
february_2021_violations <- monthly_violations %>%
  filter(year == 2021 & month == 2) %>%
  pull(total_violations)

# Print the count for February 2021
february_2021_violations
## [1] 2169

Question 5 and 6

# Create a line graph
line_graph <- ggplot(monthly_violations, aes(x = month, y = total_violations/1000, color = as.factor(year))) +
  geom_line(size = 1) +
  labs(x = "Month", y = "Total Camera Violations (in thousands)", title = "Impact of Speed Camera Policy on Daily Volume of Violations") +
  scale_color_discrete(name = "Year")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Save the graph as a PDF file
ggsave("line_graph.pdf", line_graph, width = 8, height = 6)

# Display the graph
print(line_graph)

Question 7 and 8

# Filter cameras observed on or before January 1, 2018
# Filter cameras observed on or before January 1, 2018
filtered_Id <- Speed_Camera %>%
  group_by(CAMERA.ID) %>%
  filter(min(VIOLATION.DATE) <= as.Date("2018-01-01"))

# Keep relevant columns
filtered_Id <- filtered_Id %>%
  select(CAMERA.ID, VIOLATION.DATE, VIOLATIONS)

# Convert date to lubridate format
filtered_data$VIOLATION.DATE <- as.Date(filtered_data$VIOLATION.DATE)

# Reorganize the dataset
filtered_Id <- filtered_Id %>%
  filter(year(VIOLATION.DATE) %in% c(2018, 2019, 2020, 2021)) %>%
  mutate(post = ifelse(VIOLATION.DATE >= as.Date("2021-03-01"), 1, 0),
         month = month(VIOLATION.DATE))

# calculating total number of rows
nrow(filtered_Id)
## [1] 140692

Question 9

# Run the regression model
model <- lm(VIOLATIONS ~ post + month + as.factor(CAMERA.ID), data = filtered_Id)

# Print the model summary
summary(model)
## 
## Call:
## lm(formula = VIOLATIONS ~ post + month + as.factor(CAMERA.ID), 
##     data = filtered_Id)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -191.11  -13.06    2.09   11.80  548.66 
## 
## Coefficients:
##                              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                 109.63320    0.90389 121.291  < 2e-16 ***
## post                         65.84996    0.21669 303.886  < 2e-16 ***
## month                        -0.24784    0.02619  -9.462  < 2e-16 ***
## as.factor(CAMERA.ID)CHI004  -77.60355    1.25183 -61.992  < 2e-16 ***
## as.factor(CAMERA.ID)CHI005 -107.79462    1.25291 -86.035  < 2e-16 ***
## as.factor(CAMERA.ID)CHI007  -37.13198    1.25313 -29.631  < 2e-16 ***
## as.factor(CAMERA.ID)CHI008  -93.96199    1.27035 -73.965  < 2e-16 ***
## as.factor(CAMERA.ID)CHI009  -85.01771    1.25443 -67.774  < 2e-16 ***
## as.factor(CAMERA.ID)CHI010  -25.89575    1.25141 -20.693  < 2e-16 ***
## as.factor(CAMERA.ID)CHI011  -86.42581    1.26336 -68.410  < 2e-16 ***
## as.factor(CAMERA.ID)CHI013  -68.52735    1.25141 -54.760  < 2e-16 ***
## as.factor(CAMERA.ID)CHI014  -69.12793    1.25034 -55.287  < 2e-16 ***
## as.factor(CAMERA.ID)CHI015 -102.10079    1.25728 -81.207  < 2e-16 ***
## as.factor(CAMERA.ID)CHI018  -76.76684    1.25013 -61.407  < 2e-16 ***
## as.factor(CAMERA.ID)CHI019  -65.98251    1.25270 -52.672  < 2e-16 ***
## as.factor(CAMERA.ID)CHI020  -80.47192    1.25205 -64.272  < 2e-16 ***
## as.factor(CAMERA.ID)CHI021  -18.22966    1.25313 -14.547  < 2e-16 ***
## as.factor(CAMERA.ID)CHI022 -112.69974    1.66963 -67.500  < 2e-16 ***
## as.factor(CAMERA.ID)CHI023 -100.19240    1.63149 -61.412  < 2e-16 ***
## as.factor(CAMERA.ID)CHI024  -61.77660    1.26991 -48.646  < 2e-16 ***
## as.factor(CAMERA.ID)CHI025  -92.80662    1.25077 -74.200  < 2e-16 ***
## as.factor(CAMERA.ID)CHI026  -77.27130    1.66026 -46.542  < 2e-16 ***
## as.factor(CAMERA.ID)CHI027  -68.31557    1.65820 -41.199  < 2e-16 ***
## as.factor(CAMERA.ID)CHI028  -60.93818    1.66130 -36.681  < 2e-16 ***
## as.factor(CAMERA.ID)CHI029   47.60278    1.25487  37.935  < 2e-16 ***
## as.factor(CAMERA.ID)CHI030  -98.23357    1.72424 -56.972  < 2e-16 ***
## as.factor(CAMERA.ID)CHI031  -77.17765    1.72058 -44.856  < 2e-16 ***
## as.factor(CAMERA.ID)CHI032  -94.38031    1.72178 -54.816  < 2e-16 ***
## as.factor(CAMERA.ID)CHI033  -91.79131    1.64401 -55.834  < 2e-16 ***
## as.factor(CAMERA.ID)CHI034  -97.88002    1.64599 -59.466  < 2e-16 ***
## as.factor(CAMERA.ID)CHI035 -111.75450    1.26244 -88.522  < 2e-16 ***
## as.factor(CAMERA.ID)CHI036 -100.04964    1.25119 -79.963  < 2e-16 ***
## as.factor(CAMERA.ID)CHI039 -109.93471    1.25334 -87.713  < 2e-16 ***
## as.factor(CAMERA.ID)CHI040 -105.24446    1.25162 -84.087  < 2e-16 ***
## as.factor(CAMERA.ID)CHI041 -110.57657    1.65011 -67.012  < 2e-16 ***
## as.factor(CAMERA.ID)CHI042 -112.55201    1.66130 -67.749  < 2e-16 ***
## as.factor(CAMERA.ID)CHI043 -105.03945    1.64318 -63.924  < 2e-16 ***
## as.factor(CAMERA.ID)CHI044  -89.48967    1.61189 -55.518  < 2e-16 ***
## as.factor(CAMERA.ID)CHI045   44.99333    1.25226  35.930  < 2e-16 ***
## as.factor(CAMERA.ID)CHI048 -105.69385    1.58687 -66.605  < 2e-16 ***
## as.factor(CAMERA.ID)CHI049 -112.01298    1.25684 -89.123  < 2e-16 ***
## as.factor(CAMERA.ID)CHI050  -74.79101    1.25270 -59.704  < 2e-16 ***
## as.factor(CAMERA.ID)CHI051  -67.45159    1.25205 -53.873  < 2e-16 ***
## as.factor(CAMERA.ID)CHI055 -100.25689    1.25861 -79.657  < 2e-16 ***
## as.factor(CAMERA.ID)CHI056 -120.04724    1.30892 -91.715  < 2e-16 ***
## as.factor(CAMERA.ID)CHI057 -107.88952    1.25508 -85.962  < 2e-16 ***
## as.factor(CAMERA.ID)CHI058  -45.37574    1.26429 -35.890  < 2e-16 ***
## as.factor(CAMERA.ID)CHI059  -92.75572    1.80259 -51.457  < 2e-16 ***
## as.factor(CAMERA.ID)CHI060 -110.13754    1.83823 -59.915  < 2e-16 ***
## as.factor(CAMERA.ID)CHI061 -121.08148    2.29594 -52.737  < 2e-16 ***
## as.factor(CAMERA.ID)CHI062 -107.38195    1.81929 -59.024  < 2e-16 ***
## as.factor(CAMERA.ID)CHI063  -91.57496    1.65812 -55.228  < 2e-16 ***
## as.factor(CAMERA.ID)CHI064  -93.45403    1.58182 -59.080  < 2e-16 ***
## as.factor(CAMERA.ID)CHI065 -103.53435    1.57530 -65.724  < 2e-16 ***
## as.factor(CAMERA.ID)CHI066 -118.46424    1.60925 -73.614  < 2e-16 ***
## as.factor(CAMERA.ID)CHI067 -116.93865    1.59611 -73.265  < 2e-16 ***
## as.factor(CAMERA.ID)CHI068  -97.76724    1.25378 -77.978  < 2e-16 ***
## as.factor(CAMERA.ID)CHI069  -77.06815    1.24991 -61.659  < 2e-16 ***
## as.factor(CAMERA.ID)CHI070 -105.18137    1.26064 -83.435  < 2e-16 ***
## as.factor(CAMERA.ID)CHI071 -110.82695    1.60936 -68.864  < 2e-16 ***
## as.factor(CAMERA.ID)CHI072 -119.38353    1.63243 -73.132  < 2e-16 ***
## as.factor(CAMERA.ID)CHI073 -120.27205    1.63341 -73.632  < 2e-16 ***
## as.factor(CAMERA.ID)CHI074 -117.66720    1.62117 -72.582  < 2e-16 ***
## as.factor(CAMERA.ID)CHI075 -104.06130    1.33944 -77.690  < 2e-16 ***
## as.factor(CAMERA.ID)CHI076  -88.61347    1.25356 -70.689  < 2e-16 ***
## as.factor(CAMERA.ID)CHI077  -52.02651    1.25378 -41.496  < 2e-16 ***
## as.factor(CAMERA.ID)CHI078 -109.37039    2.71945 -40.218  < 2e-16 ***
## as.factor(CAMERA.ID)CHI079  -36.41397    1.47338 -24.715  < 2e-16 ***
## as.factor(CAMERA.ID)CHI080  -94.92966    1.39546 -68.027  < 2e-16 ***
## as.factor(CAMERA.ID)CHI083  -72.99912    1.25013 -58.393  < 2e-16 ***
## as.factor(CAMERA.ID)CHI086 -113.46234    1.37067 -82.779  < 2e-16 ***
## as.factor(CAMERA.ID)CHI087  -96.58050    1.77021 -54.559  < 2e-16 ***
## as.factor(CAMERA.ID)CHI088 -119.79441    1.69493 -70.678  < 2e-16 ***
## as.factor(CAMERA.ID)CHI089 -133.38011    1.94791 -68.473  < 2e-16 ***
## as.factor(CAMERA.ID)CHI090 -103.86071    1.34180 -77.404  < 2e-16 ***
## as.factor(CAMERA.ID)CHI091  -64.34030    1.34282 -47.914  < 2e-16 ***
## as.factor(CAMERA.ID)CHI092 -108.91818    1.35291 -80.507  < 2e-16 ***
## as.factor(CAMERA.ID)CHI093  -90.02123    1.25034 -71.997  < 2e-16 ***
## as.factor(CAMERA.ID)CHI094 -106.89676    1.26450 -84.536  < 2e-16 ***
## as.factor(CAMERA.ID)CHI095  -21.26818    1.25399 -16.960  < 2e-16 ***
## as.factor(CAMERA.ID)CHI096 -122.22975    1.34659 -90.770  < 2e-16 ***
## as.factor(CAMERA.ID)CHI097 -126.78768    1.43162 -88.562  < 2e-16 ***
## as.factor(CAMERA.ID)CHI098 -134.19448    2.16767 -61.907  < 2e-16 ***
## as.factor(CAMERA.ID)CHI099 -131.50504    2.02540 -64.928  < 2e-16 ***
## as.factor(CAMERA.ID)CHI100  -86.36018    1.68258 -51.326  < 2e-16 ***
## as.factor(CAMERA.ID)CHI101  -91.91682    1.25421 -73.287  < 2e-16 ***
## as.factor(CAMERA.ID)CHI102  -85.59283    1.25205 -68.362  < 2e-16 ***
## as.factor(CAMERA.ID)CHI103 -112.07383    1.26290 -88.743  < 2e-16 ***
## as.factor(CAMERA.ID)CHI104 -125.82395    1.90247 -66.137  < 2e-16 ***
## as.factor(CAMERA.ID)CHI105 -124.17642    1.82078 -68.200  < 2e-16 ***
## as.factor(CAMERA.ID)CHI106 -122.45215    1.78362 -68.654  < 2e-16 ***
## as.factor(CAMERA.ID)CHI107  -99.52107    1.71935 -57.883  < 2e-16 ***
## as.factor(CAMERA.ID)CHI108  -90.60265    1.71935 -52.696  < 2e-16 ***
## as.factor(CAMERA.ID)CHI109 -106.26393    1.72792 -61.498  < 2e-16 ***
## as.factor(CAMERA.ID)CHI110 -128.49913    1.96870 -65.271  < 2e-16 ***
## as.factor(CAMERA.ID)CHI111 -129.17837    2.06251 -62.632  < 2e-16 ***
## as.factor(CAMERA.ID)CHI112  -93.00818    1.71577 -54.208  < 2e-16 ***
## as.factor(CAMERA.ID)CHI113 -112.99999    1.72671 -65.442  < 2e-16 ***
## as.factor(CAMERA.ID)CHI114 -108.36866    1.70515 -63.554  < 2e-16 ***
## as.factor(CAMERA.ID)CHI115  -74.48880    1.70749 -43.625  < 2e-16 ***
## as.factor(CAMERA.ID)CHI116 -102.68314    1.70283 -60.301  < 2e-16 ***
## as.factor(CAMERA.ID)CHI117 -112.62106    1.26612 -88.950  < 2e-16 ***
## as.factor(CAMERA.ID)CHI118 -110.22133    1.25443 -87.866  < 2e-16 ***
## as.factor(CAMERA.ID)CHI119  -89.28807    1.25884 -70.929  < 2e-16 ***
## as.factor(CAMERA.ID)CHI120   15.12869    1.25313  12.073  < 2e-16 ***
## as.factor(CAMERA.ID)CHI121  -62.93307    1.25055 -50.324  < 2e-16 ***
## as.factor(CAMERA.ID)CHI122  -96.13024    1.27132 -75.614  < 2e-16 ***
## as.factor(CAMERA.ID)CHI123  -99.61743    1.28725 -77.388  < 2e-16 ***
## as.factor(CAMERA.ID)CHI124 -111.63687    1.30462 -85.570  < 2e-16 ***
## as.factor(CAMERA.ID)CHI125  -97.39827    1.27913 -76.144  < 2e-16 ***
## as.factor(CAMERA.ID)CHI126 -108.83346    1.27713 -85.217  < 2e-16 ***
## as.factor(CAMERA.ID)CHI127  -91.82059    1.67269 -54.894  < 2e-16 ***
## as.factor(CAMERA.ID)CHI128 -101.97256    1.68909 -60.371  < 2e-16 ***
## as.factor(CAMERA.ID)CHI129 -112.86508    1.69358 -66.643  < 2e-16 ***
## as.factor(CAMERA.ID)CHI130 -109.04738    1.25618 -86.809  < 2e-16 ***
## as.factor(CAMERA.ID)CHI131 -106.97277    6.00714 -17.808  < 2e-16 ***
## as.factor(CAMERA.ID)CHI132 -125.97168    1.92345 -65.493  < 2e-16 ***
## as.factor(CAMERA.ID)CHI133 -116.07900    1.87003 -62.073  < 2e-16 ***
## as.factor(CAMERA.ID)CHI134  -92.92939    1.68147 -55.267  < 2e-16 ***
## as.factor(CAMERA.ID)CHI135 -104.09412    1.69597 -61.377  < 2e-16 ***
## as.factor(CAMERA.ID)CHI136 -117.68604    1.69029 -69.625  < 2e-16 ***
## as.factor(CAMERA.ID)CHI137 -125.18047    1.83355 -68.272  < 2e-16 ***
## as.factor(CAMERA.ID)CHI138  -87.70747    1.25226 -70.039  < 2e-16 ***
## as.factor(CAMERA.ID)CHI139 -123.91552    1.94541 -63.696  < 2e-16 ***
## as.factor(CAMERA.ID)CHI140 -116.05740    1.27178 -91.256  < 2e-16 ***
## as.factor(CAMERA.ID)CHI141 -105.95015    1.25861 -84.180  < 2e-16 ***
## as.factor(CAMERA.ID)CHI142  -85.41280    1.25162 -68.242  < 2e-16 ***
## as.factor(CAMERA.ID)CHI143  -72.52166    1.69247 -42.850  < 2e-16 ***
## as.factor(CAMERA.ID)CHI144  -22.52050    1.33382 -16.884  < 2e-16 ***
## as.factor(CAMERA.ID)CHI145  -90.70792    1.60848 -56.394  < 2e-16 ***
## as.factor(CAMERA.ID)CHI146   -4.93833    1.69154  -2.919  0.00351 ** 
## as.factor(CAMERA.ID)CHI147    2.29885    1.34281   1.712  0.08690 .  
## as.factor(CAMERA.ID)CHI148  -92.38888    1.66233 -55.578  < 2e-16 ***
## as.factor(CAMERA.ID)CHI149   46.14173    1.34384  34.336  < 2e-16 ***
## as.factor(CAMERA.ID)CHI154 -100.43358    1.26846 -79.178  < 2e-16 ***
## as.factor(CAMERA.ID)CHI156  -91.53830    1.72177 -53.165  < 2e-16 ***
## as.factor(CAMERA.ID)CHI157 -100.28762    1.32996 -75.406  < 2e-16 ***
## as.factor(CAMERA.ID)CHI158  -77.32372    1.72544 -44.814  < 2e-16 ***
## as.factor(CAMERA.ID)CHI159 -103.01556    1.33647 -77.080  < 2e-16 ***
## as.factor(CAMERA.ID)CHI160  -87.48071    1.71696 -50.951  < 2e-16 ***
## as.factor(CAMERA.ID)CHI161  -86.43847    1.36577 -63.289  < 2e-16 ***
## as.factor(CAMERA.ID)CHI162 -102.66239    1.71219 -59.960  < 2e-16 ***
## as.factor(CAMERA.ID)CHI163 -103.46712    1.71577 -60.304  < 2e-16 ***
## as.factor(CAMERA.ID)CHI164 -118.26748    1.72914 -68.397  < 2e-16 ***
## as.factor(CAMERA.ID)CHI165 -118.47344    1.30097 -91.066  < 2e-16 ***
## as.factor(CAMERA.ID)CHI166 -129.77232    1.96642 -65.994  < 2e-16 ***
## as.factor(CAMERA.ID)CHI167 -130.07251    1.92758 -67.480  < 2e-16 ***
## as.factor(CAMERA.ID)CHI168  -86.75753    1.25399 -69.185  < 2e-16 ***
## as.factor(CAMERA.ID)CHI169  -74.82111    1.25291 -59.718  < 2e-16 ***
## as.factor(CAMERA.ID)CHI170 -113.89716    1.26589 -89.974  < 2e-16 ***
## as.factor(CAMERA.ID)CHI171 -118.21691    1.73047 -68.315  < 2e-16 ***
## as.factor(CAMERA.ID)CHI172  -92.76475    1.70398 -54.440  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33.61 on 140540 degrees of freedom
## Multiple R-squared:  0.6457, Adjusted R-squared:  0.6453 
## F-statistic:  1696 on 151 and 140540 DF,  p-value: < 2.2e-16