Análisis de senderos escolares en la Ciudad

En este trabajo nos proponemos analizar la ubicación y distribución de senderos escolares en la Ciudad Autónoma de Buenos Aires en relación a la cantidad de población en edad escolar y cantidad de delitos por Comuna.

Los Senderos Escolares fueron desarrollados por el Ministerio de Justicia y Seguridad del Gobierno de la Ciudad de Buenos Aires. Un Sendero Escolar es un camino protegido por Agentes de Prevención de la Ciudad, el Cuerpo de Agentes de Control de Tránsito y Transporte y efectivos de la Policía de la Ciudad. Su objetivo es brindar seguridad a los estudiantes en los horarios de entrada y salida del colegio.

La Ciudad Autónoma de Buenos Aires tiene 207 Senderos Escolares. Los Agentes de Prevención de la Ciudad tienen dos turnos de 6:30 a 13:30 y de 12 a 19 horas. Los Agentes van a pie, uniformados y con teléfonos reglamentarios con el propósito de preservar la seguridad de los alumnos en los trayectos hacia la escuela dese sus casas y viceversa.

La ubicación y longitud de los senderos escolares actualmente está determinada por la concentración de escuelas por radio. Creemos que sería de utilidad sumar a este análisis las variables de “Población en edad escolar” y “Cantidad de delitos” por Comuna.

A continuación presentamos el análisis que realizamos, junto con el código correspondiente. Antes de empezar importamos las librerías necesarias.

# Librerías
library(tidyverse)
library(sf)
library(wesanderson)
library(RColorBrewer)
library(leaflet)
library(readxl)
library(dplyr)
library(viridis)

1. Barrios, senderos escolares y escuelas

La primera sección consiste en un estudio descriptivo de los senderos escolares de la Ciudad Autónoma de Buenos Aires en relación a las comunas, barrios y escuelas cercanas.

En primer lugar, importamos los archivos .shp de comunas (polígonos), barrios (polígonos), senderos escolares (líneas) y establecimientos educativos (puntos) de CABA.

# Comunas. Fuente: BA Data
shape_comunas <- st_read("http://cdn.buenosaires.gob.ar/datosabiertos/datasets/comunas/CABA_comunas.geojson")
shape_comunas <- shape_comunas %>% 
  select(COMUNAS,
         BARRIOS,
         AREA, 
         geometry)
# Barrios. Fuente: BA Data
shape_barrios <- st_read("barrios/barrios_badata.shp")
shape_barrios <- shape_barrios %>% 
  select(BARRIO, 
         COMUNA, 
         AREA, 
         geometry) %>% 
  arrange(COMUNA)
# Senderos escolares. Fuente: BA Data
shape_senderos <- st_read("shf senderos seguros/senderos-escolares.shp")
shape_senderos <- shape_senderos %>% 
  select(ID, 
         Nombre, 
         Longitud, 
         geometry)
# Establecimientos educativos. Fuente: BA Data 
shape_establecimientos <- st_read("shp establecimientos educativos/establecimientos-educativos.shp")
shape_establecimientos <- shape_establecimientos %>% 
  select(OBJECTID, 
         CUE, 
         CUEANEXO, 
         DOM_ESTABL, 
         NOMBRE_EST, 
         NIVEL, 
         NIVELMODAL, 
         COMUNA, 
         BARRIO, 
         geometry)

