Tarea 3: Descubriendo patrones temporales y espaciales en los datos.

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.3     v purrr   0.3.4
## v tibble  3.1.0     v dplyr   1.0.5
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   1.4.0     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(sf)
## Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
recorridos_2020 <- read.csv("recorridos-realizados-2020.csv", stringsAsFactors = TRUE)
summary(recorridos_2020)
##  duracion_recorrido id_estacion_origen         fecha_origen_recorrido
##  Min.   :      0    Min.   :  2.0      2020-08-05 18:16:24:      6   
##  1st Qu.:    709    1st Qu.: 76.0      2020-09-11 16:39:12:      6   
##  Median :   1142    Median :164.0      2020-10-01 18:54:59:      6   
##  Mean   :   1463    Mean   :169.2      2020-11-18 18:15:43:      6   
##  3rd Qu.:   1664    3rd Qu.:239.0      2020-07-30 18:42:14:      5   
##  Max.   :3190094    Max.   :449.0      2020-08-01 13:41:21:      5   
##                                        (Other)            :2002911   
##                    nombre_estacion_origen        fecha_destino_recorrido
##  160 - Godoy Cruz y Libertador:  30295    2020-10-13 17:31:24:     12   
##  014 - Pacifico               :  29080    2020-12-07 19:07:54:     12   
##  292 - PLAZA BOLIVIA          :  28774    2020-09-17 17:26:06:      9   
##  029 - Parque Centenario      :  28637    2020-09-13 14:50:20:      6   
##  255 - BARRANCAS DE BELGRANO  :  25619    2020-09-13 17:34:51:      6   
##  335 - General Urquiza        :  22473    2020-11-12 19:40:08:      6   
##  (Other)                      :1838067    (Other)            :2002894   
##  id_estacion_destino                  nombre_estacion_destino   id_usuario    
##  Min.   :  2.0       160 - Godoy Cruz y Libertador:  30386    Min.   :    37  
##  1st Qu.: 76.0       292 - PLAZA BOLIVIA          :  29526    1st Qu.:164597  
##  Median :165.0       029 - Parque Centenario      :  27642    Median :458410  
##  Mean   :170.2       014 - Pacifico               :  27442    Mean   :417679  
##  3rd Qu.:239.0       255 - BARRANCAS DE BELGRANO  :  25623    3rd Qu.:673113  
##  Max.   :449.0       335 - General Urquiza        :  22652    Max.   :735946  
##                      (Other)                      :1839674                    
##                                      direccion_estacion_origen
##  Godoy Cruz  3279 y Libertador                    :  30295    
##  Santa Fe Av. & Bullrich, Int. Av.                :  29080    
##  Olleros Av. & Del Libertador Av.                 :  28774    
##  Av. Patricias Argentinas & Estivao               :  28637    
##  Sucre, Antonio Jose De, Mcal. Y Vertiz Virrey Av.:  25619    
##  Figueroa Alcorta & Sarmiento                     :  22473    
##  (Other)                                          :1838067    
##  long_estacion_origen lat_estacion_origen
##  Min.   :-58.49       Min.   :-34.65     
##  1st Qu.:-58.44       1st Qu.:-34.61     
##  Median :-58.42       Median :-34.60     
##  Mean   :-58.42       Mean   :-34.60     
##  3rd Qu.:-58.40       3rd Qu.:-34.58     
##  Max.   :-58.36       Max.   :-34.54     
##                                          
##                                      direccion_estacion_destino
##  Godoy Cruz  3279 y Libertador                    :  30386     
##  Olleros Av. & Del Libertador Av.                 :  29526     
##  Av. Patricias Argentinas & Estivao               :  27642     
##  Santa Fe Av. & Bullrich, Int. Av.                :  27442     
##  Sucre, Antonio Jose De, Mcal. Y Vertiz Virrey Av.:  25623     
##  Figueroa Alcorta & Sarmiento                     :  22652     
##  (Other)                                          :1839674     
##  long_estacion_destino lat_estacion_destino    periodo    
##  Min.   :-58.49        Min.   :-34.65       Min.   :2020  
##  1st Qu.:-58.44        1st Qu.:-34.61       1st Qu.:2020  
##  Median :-58.42        Median :-34.60       Median :2020  
##  Mean   :-58.42        Mean   :-34.60       Mean   :2020  
##  3rd Qu.:-58.39        3rd Qu.:-34.58       3rd Qu.:2020  
##  Max.   :-58.36        Max.   :-34.54       Max.   :2020  
## 
recorridos_2020 <- mutate(recorridos_2020,
                          dia=substr(fecha_origen_recorrido, 1, 10),
                          hora=substr(fecha_origen_recorrido, 11, 16))
