library(tidyverse)

Análisis de veredas rotas por densidad peatonal

Ciudad Autónoma de Buenos Aires

Introducción

La Susbsecretaría de vías peatonales, adscrita al Ministerio de Ambiente y Espacio Público, inicia sus funciones en el 2016 con el objetivo de garantizar entornos seguros de transitabilidad y accesibilidad, transformar el espacio de circulación de los peatones asi como planificar estratégicamente la ejecución e intervención de veredas tanto de obras de gobierno como de las distintas empresas de servicio público que operan día a día en la Ciudad de Buenos Aires.

Iniciada las labores administrativas, se inicia el proceso de definir los distintos procesos que determinaran el modelo de planificar y coordinar la ejecución de veredas, para ello se hizo necesario establecer criterios base y así marcar un punto de partida, dicho criterio consideró el estado de las veredas de la Ciudad junto al nivel de transitabilidad, es decir, la frecuencia del peatón sobre una cuadra, vereda o zona determinada, definiéndose este criterio a partir de la densidad peatonal.

Las variables anteriormente mencionadas, estado de veredas y densidad peatonal, representaban en su momento, los criterios con mayor relevancia para iniciar los trabajos tanto de planificación como de ejecución en calle. El análisis de las mismas se realizó llevando dichas variables a un procesamiento, haciendo uso de tecnologías de Sistemas de Información Geográfica, por una parte la capa de Densidad Peatonal fue suministrada a la subsecretaria, desconociéndose la fuente de la misma, y para el estado de las veredas la información basé se obtuvo a partir del relevamiento de las veredas, realizados por el personal de fiscalización de la subsecretaría, para así conocer los niveles de roturas y los requerimientos de ejecución.

En este sentido el trabajo práctico consiste en analizar estas variables y establecer el nivel de relación que existe entre ambas, haciendo uso de la herramienta RStudio, de suma importancia para procesar la información debido a que, para el caso de los relevamientos, la base datos llega a ser tan pesada que se dificulta trabajarla mediante Excel o Qgis. Por ello como ejercicio práctico, a fin de ejecutar algunas funciones vistas en la capacitación, de las 323.684 veredas que existen en la Ciudad, se tomaron como muestra 120.000 veredas,seleccionadas aleatoriamente considerando 24.000 veredas por cada nivel de densidad peatonal, dicha capa define para el siguiente análisis, 5 niveles (muy baja, baja, media, alta y muy alta).

Cabe mencionar que el ejercicio práctico se plantea una hipótesis en la cual las zonas con niveles alto y muy alto de densidad peatonal pudieran presentar mayor cantidad de veredas rotas por ser los lugares donde más personas transitan durante el día, de hecho se proponen como zonas de interés por la gran cantidad de peatones que circulan y que se verían afectados por las distintas incidencias que presenten las veredas y que afecten la transitabilidad del peatón.

Es por ello que RStudio se presenta como una herramienta útil al permitir procesar esta gran cantidad de información, ya que la base de datos de los relevamientos incluye distintos campos de interés que proporcionan toda la información necesaria para conocer el estado de las veredas. Se destaca que no se considera el universo de las veredas por no tener toda la información requerida para el momento, es decir, no se contaba con el relevamiento de las 323.684 veredas.

Presentación de los datos

A continuación se importa el primer dataset el cual contiene la informacion del relevamiento de las 120.000 veredas consideradas para el ejercicio.

Cabe mencionar que los ultimos 3 campos (Nivel, Valor y Estado_vereda) resultó de un join espacial que en su momento se le realizó a la capa a través de qgis, pero de tener las bases dividas perfectamente en RStudio se podia realizar el join.

La fuente de la misma es de la subsecretaria de vías peatonales (2017).

veredas_DP_muestra<- read_delim("C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv", 
    ";", escape_double = FALSE, trim_ws = TRUE)