# Filtramos solo escuelas con nivel inicial, primario y secundario modalidad común y especial 
# (no adultos, no nocturno, etc)
nivelmodal_senderos <- c("Nivel Secundario Común", "Nivel Inicial Común", "Nivel Primario Común",
                         "Nivel Inicial, Primario y Secundario Común", "Nivel Inicial y Primario Común",
                         "Nivel Superior No Universitario Común", "Nivel Inicial y Primario Especial",
                         "Nivel Inicial, Primario, Secundario y Terciario No Universitario Común",
                         " Nivel Inicial y Secundario Común", "Nivel Inicial, Primario, Secundario 
                         y Superior No Universitario Común", "Nivel Primario Especial", "Nivel Inicial,
                         Primario, Secundario  y Superior No Universitario Común - Nivel Primario y
                         Secundario Especial", "Nivel Secundario Común -Nivel Secundario de Jóvenes y
                         Adultos", "Nivel Inicial Especial", "Nivel Secundario y Superior No
                         Universitario Común - Nivel Secundario de Jóvenes y Adultos", "Nivel Inicial",
                         "Nivel Primario y Secundario Común", "Nivel Inicial, Primario y Secundario
                         Común - Nivel Primario de Jóvenes y Adultos", "Nivel Inicial y Primario
                         Especial - Nivel Secundario Común", "Nivel Inicial y Superior No Universitario
                         Común", "Nivel Secundario y Superior No Universitario Común", "Nivel Inicial,
                         Primario, Secundario y Superior No Universitario Común - Nivel Secundario de
                         Jóvenes y Adultos", "Nivel Inicial, Primario y Secundario Común - Nivel
                         Primario y Secundario de Jóvenes y Adultos", "Nivel Primario y Secundario
                         Especial")
shape_establecimientos <- shape_establecimientos %>% 
  filter(NIVELMODAL %in% nivelmodal_senderos) %>% 
  arrange(COMUNA)

A continuación, graficamos todos los elementos por separado.

1.1 Comunas

# Descriptivo
cant_comunas <- nrow(shape_comunas)
# Corregimos el sistema de coordenadas del shape de comunas
shape_comunas <- st_transform(shape_comunas, crs=st_crs(shape_senderos))

# Pre-pro
colourCount_comunas <- length(unique(shape_comunas$COMUNAS))
shape_comunas$COMUNAS <- as.factor(shape_comunas$COMUNAS) 

# Figura/mapa
grafico_comunas <- 
ggplot() +
  geom_sf(data = shape_comunas, aes(fill = COMUNAS), colour = 'beige') +
  theme_minimal() +
  theme(legend.position = "none") +
  scale_fill_manual(values = colorRampPalette(wes_palette("Darjeeling1"))(colourCount_comunas)) +
  labs(title = "Comunas",
       subtitle = "Ciudad Autónoma de Buenos Aires - 2019") +
  geom_sf_label(data = shape_comunas, aes(label = COMUNAS), size = 2, alpha = 0.5)

grafico_comunas

# Cantidad de comunas en la ciudad:
cant_comunas
## [1] 15

Con el código anterior podemos ver que hay 48 barrios en la ciudad. La figura representa su localización geográfica en el sistema de coordenadas universal transversal de Mercator.

1.2 Barrios

# Descriptivo
cant_barrios <- nrow(shape_barrios)

# Pre-pro
colourCount <- length(unique(shape_barrios$BARRIO))
shape_barrios$COMUNA <- as.factor(shape_barrios$COMUNA)

# Figura/mapa
grafico_barrios <- 
ggplot() +
  geom_sf(data = shape_barrios, aes(fill = shape_barrios$COMUNA), colour = 'beige') +
  theme_minimal() +
  theme(legend.position = "none") +
  scale_fill_manual(values = colorRampPalette(wes_palette("Darjeeling1"))(colourCount_comunas)) +
  labs(title = "Barrios",
       subtitle = "Ciudad Autónoma de Buenos Aires - 2019")
  #geom_sf_label(data = shape_barrios, aes(label = BARRIO), size = 1, alpha = 0.5)

grafico_barrios

# Cantidad de barrios en la ciudad:
cant_barrios
## [1] 48

Con el código anterior podemos ver que hay 48 barrios en la ciudad. La figura representa su localización geográfica en el sistema de coordenadas universal transversal de Mercator.

1.3 Senderos escolares

# Descriptivo
cant_senderos <- nrow(shape_senderos)
long_senderos <- sum(shape_senderos$Longitud)
long_prom_senderos <- mean(shape_senderos$Longitud)

# Pre-pro
colourCount_senderos <- length(unique(shape_senderos$ID))

# Figura/mapa
grafico_senderos <- 
ggplot() +
  geom_sf(data = shape_barrios, fill = 'beige', colour = 'cornsilk3') +
  geom_sf(data = shape_senderos, aes(color = ID)) + #'brown3'
  theme_minimal() +
  theme(legend.position = "none") +
  scale_colour_manual(values = colorRampPalette(wes_palette("Darjeeling1"))(colourCount_senderos)) +
  labs(title = "Senderos escolares",
       subtitle = "Ciudad Autónoma de Buenos Aires - 2019")

grafico_senderos

# Cantidad de senderos en la ciudad:
cant_senderos
## [1] 207
long_senderos
## [1] 415.57
round(long_prom_senderos, 2)
## [1] 2.01

El mapa anterior muestra la localización de todos los senderos escolares de la Ciudad; en total suman 207 senderos con una longitud promedio de 2 km y total de más de 415 km. Cabe destacar que muchos de ellos atraviesan más de un barrio.

1.4 Escuelas

# Descriptivo
cant_establecimientos <- nrow(shape_establecimientos)

# Pre-pro
shape_establecimientos$COMUNA <- as.factor(shape_establecimientos$COMUNA)

grafico_escuelas <- 
ggplot() +
  geom_sf(data = shape_barrios, fill = 'beige', color = 'cornsilk3') +
  geom_sf(data = shape_establecimientos, aes(color = shape_establecimientos$COMUNA) , size = 1) + #color = 'cadetblue4', size = 1) + 
  theme_minimal() +
  theme(legend.position = "none") +
  scale_colour_manual(values = colorRampPalette(wes_palette("Darjeeling1"))(colourCount_comunas)) +
  labs(title = "Establecimientos educativos",
       subtitle = "Ciudad Autónoma de Buenos Aires - 2019")

grafico_escuelas

# Cantidad de establecimientos en la ciudad:
cant_establecimientos
## [1] 1717

Por último, la figura representa la ubicación de 1717 establecimientos educativos de la Ciudad, correspondientes al nivel inicial, primario, secundario y/o terciario no universitario de modalidad común o especial.

2. Distribución de establecimientos educativos y senderos escolares por comuna

2.1 Cantidad de establecimientos educativos por comuna

Estudiemos cuántos establecimientos educativos hay en cada comuna de la Ciudad. Recordemos que estamos analizando únicamente escuelas de nivel inicial, primario y secundario de modalidad común y especial. No tomamos en cuenta establecimientos con modalidades para jóvenes y adultos.

# Agrupamos escuelas por comuna
escuelas_por_comuna <- shape_establecimientos %>% 
  select(CUEANEXO, COMUNA) %>% 
  group_by(COMUNA) %>% 
  summarise(n_escuelas = n())

summary(escuelas_por_comuna$n_escuelas)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    75.0   108.5   113.0   114.5   126.0   146.0

Lo anterior muestra que en la ciudad hay un promedio de 114.5 escuelas por comuna, con un máximo de 146 y un mínimo de 82 en las comunas 4 y 6, respectivamente. Analicemos esta información gráficamente mediante un mapa de calor.

# Pre-pro
escuelas_por_comuna <- escuelas_por_comuna %>% 
  rename(COMUNAS = COMUNA)
# Añadimos al shapefile de comunas la columna n_escuelas del dataframe escuelas_por_comuna
escuelas_por_comuna <- data.frame(escuelas_por_comuna)
escuelas_por_comuna$COMUNAS <- as.factor(escuelas_por_comuna$COMUNAS) 

shape_comunas <- shape_comunas %>% 
  left_join(escuelas_por_comuna, by = "COMUNAS")

shape_comunas <- shape_comunas %>% 
  mutate(geometry = geometry.x) %>% 
  select(COMUNAS, BARRIOS, AREA, n_escuelas, geometry)
# Mapa
ggplot() +
  geom_sf(data = shape_comunas, aes(fill = n_escuelas), colour = 'beige') +
  theme_minimal() +
  scale_fill_distiller(palette = "Spectral", name = "Cant. est. esc.") +
  labs(title = "Cantidad de establecimientos educativos por comuna",
       subtitle = "Ciudad Autónoma de Buenos Aires - 2019")

Esta visualización permite concluir que las comunas 1 y 4 son las que mayor cantidad de establecimientos educativos nuclean, con más de 140 cada una. Por su parte, la comunas del Norte de la Ciudad (13 y 12) tienen más de 120 escuelas cada una y las del Sur, poco más de 100. La comunas con menor cantidad de escuelas son la 6 y la 2. En este punto tiene sentido analizar la cantidad de establecimientos en función de la superficie de la comuna, para obtener una medida objetiva al respecto.

# Mapa
ggplot() +
  geom_sf(data = shape_comunas, aes(fill = n_escuelas/AREA*100000/2), colour = 'beige') +
  theme_minimal() +
  theme(axis.title = element_text(size = 9),
        title = element_text(size = 12)) +
  scale_fill_distiller(palette = "Spectral", name = "Cant. est. ed./área") +
  labs(title = "Cantidad de est. educ. por unidad de área por Comuna",
       subtitle = "Ciudad Autónoma de Buenos Aires - 2018",
       Fuente = "Mapa del Delito - CABA")