head(recorridos_2020)
##   duracion_recorrido id_estacion_origen fecha_origen_recorrido
## 1                882                116    2020-12-31 23:54:22
## 2                894                116    2020-12-29 12:39:18
## 3               1361                116    2020-12-21 21:21:38
## 4               1010                116    2020-12-20 21:58:19
## 5               1490                116    2020-12-20 13:32:53
## 6                976                116    2020-12-19 17:24:42
##   nombre_estacion_origen fecha_destino_recorrido id_estacion_destino
## 1 116 - HOSPITAL ALEMÃ\201N     2021-01-01 00:09:04                 214
## 2 116 - HOSPITAL ALEMÃ\201N     2020-12-29 12:54:12                 214
## 3 116 - HOSPITAL ALEMÃ\201N     2020-12-21 21:44:19                 214
## 4 116 - HOSPITAL ALEMÃ\201N     2020-12-20 22:15:09                 214
## 5 116 - HOSPITAL ALEMÃ\201N     2020-12-20 13:57:43                 214
## 6 116 - HOSPITAL ALEMÃ\201N     2020-12-19 17:40:58                 214
##   nombre_estacion_destino id_usuario direccion_estacion_origen
## 1 142 - Armenia y Gorriti     666202          Beruti & Ecuador
## 2 142 - Armenia y Gorriti     332689          Beruti & Ecuador
## 3 142 - Armenia y Gorriti      57949          Beruti & Ecuador
## 4 142 - Armenia y Gorriti     454846          Beruti & Ecuador
## 5 142 - Armenia y Gorriti     690975          Beruti & Ecuador
## 6 142 - Armenia y Gorriti     698489          Beruti & Ecuador
##   long_estacion_origen lat_estacion_origen direccion_estacion_destino
## 1            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 2            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 3            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 4            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 5            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 6            -58.40259           -34.59217     Armenia 1525 y Gorriti
##   long_estacion_destino lat_estacion_destino periodo        dia   hora
## 1             -58.42897            -34.59054    2020 2020-12-31  23:54
## 2             -58.42897            -34.59054    2020 2020-12-29  12:39
## 3             -58.42897            -34.59054    2020 2020-12-21  21:21
## 4             -58.42897            -34.59054    2020 2020-12-20  21:58
## 5             -58.42897            -34.59054    2020 2020-12-20  13:32
## 6             -58.42897            -34.59054    2020 2020-12-19  17:24
recorridos_2020 <- mutate(recorridos_2020, fecha=ymd(dia))
recorridos_2020 <- mutate(recorridos_2020, hora2=hour(hm(hora)))
str(recorridos_2020)
## 'data.frame':    2002945 obs. of  19 variables:
##  $ duracion_recorrido        : int  882 894 1361 1010 1490 976 1519 793 981 1431 ...
##  $ id_estacion_origen        : int  116 116 116 116 116 116 116 116 116 116 ...
##  $ fecha_origen_recorrido    : Factor w/ 1859821 levels "2020-01-01 00:02:50",..: 1859821 1839612 1779461 1769564 1764789 1759040 1738134 1722272 1708916 1708809 ...
##  $ nombre_estacion_origen    : Factor w/ 201 levels "001 - FACULTAD DE DERECHO",..: 83 83 83 83 83 83 83 83 83 83 ...
##  $ fecha_destino_recorrido   : Factor w/ 1844425 levels "2020-01-01 00:06:54",..: 1844419 1824267 1764774 1754921 1750223 1744498 1723921 1708122 1694822 1694839 ...
##  $ id_estacion_destino       : num  214 214 214 214 214 214 214 214 214 214 ...
##  $ nombre_estacion_destino   : Factor w/ 201 levels "001 - FACULTAD DE DERECHO",..: 102 102 102 102 102 102 102 102 102 102 ...
##  $ id_usuario                : int  666202 332689 57949 454846 690975 698489 69834 28640 107392 113062 ...
##  $ direccion_estacion_origen : Factor w/ 200 levels "1019 Riglos",..: 107 107 107 107 107 107 107 107 107 107 ...
##  $ long_estacion_origen      : num  -58.4 -58.4 -58.4 -58.4 -58.4 ...
##  $ lat_estacion_origen       : num  -34.6 -34.6 -34.6 -34.6 -34.6 ...
##  $ direccion_estacion_destino: Factor w/ 200 levels "1019 Riglos",..: 84 84 84 84 84 84 84 84 84 84 ...
##  $ long_estacion_destino     : num  -58.4 -58.4 -58.4 -58.4 -58.4 ...
##  $ lat_estacion_destino      : num  -34.6 -34.6 -34.6 -34.6 -34.6 ...
##  $ periodo                   : int  2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 ...
##  $ dia                       : chr  "2020-12-31" "2020-12-29" "2020-12-21" "2020-12-20" ...
##  $ hora                      : chr  " 23:54" " 12:39" " 21:21" " 21:58" ...
##  $ fecha                     : Date, format: "2020-12-31" "2020-12-29" ...
##  $ hora2                     : num  23 12 21 21 13 17 15 22 18 18 ...
recorridos_2020 <- mutate(recorridos_2020, mes=month(fecha, label=TRUE, abbr = FALSE))
head(recorridos_2020)
##   duracion_recorrido id_estacion_origen fecha_origen_recorrido
## 1                882                116    2020-12-31 23:54:22
## 2                894                116    2020-12-29 12:39:18
## 3               1361                116    2020-12-21 21:21:38
## 4               1010                116    2020-12-20 21:58:19
## 5               1490                116    2020-12-20 13:32:53
## 6                976                116    2020-12-19 17:24:42
##   nombre_estacion_origen fecha_destino_recorrido id_estacion_destino
## 1 116 - HOSPITAL ALEMÃ\201N     2021-01-01 00:09:04                 214
## 2 116 - HOSPITAL ALEMÃ\201N     2020-12-29 12:54:12                 214
## 3 116 - HOSPITAL ALEMÃ\201N     2020-12-21 21:44:19                 214
## 4 116 - HOSPITAL ALEMÃ\201N     2020-12-20 22:15:09                 214
## 5 116 - HOSPITAL ALEMÃ\201N     2020-12-20 13:57:43                 214
## 6 116 - HOSPITAL ALEMÃ\201N     2020-12-19 17:40:58                 214
##   nombre_estacion_destino id_usuario direccion_estacion_origen
## 1 142 - Armenia y Gorriti     666202          Beruti & Ecuador
## 2 142 - Armenia y Gorriti     332689          Beruti & Ecuador
## 3 142 - Armenia y Gorriti      57949          Beruti & Ecuador
## 4 142 - Armenia y Gorriti     454846          Beruti & Ecuador
## 5 142 - Armenia y Gorriti     690975          Beruti & Ecuador
## 6 142 - Armenia y Gorriti     698489          Beruti & Ecuador
##   long_estacion_origen lat_estacion_origen direccion_estacion_destino
## 1            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 2            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 3            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 4            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 5            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 6            -58.40259           -34.59217     Armenia 1525 y Gorriti
##   long_estacion_destino lat_estacion_destino periodo        dia   hora
## 1             -58.42897            -34.59054    2020 2020-12-31  23:54
## 2             -58.42897            -34.59054    2020 2020-12-29  12:39
## 3             -58.42897            -34.59054    2020 2020-12-21  21:21
## 4             -58.42897            -34.59054    2020 2020-12-20  21:58
## 5             -58.42897            -34.59054    2020 2020-12-20  13:32
## 6             -58.42897            -34.59054    2020 2020-12-19  17:24
##        fecha hora2       mes
## 1 2020-12-31    23 diciembre
## 2 2020-12-29    12 diciembre
## 3 2020-12-21    21 diciembre
## 4 2020-12-20    21 diciembre
## 5 2020-12-20    13 diciembre
## 6 2020-12-19    17 diciembre
recorridos_mes <- recorridos_2020 %>%
         group_by(mes) %>%
         summarise(cantidad=n())