## Parsed with column specification:
## cols(
##   .default = col_character(),
##   ID_CALLE_F = col_double(),
##   NUMERO_ORD = col_double(),
##   AREA = col_number(),
##   PERIMETRO = col_number(),
##   LONGITUDEQ = col_number(),
##   DENSIDAD_P = col_number(),
##   COMUNA = col_double(),
##   CUSER = col_logical(),
##   ESCALA_532 = col_double(),
##   SHAPE_Leng = col_number(),
##   SHAPE_Area = col_number(),
##   Valor = col_double()
## )
## See spec(...) for full column specifications.
## Warning: 8 parsing failures.
##   row   col           expected      actual                                                                                 file
## 69708 CUSER 1/0/T/F/TRUE/FALSE 27318952286 'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'
## 69827 CUSER 1/0/T/F/TRUE/FALSE 27318952286 'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'
## 69892 CUSER 1/0/T/F/TRUE/FALSE 27318952286 'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'
## 69893 CUSER 1/0/T/F/TRUE/FALSE 27318952286 'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'
## 69894 CUSER 1/0/T/F/TRUE/FALSE 27318952286 'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'
## ..... ..... .................. ........... ....................................................................................
## See problems(...) for more details.
str(veredas_DP_muestra)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 120000 obs. of  21 variables:
##  $ SMP          : chr  "038-145-028" "038-114-005" "024-037-035" "038-132-004" ...
##  $ ID_CALLE_F   : num  17107 3133 12140 3085 3146 ...
##  $ NUMERO_ORD   : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ CLAVE_VEREDA : chr  "038-145-028-17107-1" "038-114-005-3133-1" "024-037-035-12140-1" "038-132-004-3085-1" ...
##  $ AREA         : num  3.19e+09 4.92e+09 2.91e+09 4.86e+09 2.73e+09 ...
##  $ PERIMETRO    : num  2.54e+09 2.85e+09 2.41e+09 2.82e+09 2.35e+09 ...
##  $ LONGITUDEQ   : num  9.23e+08 8.34e+08 8.68e+08 8.13e+08 8.56e+08 ...
##  $ ANCHOEQUIV   : chr  "3,45728191" "5,89313165" "3,35398397" "5,98291265" ...
##  $ ESQUINA      : chr  "N" "N" "N" "N" ...
##  $ DENSIDAD_P   : num  936594 936594 6851401 936594 6851401 ...
##  $ COMUNA       : num  4 4 4 4 4 4 4 4 4 4 ...
##  $ CUSER        : logi  NA NA NA NA NA NA ...
##  $ CDATE        : chr  NA NA NA NA ...
##  $ MUSER        : chr  "MARTIN.ORTIZ" "mapa" "MARTIN.ORTIZ" "MARTIN.ORTIZ" ...
##  $ MDATE        : chr  "26/12/2017" "3/1/2019" "26/12/2017" "26/12/2017" ...
##  $ ESCALA_532   : num  84 84 49 84 49 84 46 46 46 49 ...
##  $ SHAPE_Leng   : num  2.54e+09 2.85e+09 2.41e+09 2.82e+09 2.35e+09 ...
##  $ SHAPE_Area   : num  3.19e+09 4.92e+09 2.91e+09 4.86e+09 2.73e+09 ...
##  $ Nivel        : chr  "Muy baja" "Muy baja" "Muy baja" "Muy baja" ...
##  $ Valor        : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ Estado_vereda: chr  "Con incidencia" "Con incidencia" "Sin incidencias" "Sin incidencias" ...
##  - attr(*, "problems")=Classes 'tbl_df', 'tbl' and 'data.frame': 8 obs. of  5 variables:
##   ..$ row     : int  69708 69827 69892 69893 69894 115965 116438 116439
##   ..$ col     : chr  "CUSER" "CUSER" "CUSER" "CUSER" ...
##   ..$ expected: chr  "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" "1/0/T/F/TRUE/FALSE" ...
##   ..$ actual  : chr  "27318952286" "27318952286" "27318952286" "27318952286" ...
##   ..$ file    : chr  "'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'" "'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'" "'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'" "'C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/veredas con DP muestra.csv'" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   SMP = col_character(),
##   ..   ID_CALLE_F = col_double(),
##   ..   NUMERO_ORD = col_double(),
##   ..   CLAVE_VEREDA = col_character(),
##   ..   AREA = col_number(),
##   ..   PERIMETRO = col_number(),
##   ..   LONGITUDEQ = col_number(),
##   ..   ANCHOEQUIV = col_character(),
##   ..   ESQUINA = col_character(),
##   ..   DENSIDAD_P = col_number(),
##   ..   COMUNA = col_double(),
##   ..   CUSER = col_logical(),
##   ..   CDATE = col_character(),
##   ..   MUSER = col_character(),
##   ..   MDATE = col_character(),
##   ..   ESCALA_532 = col_double(),
##   ..   SHAPE_Leng = col_number(),
##   ..   SHAPE_Area = col_number(),
##   ..   Nivel = col_character(),
##   ..   Valor = col_double(),
##   ..   Estado_vereda = col_character()
##   .. )
head(veredas_DP_muestra)
Con el fin de presentar graficamente el estado de las veredas, se realiza un grafico de barras con la proporción que le corresponde a cada categoria (Con o sin incidencia)
seleccion_veredas <- veredas_DP_muestra%>%
  group_by(Nivel,Valor,Estado_vereda)%>%
  summarise(cantidad_de_veredas=n())
head(seleccion_veredas)
ggplot(seleccion_veredas) +
    geom_bar(aes(x = Nivel, weight = cantidad_de_veredas,color=Estado_vereda))

