###Análisis Geoespacial sobre los Datos de Atención Ciudadana en la CABA, año 2019

atencion <- read.csv("C:/Users/garbarino39/Downloads/sistema-unico-de-atencion-ciudadana-2019.csv", stringsAsFactors = FALSE, encoding = "UTF-8")
summary(atencion)
##    contacto            periodo        categoria         subcategoria      
##  Length:989629      Min.   :201901   Length:989629      Length:989629     
##  Class :character   1st Qu.:201904   Class :character   Class :character  
##  Mode  :character   Median :201906   Mode  :character   Mode  :character  
##                     Mean   :201906                                        
##                     3rd Qu.:201909                                        
##                     Max.   :201912                                        
##                                                                           
##    concepto         tipo_prestacion    fecha_ingreso      hora_ingreso      
##  Length:989629      Length:989629      Length:989629      Length:989629     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##  domicilio_cgpc     domicilio_barrio   domicilio_calle    domicilio_altura
##  Length:989629      Length:989629      Length:989629      Min.   :    1   
##  Class :character   Class :character   Class :character   1st Qu.: 1040   
##  Mode  :character   Mode  :character   Mode  :character   Median : 2200   
##                                                           Mean   : 2457   
##                                                           3rd Qu.: 3483   
##                                                           Max.   :17700   
##                                                           NA's   :123503  
##  domicilio_esquina_proxima      lat              long           canal          
##  Length:989629             Min.   :-34.70   Min.   :-58.53   Length:989629     
##  Class :character          1st Qu.:-34.63   1st Qu.:-58.48   Class :character  
##  Mode  :character          Median :-34.61   Median :-58.45   Mode  :character  
##                            Mean   :-34.61   Mean   :-58.45                     
##                            3rd Qu.:-34.58   3rd Qu.:-58.42                     
##                            Max.   :-34.53   Max.   :-58.34                     
##                            NA's   :2659     NA's   :2659                       
##     genero          estado_del_contacto fecha_cierre_contacto
##  Length:989629      Length:989629       Length:989629        
##  Class :character   Class :character    Class :character     
##  Mode  :character   Mode  :character    Mode  :character     
##                                                              
##                                                              
##                                                              
## 
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.0     v purrr   0.3.4
## v tibble  3.0.1     v dplyr   0.8.5
## v tidyr   1.0.2     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## -- 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:dplyr':
## 
##     intersect, setdiff, union
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union

Para poder comenzar, ordenamos las fechas :

atencion <- atencion %>% mutate(fecha_ingreso = ymd(fecha_ingreso))

###Tomamos cinco casos al azar para ver sus caracteristicas temporales:

set.seed("99")
muestra_de_fechas <- atencion %>% 
    mutate(fecha_hora = paste(fecha_ingreso, hora_ingreso)) %>% 
    sample_n(5) %>% 
    pull(fecha_hora)

muestra_de_fechas
## [1] "2019-10-08 06:05:16 p.m." "2019-05-20 11:33:44 a.m."
## [3] "2019-02-27 09:13:43 a.m." "2019-11-06 03:33:01 p.m."
## [5] "2019-03-31 03:53:11 p.m."
wday(muestra_de_fechas)
## [1] 3 2 4 4 1
wday(muestra_de_fechas, label = TRUE)
## [1] mar lun mié mié dom
## Levels: dom < lun < mar < mié < jue < vie < sáb

###Distibución Mensual