Análisis Temporal.

options(scipen = 999)
ggplot(recorridos_2020)+
  geom_bar(aes(x=mes, fill=mes))+
    labs(title = "Cantidad de recorridos en Bicicletas por mes",
       subtitle = "Año 2020",
       x = "Mes",
       y = "Cantidad")

En el cuadro se puede apreciar la cuarentena más estricta que tuvo CABA entre marzo y julio que se tradujo en los meses con la menor cantidad de recorridos, siendo mayo el mes con menos recorridos de todo el año.

Los meses de octubre, noviembre y diciembre duplican cada uno en cantidad de viajes a enero y casi triplican a febrero, meses en los que tampoco existía la cuarentena. Esto podría deberse a que luego de la cuarentena más estricta y con el tema del covid todavía vigente la gente prefiere transportarse en bicicletas para evitar el uso de transporte público cerrado.

recorridos_2020 <- mutate(recorridos_2020, nombre_dia=wday(fecha, label=TRUE, locale="Spanish", abbr = FALSE))
head(recorridos_2020)
##   duracion_recorrido id_estacion_origen fecha_origen_recorrido
## 1                882                116    2020-12-31 23:54:22
## 2                894                116    2020-12-29 12:39:18
## 3               1361                116    2020-12-21 21:21:38
## 4               1010                116    2020-12-20 21:58:19
## 5               1490                116    2020-12-20 13:32:53
## 6                976                116    2020-12-19 17:24:42
##   nombre_estacion_origen fecha_destino_recorrido id_estacion_destino
## 1 116 - HOSPITAL ALEMÃ\201N     2021-01-01 00:09:04                 214
## 2 116 - HOSPITAL ALEMÃ\201N     2020-12-29 12:54:12                 214
## 3 116 - HOSPITAL ALEMÃ\201N     2020-12-21 21:44:19                 214
## 4 116 - HOSPITAL ALEMÃ\201N     2020-12-20 22:15:09                 214
## 5 116 - HOSPITAL ALEMÃ\201N     2020-12-20 13:57:43                 214
## 6 116 - HOSPITAL ALEMÃ\201N     2020-12-19 17:40:58                 214
##   nombre_estacion_destino id_usuario direccion_estacion_origen
## 1 142 - Armenia y Gorriti     666202          Beruti & Ecuador
## 2 142 - Armenia y Gorriti     332689          Beruti & Ecuador
## 3 142 - Armenia y Gorriti      57949          Beruti & Ecuador
## 4 142 - Armenia y Gorriti     454846          Beruti & Ecuador
## 5 142 - Armenia y Gorriti     690975          Beruti & Ecuador
## 6 142 - Armenia y Gorriti     698489          Beruti & Ecuador
##   long_estacion_origen lat_estacion_origen direccion_estacion_destino
## 1            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 2            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 3            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 4            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 5            -58.40259           -34.59217     Armenia 1525 y Gorriti
## 6            -58.40259           -34.59217     Armenia 1525 y Gorriti
##   long_estacion_destino lat_estacion_destino periodo        dia   hora
## 1             -58.42897            -34.59054    2020 2020-12-31  23:54
## 2             -58.42897            -34.59054    2020 2020-12-29  12:39
## 3             -58.42897            -34.59054    2020 2020-12-21  21:21
## 4             -58.42897            -34.59054    2020 2020-12-20  21:58
## 5             -58.42897            -34.59054    2020 2020-12-20  13:32
## 6             -58.42897            -34.59054    2020 2020-12-19  17:24
##        fecha hora2       mes nombre_dia
## 1 2020-12-31    23 diciembre     jueves
## 2 2020-12-29    12 diciembre     martes
## 3 2020-12-21    21 diciembre      lunes
## 4 2020-12-20    21 diciembre    domingo
## 5 2020-12-20    13 diciembre    domingo
## 6 2020-12-19    17 diciembre     sábado
ggplot(recorridos_2020)+
  geom_bar(aes(x=nombre_dia, fill=nombre_dia))+
    labs(title = "Cantidad de recorridos en Bicicletas, por día de semana",
       subtitle = "Año 2020",
       x = "Día",
       y = "Cantidad")