Luego de visualizar la cantidad de veredas con incidencias por cada nivel de desnidad peatonal, se hace necesario analizarlas por separado a través de la tecnica del facetado.
ggplot(seleccion_veredas) + 
    geom_bar(aes(x = Estado_vereda, weight = cantidad_de_veredas)) +
    facet_wrap(~Nivel)

Graficamos solo las veredas con incidencias para ver la dispersion que tienen y realizar el análisis de correlación y regresión lineal
veredas_con_incidencias <- veredas_DP_muestra%>%
  
  filter(Estado_vereda=="Con incidencia")%>%
  group_by(Nivel,Valor,Estado_vereda)%>%
  summarise(cantidad_de_veredas=n())
ggplot(data = veredas_con_incidencias) + 
    geom_point(aes(x = Valor, y = cantidad_de_veredas)) +
    labs(title = "Veredas con incidencias por zonas de densidad peatonal",
         subtitle = "1=Muy bajo, 2=Bajo, 3=Medio, 4=Alto, 5=Muy alto",
         y = "Veredas con incidencias")

cor(veredas_con_incidencias$Valor,veredas_con_incidencias$cantidad_de_veredas)
## [1] -0.9215703
modelo_lineal <- lm(cantidad_de_veredas~Valor,data=veredas_con_incidencias)
summary(modelo_lineal)
## 
## Call:
## lm(formula = cantidad_de_veredas ~ Valor, data = veredas_con_incidencias)
## 
## Residuals:
##      1      2      3      4      5 
## -338.8  836.4 -845.2  467.6 -120.0 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  14007.4      803.7  17.428 0.000412 ***
## Valor         -996.4      242.3  -4.112 0.026054 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 766.3 on 3 degrees of freedom
## Multiple R-squared:  0.8493, Adjusted R-squared:  0.7991 
## F-statistic: 16.91 on 1 and 3 DF,  p-value: 0.02605
Con el objetivo de análizar la relacion existente entre la cantidad de veredas con incidencias en cada una de laz zonas de densidad peatonal, se procede a generar un dataset filtrando el estado de la vereda (Con incidencia) y agrupandolos para su respectiva representación.
veredas_con_incidencias <- veredas_DP_muestra%>%
  
  filter(Estado_vereda=="Con incidencia")%>%
  group_by(Nivel,Valor,Estado_vereda)%>%
  summarise(cantidad_de_veredas=n())
head(veredas_con_incidencias)
A fin de definir el nivel de relación que existe entre las variables objeto de estudio, se procede a ejecutar la correlación con la información contenida en el dataset generado a partir de las veredas con incidencias contenidas en cada zona o nivel de densidad peatonal. Para ello se le fue asignado un valor a cada nivel.
  • Valor 1 = Nivel muy bajo.
  • Valor 2 = Nivel bajo.
  • Valor 3 = Nivel medio.
  • Valor 4 = Nivel alto.
  • Valor 5 = Nivel muy alto.
Correlación entre las dos variables objeto de estudio.
cor(veredas_con_incidencias$Valor,veredas_con_incidencias$cantidad_de_veredas)
## [1] -0.9215703
Ejecutamos el modelo de regresión lineal para medir la correlación entre las zonas de densidad peatonal y la proporción de incidencias.
modelo_lineal <- lm(cantidad_de_veredas~Valor,data=veredas_con_incidencias)
summary(modelo_lineal)
## 
## Call:
## lm(formula = cantidad_de_veredas ~ Valor, data = veredas_con_incidencias)
## 
## Residuals:
##      1      2      3      4      5 
## -338.8  836.4 -845.2  467.6 -120.0 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  14007.4      803.7  17.428 0.000412 ***
## Valor         -996.4      242.3  -4.112 0.026054 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 766.3 on 3 degrees of freedom
## Multiple R-squared:  0.8493, Adjusted R-squared:  0.7991 
## F-statistic: 16.91 on 1 and 3 DF,  p-value: 0.02605
Obteniendo los datos del modelo de regresión lineal se hace necesario graficarla a partir del dato de intercepción y pendiente.
ggplot(data = veredas_con_incidencias) + 
    geom_point(aes(x = Valor, y = cantidad_de_veredas)) +
    labs(title = "Recta de regresión (nivel de densidad peatonal por veredas con incidencias)",
         subtitle = "1=Muy bajo, 2=Bajo, 3=Medio, 4=Alto, 5=Muy alto",
         y = "Veredas con incidencias",
         caption="con linea regresion")+
  geom_abline(aes(intercept=14007.4,slope=-996.4),color="blue")

Mapa de densidad peatonal

Con el fin de visualizar cartograficamente la densidad peatonal, se procedió a transformar el shp de la capa “densidad peatonal” en un geojson para asi importarlo como un dataset a Rstudio.