atencion %>% 
    ggplot() +
        geom_bar(aes(x = month(fecha_ingreso, label = TRUE), fill = "red"))+ 
         labs(title = "Distribución mensual de llamados en Atención Ciudadana, 2019",
                x = "Mes", y = "Cantidad",
              caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")

atencion_frecuente <- atencion %>% 
    count(categoria) %>% 
    top_n(5) %>% 
    pull(categoria)
## Selecting by n

Para poder enterder con mayor presicion los llamados, realilzaremos graficos en donde se muestre no solo la distribución mensual, sino tambien, por categorías.

atencion %>% 
    filter(categoria %in% atencion_frecuente) %>% 
    ggplot() +
        geom_bar(aes(x = month(fecha_ingreso, label = TRUE), fill = categoria)) +
  labs(title = "Distribución mensual de llamados en Atención Ciudadana, 2019",
       subtitle = "Por categorias",
                x = "Mes", y = "Cantidad",
       fill = "Categoria",
              caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")+
  coord_flip()

atencion %>% 
    filter(categoria %in% atencion_frecuente) %>% 
    ggplot() +
        geom_bar(aes(x = month(fecha_ingreso, label = TRUE), fill = categoria),
                 position = "dodge")+
  labs(title = "Distribución mensual de llamados en Atención Ciudadana, 2019",
       subtitle = "Por categorias",
                x = "Mes", y = "Cantidad",
       fill = "Categoria",
              caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")

##### Conclusión:

1. Con respecto a la distibucion mes, podemos ver que Mayo el el mes que mas llamado recibe, miestras que diciembre es el menor.

2. La distribicion categorica es similar en todos los meses, no hay una variacion pronunciada de ninguna categoria, entendiendo que los problemas mas frecuentes estan relacionados al Transito.

3. La categoria roja es la que representa a los llamados que no tienen un motivo especificado.

###Distibución Diaria

conteo <-  atencion %>% 
    filter(categoria %in% atencion_frecuente) %>% 
    count(categoria, diasemana = wday(fecha_ingreso, label = TRUE, abbr = FALSE))
ggplot(conteo) +
    geom_line(aes(x = diasemana, y = n, group = categoria, color = categoria))+
  labs(title = "Distribución diaria de llamados en Atención Ciudadana",
       subtitle = "Por categorias",
                x = "Día", y = "Cantidad",
       fill = "Categoria",
              caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")

conteo <-  conteo  %>% 
    group_by(categoria) %>% 
    mutate(pct = n / sum(n) * 100)
ggplot(conteo) +
    geom_line(aes(x = diasemana, y = pct, group = categoria, color = categoria)) +
  labs(title = "Distribución diaria de llamados en Atención Ciudadana",
       subtitle = "Por categorias",
                x = "Día", y = "Porcentaje",
       fill = "Categoria",
              caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")

##### Conclusión:

Revisando las distribiciones diarias se puede ver que los dias Lunes y Miercoles , son los dias en donde hay mas cantidad de llamados. Aun asi, cuando se analiza cada categoría de manera porcentua, se que que el dia pico de la categoría tránsito, ocurre los viernes a disferencia de las demás.

###Distibución Horaria

por_hora <-  atencion %>% 
    filter(categoria %in% atencion_frecuente) %>% 
    count(categoria, hora_base = hour(hms(hora_ingreso))) %>%
    group_by(categoria) %>% 
    mutate(pct = n / sum(n) *100)
ggplot(por_hora) +
    geom_line(aes(x = hora_base, y = pct, group = categoria, color = categoria))+
    labs(title = "Distribución horaria por tipo de reclamo",
         x = "Hora", y = "%",
         color = "Llamados más frecuentes", caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana") +
    expand_limits(y = 0) +
    scale_x_continuous(breaks = 0:23)

##### Conclusión:

Revisando las distribiciones horarias, tanto am como pm, ambas tienen picos de 8 a 10 , miestras que el horaria bajo de recepción de llamados es de 5 a 7 .

###Distibución Geoespacial

###Para poder hacer la representación geoespacial, buscamos un mapa de CABA y sus alrededores

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.
atencion<- atencion %>% 
    filter(lat <0, long<0)
bbox <- make_bbox(atencion$long, atencion$lat)
CABA <- get_stamenmap(bbox = bbox, maptype = "toner-lite", zoom = 12)
## Source : http://tile.stamen.com/toner-lite/12/1381/2467.png
## 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/1381/2468.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
## Source : http://tile.stamen.com/toner-lite/12/1381/2469.png
## Source : http://tile.stamen.com/toner-lite/12/1382/2469.png
## Source : http://tile.stamen.com/toner-lite/12/1383/2469.png
## Source : http://tile.stamen.com/toner-lite/12/1384/2469.png
ggmap(CABA)

### Cruzamos el mapa encontrado, con la base de datos de Atención Ciudadana, año 2019

ggmap(CABA) +
    geom_bin2d(data = atencion, 
               aes(x = long, y = lat)) +
  labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
       subtitle = "Año 2019",
         x = "Latitud ", y = "Longitud",
        fill = "Cantidad", 
       caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")

ggmap(CABA) +
    geom_bin2d(data = atencion, aes(x = long, y = lat), bins = 100) +
    scale_fill_viridis_c() +
  labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
       subtitle = "Año 2019",
         x = "Latitud ", y = "Longitud",
        fill = "Cantidad", 
       caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")

##### Para poder visualizar mejor los datos, dejamos el rellano por pixeles y lo pasamos a lineas para podes entender con mayor presición la información

ggmap(CABA) +
    geom_density2d(data = atencion, aes(x = long, y = lat, color = stat(level))) +
    scale_color_viridis_c() +
  labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
       subtitle = "Año 2019",
         x = "Latitud ", y = "Longitud",
        fill = "Cantidad", 
       caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")

Conclusión:

Se puede ver que la mayor consentración de llamado ocurre en el sur de la ciudad, en el area de La Boca, mientras que se ven nodos menores en el corredor norte.

###Distibución Geoespacial diferenciada por categoría

ggmap(CABA) +
    geom_point(data = filter(atencion, categoria %in% atencion_frecuente), 
               aes(x = long, y = lat, color = categoria),
               size = 0.1, alpha = 0.1) +
  labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
       subtitle = "Año 2019",
         x = "Latitud ", y = "Longitud",
        fill = "Categoría", 
       caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana") +
    scale_color_brewer(palette = "Set1") +
    facet_wrap(~categoria)

Conclusión:

En este gráfico podemos ver que la cantidad de llamados, sin importar la categoría tiene simales distribuciones espaciales

ggmap(CABA) +
    geom_density2d(data = filter(atencion, categoria %in% atencion_frecuente), aes(x = long, y = lat, color = stat(level)))+
  labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
       subtitle = "Año 2019",
         x = "Latitud ", y = "Longitud",
        color = "Nivel", 
       caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana") +
    scale_color_viridis_c() +
    facet_wrap(~categoria)

##### Conclusión:

En estos gráficos podemos ver cómo los llamados en relación al tránsito incrementan en el córdon norte de la ciodad, mintras que en sur de la ciudad se ve una distribución pareja.

###Distibución Geoespacial diferenciada por categoría

atencion1 <- atencion %>% 
    mutate(dia_semana = wday(fecha_ingreso, label = TRUE))
ggmap(CABA) +
geom_point(data = filter(atencion1, 
                             categoria %in% c("TRÁNSITO", "LIMPIEZA Y RECOLECCIÓN")),
               aes(x = long, y = lat, color = categoria), alpha = .5, size = .2) +
    facet_wrap(~dia_semana)+
  labs(title = "Distribución geoespacial de llamados a Atención Ciudadana , 2019",
       subtitle = "Categorias: Limpieza y Recolección y Tránsito",
         x = "Latitud ", y = "Longitud",
        fill = "Categoría", 
       caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")

Conclusión:

Se puede ver que los llamado referidos a Limpieza tiene una distribución similar a lo largo de la semana, mientras que los relacionados al tránsito, los lunes incrementan en las zonas oeste y sur. Esto puede estar relacionado a los ingresos a la capital al comenzar la semana.