Del análisis gráfico se desprende que los días jueves y viernes son los días donde más se utiliza el sistema de bicicletas. Los domingos son los días donde menos recorridos se realizan. De todas formas, de lunes a viernes no hay mucha diferencia entre cada día.

ggplot(recorridos_2020)+
  geom_bar(aes(x=hora2, fill=hora2))+
    labs(title = "Cantidad de recorridos en Bicicletas, por hora",
       subtitle = "Año 2020",
       x = "Hora",
       y = "Cantidad")

Hay un aumento sostenido en la cantidad de recorridos a partir de las 5 de la mañana y durante todo el día hasta el pico en el uso del sistema de bicicletas que se da a las 18 hs, horario que coincide con la finalización de la jornada laboral promedio en CABA.

Análisis Espacial.

bbox <- make_bbox(recorridos_2020$long_estacion_origen, recorridos_2020$lat_estacion_origen)
mapa_base <- get_stamenmap(bbox = bbox,
                           maptype = "toner-lite",
                           zoom = 12)
## Source : http://tile.stamen.com/toner-lite/12/1382/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1383/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1384/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1382/2468.png
## Source : http://tile.stamen.com/toner-lite/12/1383/2468.png
## Source : http://tile.stamen.com/toner-lite/12/1384/2468.png
ggmap(mapa_base)

