TRABAJO PRACTICO N°4
CIENCIA DE DATOS PARA CIUDADES II: Analizando datos espaciotemporales
Snyders, Federico / Vargas, Juan
library(tidyverse)
## -- Attaching packages ---------------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.0 v purrr 0.3.3
## v tibble 2.1.3 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(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.
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
#Continuamos trabajando con los datos de la ciudad de Boston
#Descargamos el dataset de crÃmenes e incidentes en la ciudad de Boston desde el año 2015 hasta los meses cursados del año 2020. Para este trabajo se analizar los crÃmenes cometidos en el curso del año 2020 con el fin de contrastar la situación generada por la pandemia del COVID-19.
CRIMENES_BOSTON <- read.csv("~/JUAN/POSGRADOS/MAESTRIA EN ECONOMIA URBANA/2020/CIENCIA DE DATOS PARA CIUDADES II/CLASE 4/TP 4/CDC2_TP4/tmpprt4ydrl.csv")
#Filtramos loo delitos y incidentes desde enero hasta la primer quincena de mayo 2020.
CRIMENES_BOSTON <- CRIMENES_BOSTON %>%
filter(YEAR==2020)
summary(CRIMENES_BOSTON)
## INCIDENT_NUMBER OFFENSE_CODE OFFENSE_CODE_GROUP
## 202000255: 2 Min. : 111 :31028
## 202000310: 2 1st Qu.:1102 Aggravated Assault : 0
## 202000531: 2 Median :3006 Aircraft : 0
## 202000608: 2 Mean :2378 Arson : 0
## 202000623: 2 3rd Qu.:3207 Assembly or Gathering Violations: 0
## 202000712: 2 Max. :3831 Auto Theft : 0
## (Other) :31016 (Other) : 0
## OFFENSE_DESCRIPTION DISTRICT REPORTING_AREA
## VERBAL DISPUTE : 2988 B2 :5031 Min. : 1.0
## INVESTIGATE PERSON : 2931 C11 :4380 1st Qu.:200.0
## ASSAULT - SIMPLE : 1931 B3 :3722 Median :355.0
## SICK ASSIST : 1542 D4 :3634 Mean :392.2
## M/V - LEAVING SCENE - PROPERTY DAMAGE: 1306 A1 :2827 3rd Qu.:538.0
## VANDALISM : 1288 D14 :2063 Max. :962.0
## (Other) :19042 (Other):9371 NA's :2679
## SHOOTING OCCURRED_ON_DATE YEAR MONTH
## : 0 2020-01-03 00:00:00: 20 Min. :2020 Min. :1.00
## 0:30734 2020-01-18 00:00:00: 19 1st Qu.:2020 1st Qu.:1.00
## 1: 294 2020-01-01 00:00:00: 18 Median :2020 Median :3.00
## Y: 0 2020-01-06 00:00:00: 17 Mean :2020 Mean :2.63
## 2020-01-27 00:00:00: 17 3rd Qu.:2020 3rd Qu.:4.00
## 2020-02-01 00:00:00: 17 Max. :2020 Max. :5.00
## (Other) :30920
## DAY_OF_WEEK HOUR UCR_PART STREET
## Friday :4847 Min. : 0 :31028 WASHINGTON ST : 2880
## Monday :4366 1st Qu.: 9 Other : 0 : 2419
## Saturday :4319 Median :14 Part One : 0 HARRISON AVE : 1115
## Sunday :3976 Mean :13 Part Three: 0 BLUE HILL AVE : 1009
## Thursday :4432 3rd Qu.:18 Part Two : 0 GIBSON ST : 1001
## Tuesday :4423 Max. :23 NEW SUDBURY ST: 754
## Wednesday:4665 (Other) :21850
## Lat Long Location
## Min. :42.23 Min. :-71.24 (0.00000000, 0.00000000) :26521
## 1st Qu.:42.30 1st Qu.:-71.10 (42.32866200, -71.08563400): 170
## Median :42.33 Median :-71.08 (42.29755500, -71.05970900): 117
## Mean :42.32 Mean :-71.08 (42.33954100, -71.06940800): 112
## 3rd Qu.:42.35 3rd Qu.:-71.06 (42.36183800, -71.05976400): 96
## Max. :42.45 Max. :-71.00 (42.28482500, -71.09137300): 89
## NA's :26521 NA's :26521 (Other) : 3923
#Observamos que el incidente más cometido es la disputa verbal, el dÃa jueves es el dÃa de mayor cantidad de observaciones, la calle con más observaciones es la calle WASHINGTON y que la hora más habitual para los crÃmenes e incidentes es entre las 13.00 y las 18.00
#Convertimos fecha (date)
CRIMENES_BOSTON <- CRIMENES_BOSTON %>% mutate(OCCURRED_ON_DATE = ymd_hms(OCCURRED_ON_DATE))
#Mostramos los registros para el año 2020 y observamos que el MES en el que mas delitos hubo fue ENERO
CRIMENES_BOSTON %>%
filter(year(OCCURRED_ON_DATE) == 2020) %>%
ggplot() +
geom_bar(aes(x = month(OCCURRED_ON_DATE, label = TRUE)))+
labs(title = "Delitos en la ciudad de BOSTON",
subtitle = "año 2020",
fill = "Cantidad",
caption= "Fuente: https://data.boston.gov/dataset", y="Cantidad",
x="MES")
#Analizamos en profundidamos los delitos mas cometidos.
CRIMENES_BOSTON %>%
count(OFFENSE_DESCRIPTION) %>%
top_n(5) %>%
arrange(desc(n))
## Selecting by n
## # A tibble: 5 x 2
## OFFENSE_DESCRIPTION n
## <fct> <int>
## 1 VERBAL DISPUTE 2988
## 2 INVESTIGATE PERSON 2931
## 3 ASSAULT - SIMPLE 1931
## 4 SICK ASSIST 1542
## 5 M/V - LEAVING SCENE - PROPERTY DAMAGE 1306
#Guardamos el top 5 de delitos
CRIMENES_BOSTON_FRECUENTES <- CRIMENES_BOSTON %>%
count(OFFENSE_DESCRIPTION) %>%
top_n(5) %>%
pull(OFFENSE_DESCRIPTION)
## Selecting by n
#Graficamos la información de los 5 delitos mas cometidos.
CRIMENES_BOSTON%>%
filter(year(OCCURRED_ON_DATE) == 2020,
OFFENSE_DESCRIPTION %in% CRIMENES_BOSTON_FRECUENTES) %>%
ggplot() +
geom_bar(aes(x = month(OCCURRED_ON_DATE, label = TRUE), fill = OFFENSE_DESCRIPTION))+
labs(title = "BOSTON: delitos año 2020",
subtitle = "Cinco delitos mas cometidos",
fill = "Cantidad",
caption= "Fuente: https://data.boston.gov/dataset", y="Cantidad",
x="MES")
CRIMENES_BOSTON %>%
filter(year(OCCURRED_ON_DATE) == 2020,
OFFENSE_DESCRIPTION %in% CRIMENES_BOSTON_FRECUENTES) %>%
ggplot() +
geom_bar(aes(x = month(OCCURRED_ON_DATE, label = TRUE), fill =OFFENSE_DESCRIPTION), position = "dodge")+
labs(title = "BOSTON: delitos año 2020",
subtitle = "Cinco delitos mas cometidos",
fill = "Cantidad",
caption= "Fuente: https://data.boston.gov/dataset", y="Cantidad",
x="MES")
#Mostramos la información de los delitos cometidos por mes para el año 2020, en un grafico de lineas
conteo <- CRIMENES_BOSTON %>%
filter(year(OCCURRED_ON_DATE) == 2020,
OFFENSE_DESCRIPTION %in% CRIMENES_BOSTON_FRECUENTES) %>%
count(OFFENSE_DESCRIPTION, mes = month(OCCURRED_ON_DATE, label = TRUE))
ggplot(conteo) +
geom_line(aes(x = mes, y = n, group = OFFENSE_DESCRIPTION, color = OFFENSE_DESCRIPTION))+
labs(title = "BOSTON: delitos año 2020",
subtitle = "Cinco delitos mas cometidos",
fill = "Cantidad",
caption= "Fuente: https://data.boston.gov/dataset", y="Cantidad",
x="MES")
#Se observa una caida a partir del mes de frebero, seguramente relacionado con la pandemia ocacionada por el COVID-19
#Mostramos los delitos cometidos por dia de la semana para el año 2020
conteo2 <- CRIMENES_BOSTON %>%
filter(year(OCCURRED_ON_DATE) == 2020,
OFFENSE_DESCRIPTION %in% CRIMENES_BOSTON_FRECUENTES) %>%
count(OFFENSE_DESCRIPTION, diasemana = wday(OCCURRED_ON_DATE, label = TRUE))
ggplot(conteo2) +
geom_line(aes(x = diasemana, y = n, group = OFFENSE_DESCRIPTION, color = OFFENSE_DESCRIPTION))+
labs(title = "BOSTON: delitos año 2020",
subtitle = "Delitos por dia de semana",
fill = "Cantidad",
caption= "Fuente: https://data.boston.gov/dataset", y="Cantidad",
x="DIA")
#Mostramos la información usando porcentajes.
conteo2 <- conteo2 %>%
group_by(OFFENSE_DESCRIPTION) %>%
mutate(pct = n / sum(n) * 100)
ggplot(conteo2) +
geom_line(aes(x = diasemana, y = pct, group = OFFENSE_DESCRIPTION, color = OFFENSE_DESCRIPTION))+
expand_limits(y = 0)+
labs(title = "BOSTON: delitos año 2020",
subtitle = "Delitos por dia de semana",
fill = "Cantidad",
caption= "Fuente: https://data.boston.gov/dataset", y="Cantidad",
x="DIA")
#Observamos que los miércoles, jueves y viernes se producen picos de los delitos e incidencia de mayor frecuencia.
#En los siguientes mapas mostramos la información georreferenciada de los delitos cometidos en BOSTON.
coordenadas <- function(campo_coordenadas) {
extraer_coordenadas <- function(lista_coords) {
data_frame(lonitude = lista_coords[1],
latitude = lista_coords[2])
}
map_df(campo_coordenadas, extraer_coordenadas)
}
CRIMENES_BOSTON <- CRIMENES_BOSTON %>%
filter(!is.na(Long), !is.na(Lat))
bbox <- make_bbox(CRIMENES_BOSTON$Long, CRIMENES_BOSTON$Lat)
MAPA_BASE <- get_stamenmap(bbox = bbox, maptype = "toner-lite", zoom = 10)
## Source : http://tile.stamen.com/toner-lite/10/309/378.png
## Source : http://tile.stamen.com/toner-lite/10/310/378.png
## Source : http://tile.stamen.com/toner-lite/10/309/379.png
## Source : http://tile.stamen.com/toner-lite/10/310/379.png
ggmap(MAPA_BASE)
#El mapa de densidad muestra la concentracion de crimenes cometidos durante el transcurso del año 2020 en la ciudad de Boston. Se observa una alta concentración de incidentes en la mancha urbana
ggmap(MAPA_BASE) +
geom_bin2d(data = CRIMENES_BOSTON, aes(x = Long, y = Lat), bins = 100) +
scale_fill_viridis_c()+
labs(title = "Densidad de crimenes",
subtitle = "BOSTON 2020",
x = "Longitud",
y = "Latitud",
fill = "Cantidad",
caption = "FUENTE: https://data.boston.gov/dataset")
#El mapa muestra las distribuciones espaciales para los delitos cometidos en Boston para el transcurso del año 2020. Se observa recurrencia en la zona NE de la ciudad.
ggmap(MAPA_BASE) +
geom_density2d(data = CRIMENES_BOSTON, aes(x = Long, y = Lat, color = stat(level))) +
scale_color_viridis_c()+
labs(title = "Distribucion espacial de crimenes",
subtitle = "BOSTON 2020",
x = "Longitud",
y = "Latitud",
fill = "Cantidad",
caption = "FUENTE: https://data.boston.gov/dataset")
#Distrubución espacial de los 5 crimenes mas frecuentes en la ciudad de Boston para el curso del año 2020. Las observacaiones se distribuyen de manera uniforme.
ggmap(MAPA_BASE) +
geom_point(data = filter(CRIMENES_BOSTON, OFFENSE_DESCRIPTION %in% CRIMENES_BOSTON_FRECUENTES),
aes(x = Long, y = Lat, color = OFFENSE_DESCRIPTION),
size = 1, alpha = 0.5) +
guides(color = guide_legend(override.aes = list(size=3, alpha = 1))) +
scale_color_brewer(palette = "Set1")+
labs(title = "Distribucion de crimenes ",
subtitle = "Boston Año 2020",
x = "Longitud",
y = "Latitud",
fill = "Cantidad",
caption = "FUENTE: https://data.boston.gov/dataset")
##MAPAS FACETADOS
#El siguiente mapa facetado muestra la distribución espacial de cada uno de los 5 crÃmenes más cometidos en la ciudad de Boston para el curso del año 2020. Observamos que los asaltos simples tienen una concentración distribuida entre el centro y el NE de la ciudad, mientras que las disputas verbales se concentran en el centro, las investigaciones de personas tienden a ser en el centro, las asistencias tienden a extenderse desde el centro y los daños a propiedades tienden a tener epicentros distintos.
ggmap(MAPA_BASE) +
geom_density2d(data = filter(CRIMENES_BOSTON, OFFENSE_DESCRIPTION %in% CRIMENES_BOSTON_FRECUENTES), aes(x = Long, y = Lat, color = stat(level))) +
scale_color_viridis_c() +
facet_wrap(~OFFENSE_DESCRIPTION, nrow =2)+
labs(title = "Distribucion espacial por tipo de crimenes",
subtitle = "BOSTON 2020",
x = "Longitud",
y = "Latitud",
fill = "Cantidad",
caption = "FUENTE: https://data.boston.gov/dataset")
#El siguiente mapa facetado muestra la concentración de cada uno de los 5 crimenes mas cometidos en la ciudad de Boston para el curso del año 2020
ggmap(MAPA_BASE) +
geom_point(data = filter(CRIMENES_BOSTON, OFFENSE_DESCRIPTION %in% CRIMENES_BOSTON_FRECUENTES),
aes(x = Long, y = Lat, color = OFFENSE_DESCRIPTION),
size = 1.5, alpha = 0.5) +
scale_color_brewer(palette = "Set1") +
facet_wrap(~OFFENSE_DESCRIPTION, nrow =2)+
labs(title = "Distribucion por tipo de crimen",
subtitle = "Boston Año 2020",
x = "Longitud",
y = "Latitud",
fill = "Cantidad",
caption = "FUENTE: https://data.boston.gov/dataset")
#COMBINANDO TIEMPO Y ESPACIO
#El siguiente mapa muestra la concentración de asaltos simples e investigación de persona durante la semana.
CRIMENES_BOSTON <- CRIMENES_BOSTON %>%
mutate(dia_semana = wday(OCCURRED_ON_DATE, label = TRUE)) %>%
filter(!is.na(dia_semana))
ggmap(MAPA_BASE) +
geom_point(data = filter(CRIMENES_BOSTON,
OFFENSE_DESCRIPTION %in% c("ASSAULT - SIMPLE", "INVESTIGATE PERSON")),
aes(x = Long, y = Lat, color = OFFENSE_DESCRIPTION), alpha = .7, size = 1.5) +
facet_wrap(~dia_semana, nrow =2)+
labs(title = "Asalto simple e investigación de personas cometidos por cada dÃa ",
subtitle = "Boston Año 2020",
x = "Longitud",
y = "Latitud",
fill = "Cantidad",
caption = "FUENTE: https://data.boston.gov/dataset")
#El siguiente grafico muestra la distribución espacial de los asaltos simples en cada dÃa de la semana. Se aprecia que el delito analizado se tiene una alta concentración los domingos en la zona NE de la ciudad, donde comienza migrar hacia el centro de la ciudad disminuyendo su frecuencia los miércoles, tendiendo a volver a migrar hacia la zona NE donde aumenta nuevamente los dÃas sábados.
ggmap(MAPA_BASE) +
geom_density2d(data = filter(CRIMENES_BOSTON, OFFENSE_DESCRIPTION == "ASSAULT - SIMPLE"),
aes(x = Long, y = Lat, color=stat(level))) +
scale_color_viridis_c() +
facet_wrap(~dia_semana, nrow =2)+
labs(title = "Distribucion espacial asaltos simples por dia",
subtitle = "BOSTON 2020",
x = "Longitud",
y = "Latitud",
fill = "Cantidad",
caption = "FUENTE: https://data.boston.gov/dataset")