Análisis de Crimenes en la ciudad de San francisco, implementacion del recurso ggmap
Librerias
library(readr) # Carga la librería 'readr' para la lectura de datos
library(dplyr) # Carga la librería 'dplyr' para manipulación de datos
library(lubridate) # Carga la librería 'lubridate' para trabajar con fechas
library(plotly) # Carga la librería 'plotly' para gráficos interactivos
library(ggplot2) # Carga la librería 'ggplot2' para visualizaciones
library(ggmap) # Carga la librería 'ggmap' para trabajar con mapas
library(plotly) # Carga la librería 'plotly' nuevamente (duplicado)
library(rgdax) # Carga la librería 'rgdax' para interactuar con la API de GDAX
library(scales)Conexión con la API
mykey = "AIzaSyABAXSsDR-f9qby3LK2o6bh0BypFWlKrm4" # Asigna la clave de API de Google a la variable 'mykey'
register_google(key = mykey) # Registra la clave de API para utilizar los servicios de Google en ggmapSelección del mapa de San Francisco (Ubicación de estudio)
myLocation <- "San Francisco" # Define la ubicación para la que se obtendrá el mapa
myMap <- get_map(location = myLocation, zoom = 12) # Obtiene el mapa de la ubicación especificada con un nivel de zoom de 12Lectura de datos
datos <- read.csv("violent_crimes.csv") # Lee el archivo CSV "violent_crimes.csv" y carga los datos en el dataframe 'datos'Exploratorio
head(datos) # Muestra las primeras filas del dataframe 'datos'## Dates Category Descript DayOfWeek
## 1 2015-05-13 23:53:00 WARRANTS WARRANT ARREST Wednesday
## 2 2015-05-13 23:53:00 OTHER OFFENSES TRAFFIC VIOLATION ARREST Wednesday
## 3 2015-05-13 23:33:00 OTHER OFFENSES TRAFFIC VIOLATION ARREST Wednesday
## 4 2015-05-13 23:30:00 LARCENY/THEFT GRAND THEFT FROM LOCKED AUTO Wednesday
## 5 2015-05-13 23:30:00 LARCENY/THEFT GRAND THEFT FROM LOCKED AUTO Wednesday
## 6 2015-05-13 23:30:00 LARCENY/THEFT GRAND THEFT FROM UNLOCKED AUTO Wednesday
## PdDistrict Resolution Address X Y
## 1 NORTHERN ARREST, BOOKED OAK ST / LAGUNA ST -122.4259 37.77460
## 2 NORTHERN ARREST, BOOKED OAK ST / LAGUNA ST -122.4259 37.77460
## 3 NORTHERN ARREST, BOOKED VANNESS AV / GREENWICH ST -122.4244 37.80041
## 4 NORTHERN NONE 1500 Block of LOMBARD ST -122.4270 37.80087
## 5 PARK NONE 100 Block of BRODERICK ST -122.4387 37.77154
## 6 INGLESIDE NONE 0 Block of TEDDY AV -122.4033 37.71343
summary(datos) # Genera un resumen estadístico de los datos en el dataframe 'datos'## Dates Category Descript DayOfWeek
## Length:878049 Length:878049 Length:878049 Length:878049
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## PdDistrict Resolution Address X
## Length:878049 Length:878049 Length:878049 Min. :-122.5
## Class :character Class :character Class :character 1st Qu.:-122.4
## Mode :character Mode :character Mode :character Median :-122.4
## Mean :-122.4
## 3rd Qu.:-122.4
## Max. :-120.5
## Y
## Min. :37.71
## 1st Qu.:37.75
## Median :37.78
## Mean :37.77
## 3rd Qu.:37.78
## Max. :90.00
Filtrado de datos
fecha_inicio <- "2005-01-01 00:00:00" # Define la fecha de inicio del período de interés
fecha_fin <- "2006-01-01 00:00:00" # Define la fecha de fin del período de interés
# Filtra los datos para incluir solo registros de crímenes de hurto (Larceny/Theft)
# que ocurrieron entre la fecha de inicio y la fecha de fin especificadas
dFilterDate <- datos %>%
filter(Category == "LARCENY/THEFT" & Dates > fecha_inicio & Dates < fecha_fin)
# Filtra los datos para incluir solo registros de crímenes de hurto (Larceny/Theft)
# sin restricción de fechas
dFilterGeneral <- datos %>%
filter(Category == "LARCENY/THEFT")
crime_data <- dFilterGeneralMapa de Distribucion Crimenes tipo LARCENY/THEFT Enero-2003
ggmap(myMap) + # Muestra el mapa utilizando ggmap
geom_point(data = dFilterDate, aes(x = X, y = Y)) + # Agrega puntos al mapa para cada evento de hurto filtrado por fecha
labs(title = "Distribución geográfica de eventos de LARCENY/THEFT\n(Enero 2005)") # Añade un título al gráficoEn esta imagen se evidencia que los crímenes de hurto (Larceny/Theft) son notablemente frecuentes en enero de 2005. Sin embargo, lo más destacado es la concentración de estos incidentes en áreas específicas como Chinatown y Japantown. Este patrón sugiere una alta incidencia del crimen en esos barrios, lo cual será objeto de un análisis más detallado más adelante.
Agrupación de datos cada 5 años
# Añadir una columna YEAR con el año de cada registro
crime_data <- crime_data %>%
mutate(YEAR = year(ymd_hms(Dates)))
# Agrupar los años en intervalos de 6 años y asignar etiquetas
crime_data <- mutate(crime_data,
SIXYEARS = ifelse(YEAR %in% seq(2003, 2015, by = 6),
paste(YEAR, "-", YEAR + 5), NA))Plot por agrupación (por 6 años) de crimenes LARCENY/THEFT ocurridos en san francisco
myMap <- get_map(location = "San Francisco", zoom = 12)
ggmap(myMap) +
geom_point(data=crime_data,
aes(x = X, y = Y, colour= SIXYEARS, size = Category, alpha = 0.5))En esta imagen resulta difícil distinguir con claridad los detalles debido a la baja resolución. Esto dificulta identificar de manera precisa las ocurrencias relacionadas con delitos de LARCENY/THEFT durante los intervalos de dos años
Mapa 2 (Zoom en el norte de San Francisco)
myMap <- get_map(location = "San Francisco", zoom = 13)
ggmap(myMap) +
geom_point(data=crime_data,
aes(x = X, y = Y, colour= SIXYEARS))En esta área nos enfocamos principalmente en la parte norte de San Francisco. Es notable cómo las ocurrencias de crímenes del tipo LARCENY/THEFT están significativamente concentradas en esta zona. Esta observación resalta la importancia de entender las dinámicas específicas de cada área urbana para abordar eficazmente los desafíos relacionados con la seguridad y la prevención del delito.
Mapa de Calor
myMap <- get_map(location = "San Francisco", zoom = 14)
ggmap(myMap, extent = "device") +
geom_density2d(data = crime_data, aes(x = X, y = Y), size = 0.3) +
stat_density2d(data = crime_data,
aes(x = X, y = Y, fill = ..level.., alpha = ..level..),
size = 0.01, bins = 16, geom = "polygon") +
scale_fill_gradient(low = "green", high = "red") +
scale_alpha(range = c(0, 0.3), guide = FALSE)Esta vista nos permite observar que zonas como Union Square y algunas calles al norte de Showplace Square exhiben un alto volumen de crímenes relacionados con LARCENY/THEFT. Estas áreas se encuentran precisamente en Chinatown, un vecindario que hemos identificado previamente como un punto focal para este tipo de crímenes. Este patrón resalta la importancia de comprender las dinámicas locales al abordar la prevención y el control del crimen en áreas urbanas específicas.
Multiples Mapas de calor por año en torno al tipo de crimen:LARCENY/THEFT
df <- filter(dFilterGeneral, YEAR_ %in% seq(2003, 2015))
# Crear el gráfico de densidad con ggmap y ajustar el tamaño de la imagen
gg <- ggmap(myMap, extent = "device", width = 10, height = 8) +
stat_density2d(data = dFilterGeneral, aes(x = X, y = Y, fill = ..level.., alpha = ..level..),
size = 0.01, bins = 16, geom = "polygon") +
scale_fill_gradient(low = "green", high = "red", guide = guide_colorbar(title = "Densidad")) +
scale_alpha(range = c(0, 0.3), guide = FALSE) +
facet_wrap(~YEAR_, ncol = 4) +
theme(plot.title = element_text(size = 20)) +
theme(plot.margin = margin(1, 1, 1, 1, "cm"))
# Mostrar el gráfico
print(gg)
Como se puede apreciar se ha mantenido el patron entorno a los lugares
ubicados al noreste de San Francuscico con mayor densidad de crimenes
del tipo LARCENY/THEFT a lo largo de los años, auque
ciertamente a desminuido lentamente para el 2015.
Conclusiones
Patrones de Crimen: Existe un patrón consistente de alta densidad de crímenes del tipo LARCENY/THEFT en áreas específicas, particularmente al noreste de San Francisco. Este patrón se ha mantenido a lo largo de los años, lo que sugiere una persistencia en la actividad delictiva en estas zonas.
Tendencia Temporal: Aunque el patrón general se ha mantenido, hay evidencia de una disminución gradual en la densidad de crímenes del tipo LARCENY/THEFT hacia el año 2015. Esto podría indicar un éxito en las medidas de prevención del crimen o cambios en la demografía o dinámica social de esas áreas.
Importancia del Análisis Espacial: El uso de técnicas de visualización espacial, como los mapas de calor y los gráficos de densidad, nos ha permitido identificar patrones espaciales significativos en la distribución de los crímenes. Esta información es crucial para informar y orientar estrategias efectivas de aplicación de la ley y prevención del crimen en áreas específicas.
En resumen, estos análisis subrayan la importancia de la comprensión espacial y temporal de los datos delictivos para informar políticas y acciones dirigidas a mejorar la seguridad pública y reducir la incidencia delictiva en áreas urbanas como San Francisco.