ggmap(mapa_base)+
  geom_point(data=recorridos_2020, aes(x=long_estacion_origen, y=lat_estacion_origen))

ggmap(mapa_base) +
    geom_bin2d(data = recorridos_2020, 
               aes(x=long_estacion_origen, y=lat_estacion_origen), bins=20)+
  scale_fill_viridis_c(option = "magma", direction=-1)

Del mapa de densidad se desprende que las estaciones más utilizadas como de origen del recorrido están distribuidas por el centro-norte de la ciudad.

ggmap(mapa_base) +
    geom_bin2d(data = recorridos_2020, 
               aes(x=long_estacion_origen, y=lat_estacion_origen), bins=20)+
  scale_fill_viridis_c(option = "magma", direction=-1)+
  facet_wrap(~hora2)

Del facetado por horas, se puede apreciar como cambia la densidad de las estaciones de origen más utilizadas. Durante la mañana y las primeras horas de la tarde y noche las estaciones más utilizadas parecieran estar más repartidas por los barrios. Alrededor de las 18 hs, pico de utilización del sistema público de bicicletas, las estaciones más utilizadas se concentran geográficamente más cerca del macro centro porteño donde hay mayor cantidad de oficinas, aunque no tanto en microcentro.

ggmap(mapa_base) +
    geom_bin2d(data = recorridos_2020, 
               aes(x=long_estacion_origen, y=lat_estacion_origen), bins=20)+
  scale_fill_viridis_c(option = "magma", direction=-1)+
  facet_wrap(~mes)

Según los meses del año, no se aprecian cambios significativos entre mes y mes.

ggmap(mapa_base) +
    geom_bin2d(data = recorridos_2020, 
               aes(x=long_estacion_origen, y=lat_estacion_origen), bins=20)+
  scale_fill_viridis_c(option = "magma", direction=-1)+
  facet_wrap(~nombre_dia)

En cuanto al facetado por días, se aprecian cambios significativos los fines de semana con respecto a los días de lunes a viernes. En los primeros, las estaciones más utilizadas están más alejadas del microcentro de la Ciudad, más cercana a la zonas con parques y áreas verdes de la misma.