library(sf)
niveles_DP<- st_read("C:/Users/Juan Espinoza.MAYEP29NO00203/Downloads/0.Lopez/Niveles_DP.geojson")
## Reading layer `Niveles_DP' from data source `C:\Users\Juan Espinoza.MAYEP29NO00203\Downloads\0.Lopez\Niveles_DP.geojson' using driver `GeoJSON'
## Simple feature collection with 532 features and 8 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -58.53104 ymin: -34.70505 xmax: -58.33433 ymax: -34.53044
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs
summary(niveles_DP)
##    cartodb_id       id_zona             Pond_3           Escala_532   
##  Min.   :  1.0   Min.   :20010101   Min.   :   282.9   Min.   :  1.0  
##  1st Qu.:133.8   1st Qu.:20040402   1st Qu.: 12323.8   1st Qu.:133.8  
##  Median :266.5   Median :20090508   Median : 26184.3   Median :266.5  
##  Mean   :266.1   Mean   :20095486   Mean   : 38345.2   Mean   :266.5  
##  3rd Qu.:398.2   3rd Qu.:20140205   3rd Qu.: 53976.2   3rd Qu.:399.2  
##  Max.   :531.0   Max.   :20210204   Max.   :229715.9   Max.   :532.0  
##    Escala_10          DP_100         Buffer_DP             Nivel    
##  Min.   : 1.000   Min.   :  0.00   Min.   : 50.0   1. Muy bajo:107  
##  1st Qu.: 3.000   1st Qu.: 25.00   1st Qu.: 50.0   2. Bajo    :106  
##  Median : 5.500   Median : 50.00   Median :100.0   3. Medio   :106  
##  Mean   : 5.508   Mean   : 50.09   Mean   :161.6   4. Alto    :106  
##  3rd Qu.: 8.000   3rd Qu.: 75.00   3rd Qu.:200.0   5. Muy alto:107  
##  Max.   :10.000   Max.   :100.00   Max.   :300.0                    
##           geometry  
##  MULTIPOLYGON :532  
##  epsg:4326    :  0  
##  +proj=long...:  0  
##                     
##                     
## 

Notese como en el mapa a continuación se representa la densidad peatonal categorizada en niveles, en teoría aquellas zonas donde el nivel es alto (color amarillo y verede) sería donde transitan mas personas en un determinado momento, contrario a las zonas con niveles bajo (Azul y azul mas oscuro) zonas donde transitan menos peatones por veredas.

ggplot()+geom_sf(data=niveles_DP,aes(fill=Nivel))+
    scale_fill_viridis_d()+
    labs(title = "Densidad peatonal",
    subtitle = "Ciudad Autónoma de Buenos Aires")

Conclusión

De la muestra de veredas seleccionadas por cada nivel de densidad peatonal se puede decir que las zonas con baja y muy baja densidad, para el 2017 tenía más veredas con incidencias que las zonas con nivel medio, alto y muy alto, lo cual anula el planteamiento inicial donde se consideraba que las zonas con más densidad peatonal son aquellas donde más veredas rotas existían debido a que es donde transitan más personas y pudiera agregarse que son las zonas donde las empresas de servicio público en su mayoría intervienen constantemente generando una apertura en la vereda.

De este hecho se puede comentar que en las zonas donde más personas transitan son aquellas donde el uso principal es comercial, zonas que concentran distintos tipos de locales comerciales u oficinas y pudiera decirse que el frentista es más preocupado y responsable con su frente y por ende con la vereda.

Lo anteriormente explicado se puede visualizar de otra manera en el gráfico de puntos “veredas con incidencias por zonas de densidad peatonal” donde la mayor cantidad de veredas con incidencias se ubican en las zonas baja y muy baja (Valor 1 y 2 en el gráfico).

En cuanto a la correlación, el valor fue de -0.9215703 lo cual nos indica inicialmente que la correlación es negativa y que las variables no son independientes una de la otra, ambas están relacionadas y por ende la correlación entre ambas es fuerte por acercarse en este caso a -1.

Debido a que la correlación es inversa se puede decir que la cantidad de veredas con incidencias aumenta a medida que el nivel de densidad peatonal es más bajo por lo tanto la asociación no es perfecta pero inversa.

Finalmente se puede mencionar que como consecuencia de que la base de relevamiento data de un periodo determinado en el 2017 correspondiente a una solicitud de relevamiento, no se pudo hacer el ejercicio con la totalidad de las veredas de la Ciudad de Buenos Aires. Para el breve analisis se consideraron 120.000 veredas que al ser procesadas en RStudio funcinó perfectamente y sin el tiempo que implica hacer los mismos procesos en Excel o Qgis, de procesarse las 323.684 veredas de la Ciudad de Buenos Aires la heramienta perfectamente cumpliría el objetivo. Por ello, RStudio se presenta como una gran herramienta para la subsecretaria de vias peatonales dado que se trabaja diariamente con grandes bases de datos donde su procesamiento se dificulta al ser trabajadas en conjunto.