1. Breve análisis demográfico de personas mayores (+60 años) en la Ciudad Autónoma de Buenos Aires

Cargamos librerias a utilizar

library(tidyverse)
library(sf)
library(ggmap)
library(leaflet)
library(sp)
library(tmap)
library(spdep)
library(gstat)
library(spatstat)
library(dplyr)

Importamos dataset en formato shapefile de las comunas de la Ciudad Autónoma de Buenos Aires con población proyectada a 2021

comunas_pob_21_mas60 <- st_read("comunas_pobproy21_m60.shp", stringsAsFactors = TRUE)
## Reading layer `comunas_pobproy21_m60' from data source 
##   `E:\Documentos\BDEIT\Geoestadistica\TPF\comunas_pobproy21_m60.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 15 features and 12 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -58.53152 ymin: -34.7053 xmax: -58.33515 ymax: -34.5265
## Geodetic CRS:  WGS 84

Vemos que variables contiene el dataset de comunas

summary(comunas_pob_21_mas60)
##                                                                             BARRIOS 
##  AGRONOMIA - CHACARITA -  PARQUE CHAS -  PATERNAL - VILLA CRESPO - VILLA ORTUZAR:1  
##  ALMAGRO - BOEDO                                                                :1  
##  BALVANERA - SAN CRISTOBAL                                                      :1  
##  BARRACAS - BOCA - NUEVA POMPEYA - PARQUE PATRICIOS                             :1  
##  BELGRANO - COLEGIALES - NU<U+FFFD>EZ                                           :1  
##  CABALLITO                                                                      :1  
##  (Other)                                                                        :9  
##    PERIMETRO          AREA             COMUNAS           ID      
##  Min.   :10486   Min.   : 6317265   Min.   : 1.0   Min.   : 1.0  
##  1st Qu.:17532   1st Qu.: 9636965   1st Qu.: 4.5   1st Qu.: 4.5  
##  Median :19988   Median :14322897   Median : 8.0   Median : 8.0  
##  Mean   :20587   Mean   :13604581   Mean   : 8.0   Mean   : 8.0  
##  3rd Qu.:21790   3rd Qu.:16175589   3rd Qu.:11.5   3rd Qu.:11.5  
##  Max.   :36102   Max.   :22216902   Max.   :15.0   Max.   :15.0  
##                                                                  
##             OBJETO       COMUNA       POB21_M60      X._CABA_M60 X._COM_M60
##  LIMITE COMUNAL:15   Min.   : 1.0   Min.   :31869   21%    :3    5%:1      
##                      1st Qu.: 4.5   1st Qu.:39506   23%    :3    6%:7      
##                      Median : 8.0   Median :42737   24%    :3    7%:4      
##                      Mean   : 8.0   Mean   :44204   14%    :1    8%:2      
##                      3rd Qu.:11.5   3rd Qu.:49243   17%    :1    9%:1      
##                      Max.   :15.0   Max.   :58706   19%    :1              
##                                                     (Other):3              
##    P_COMU_M60     P_CABA_M60             geometry 
##  Min.   :14.0   Min.   :5.000   MULTIPOLYGON :15  
##  1st Qu.:21.0   1st Qu.:6.000   epsg:4326    : 0  
##  Median :23.0   Median :6.000   +proj=long...: 0  
##  Mean   :21.8   Mean   :6.667                     
##  3rd Qu.:24.0   3rd Qu.:7.000                     
##  Max.   :26.0   Max.   :9.000                     
## 

Filtramos las variables de interés

comunas_pob_21_mas60 <- comunas_pob_21_mas60 %>% 
select(1,4,8,11,12,13)

Importamos shape de los radios censales de CABA

rc_pob_21_mas55 <- st_read("rc_pob_proy21_mas55.shp", stringsAsFactors = TRUE)
## Reading layer `rc_pob_proy21_mas55' from data source 
##   `E:\Documentos\BDEIT\Geoestadistica\TPF\rc_pob_proy21_mas55.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 3553 features and 67 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -58.53152 ymin: -34.70529 xmax: -58.33514 ymax: -34.52755
## Geodetic CRS:  WGS 84

Vemos que variables contiene el dataset de radios censales

glimpse(rc_pob_21_mas55)
## Rows: 3,553
## Columns: 68
## $ REDCODE    <fct> 020130302, 020131101, 020130104, 020130103, 020130102, 0201~
## $ P_TOTAL    <dbl> 585, 495, 763, 612, 770, 835, 719, 606, 709, 509, 882, 456,~
## $ P_A17      <dbl> 86, 104, 115, 94, 127, 145, 121, 111, 94, 96, 166, 54, 93, ~
## $ P_0A3      <dbl> 24, 14, 39, 35, 33, 64, 26, 18, 27, 14, 40, 13, 31, 50, 49,~
## $ P_4A5      <dbl> 7, 7, 12, 11, 14, 16, 11, 11, 12, 12, 23, 6, 11, 28, 27, 10~
## $ P_6A12     <dbl> 38, 44, 32, 31, 44, 43, 49, 47, 26, 37, 69, 14, 32, 72, 63,~
## $ P_13A17    <dbl> 17, 39, 32, 17, 36, 22, 35, 35, 29, 33, 34, 21, 19, 48, 48,~
## $ P_18A      <dbl> 499, 391, 648, 518, 643, 690, 598, 495, 615, 413, 716, 402,~
## $ P_18A29    <dbl> 103, 70, 137, 91, 109, 112, 120, 102, 96, 87, 147, 81, 117,~
## $ P_30A54    <dbl> 249, 150, 327, 204, 290, 417, 251, 211, 247, 149, 367, 150,~
## $ P_55A69    <dbl> 82, 92, 102, 145, 135, 104, 115, 104, 146, 103, 130, 89, 13~
## $ P_70A      <dbl> 65, 79, 82, 78, 109, 57, 112, 78, 126, 74, 72, 82, 89, 151,~
## $ M_TOTAL    <dbl> 318, 269, 384, 326, 397, 433, 404, 323, 368, 269, 452, 237,~
## $ M_A17      <dbl> 51, 41, 52, 48, 65, 86, 66, 47, 40, 45, 78, 24, 51, 89, 76,~
## $ M_0A3      <dbl> 14, 7, 19, 14, 16, 38, 14, 9, 14, 5, 16, 5, 17, 23, 19, 15,~
## $ M_4A5      <dbl> 4, 2, 6, 9, 8, 9, 4, 3, 4, 5, 12, 3, 6, 15, 7, 3, 6, 1, 7, ~
## $ M_6A12     <dbl> 24, 20, 11, 14, 23, 25, 26, 22, 7, 21, 32, 7, 17, 35, 29, 9~
## $ M_13A17    <dbl> 9, 12, 16, 11, 18, 14, 22, 13, 15, 14, 18, 9, 11, 16, 21, 1~
## $ M_18A      <dbl> 267, 228, 332, 278, 332, 347, 338, 276, 328, 224, 374, 213,~
## $ M_18A29    <dbl> 56, 37, 64, 44, 56, 58, 61, 44, 45, 37, 71, 39, 60, 87, 67,~
## $ M_30A54    <dbl> 120, 88, 162, 107, 143, 200, 133, 114, 121, 88, 186, 79, 12~
## $ M_55A69    <dbl> 46, 54, 61, 79, 64, 54, 72, 66, 86, 54, 69, 50, 76, 101, 72~
## $ M_70A      <dbl> 45, 49, 45, 48, 69, 35, 72, 52, 76, 45, 48, 45, 67, 91, 44,~
## $ V_TOTAL    <dbl> 267, 226, 379, 286, 373, 402, 315, 283, 341, 240, 430, 219,~
## $ V_A17      <dbl> 35, 63, 63, 46, 62, 59, 55, 64, 54, 51, 88, 30, 42, 109, 11~
## $ V_0A3      <dbl> 10, 7, 20, 21, 17, 26, 12, 9, 13, 9, 24, 8, 14, 27, 30, 13,~
## $ V_4A5      <dbl> 3, 5, 6, 2, 6, 7, 7, 8, 8, 7, 11, 3, 5, 13, 20, 7, 9, 8, 5,~
## $ V_6A12     <dbl> 14, 24, 21, 17, 21, 18, 23, 25, 19, 16, 37, 7, 15, 37, 34, ~
## $ V_13A17    <dbl> 8, 27, 16, 6, 18, 8, 13, 22, 14, 19, 16, 12, 8, 32, 27, 10,~
## $ V_18A      <dbl> 232, 163, 316, 240, 311, 343, 260, 219, 287, 189, 342, 189,~
## $ V_18A29    <dbl> 47, 33, 73, 47, 53, 54, 59, 58, 51, 50, 76, 42, 57, 66, 76,~
## $ V_30A54    <dbl> 129, 62, 165, 97, 147, 217, 118, 97, 126, 61, 181, 71, 107,~
## $ V_55A69    <dbl> 36, 38, 41, 66, 71, 50, 43, 38, 60, 49, 61, 39, 57, 71, 53,~
## $ V_70A      <dbl> 20, 30, 37, 30, 40, 22, 40, 26, 50, 29, 24, 37, 22, 60, 31,~
## $ P18A_SIN_I <int> 8, 3, 7, 15, 6, 4, 15, 19, 3, 6, 3, 4, 5, 16, 14, 2, 33, 24~
## $ P18A_PRIMA <int> 489, 387, 635, 503, 632, 686, 582, 468, 601, 405, 707, 399,~
## $ P18A_SECUN <int> 414, 342, 548, 433, 555, 636, 470, 371, 520, 341, 626, 337,~
## $ P18A_SOLOP <int> 75, 45, 87, 70, 77, 50, 112, 97, 81, 64, 81, 62, 87, 170, 1~
## $ P18A_SOLOS <int> 215, 164, 279, 228, 297, 252, 290, 244, 304, 164, 299, 178,~
## $ P18A_TERCI <int> 49, 38, 65, 60, 60, 67, 49, 37, 55, 25, 66, 51, 55, 100, 61~
## $ P18A_UNIVE <int> 150, 140, 204, 145, 198, 317, 131, 90, 161, 152, 261, 108, ~
## $ P4A5_ASIST <int> 7, 7, 12, 11, 12, 16, 11, 11, 12, 12, 21, 6, 11, 28, 25, 10~
## $ P6A12_ASIS <int> 38, 44, 32, 31, 44, 43, 49, 46, 26, 37, 69, 14, 31, 71, 62,~
## $ P1317_ASIS <int> 17, 38, 29, 17, 36, 22, 28, 31, 28, 31, 32, 21, 19, 44, 44,~
## $ P1317_SIN_ <int> 17, 39, 29, 17, 36, 22, 34, 32, 28, 32, 34, 21, 19, 47, 48,~
## $ P1829_ASIS <int> 3, 10, 9, 12, 6, 6, 5, 15, 5, 9, 11, 6, 5, 8, 16, 4, 13, 9,~
## $ P1829_SIN_ <int> 11, 12, 17, 18, 12, 15, 13, 22, 9, 13, 20, 8, 13, 20, 32, 6~
## $ P1425_ASIS <int> 16, 40, 31, 25, 31, 23, 25, 39, 33, 35, 39, 22, 21, 42, 51,~
## $ P1425_SIN_ <int> 23, 42, 39, 30, 37, 28, 33, 47, 37, 37, 47, 23, 27, 52, 69,~
## $ P1425      <int> 83, 88, 101, 65, 92, 90, 112, 101, 88, 89, 117, 75, 83, 132~
## $ IDPROV     <fct> 02, 02, 02, 02, 02, 02, 02, 02, 02, 02, 02, 02, 02, 02, 02,~
## $ PROV       <fct> Ciudad Autónoma de Buenos Aires, Ciudad Autónoma de Buenos ~
## $ IDDPTO     <fct> 02013, 02013, 02013, 02013, 02013, 02013, 02013, 02012, 020~
## $ DPTO       <fct> Comuna 13, Comuna 13, Comuna 13, Comuna 13, Comuna 13, Comu~
## $ REDCODE_1  <fct> 020130302, 020131101, 020130104, 020130103, 020130102, 0201~
## $ RADIOS_POB <dbl> 654, 568, 763, 612, 770, 835, 733, 606, 709, 509, 882, 457,~
## $ RADIOS_HOG <dbl> 270, 172, 367, 258, 343, 421, 296, 249, 314, 185, 386, 217,~
## $ RADIOS_LAT <dbl> -34.53827, -34.54318, -34.53693, -34.53716, -34.53769, -34.~
## $ RADIOS_LON <dbl> -58.45845, -58.44252, -58.46702, -58.46880, -58.47100, -58.~
## $ RADIOS_SUP <dbl> 1.760, 2.239, 0.046, 0.068, 0.054, 0.013, 0.090, 0.100, 0.0~
## $ AREA_RC    <dbl> 2141937, 2724911, 56329, 82759, 65459, 15703, 109003, 12168~
## $ POBTOT.55  <dbl> 147, 171, 184, 223, 244, 161, 227, 182, 272, 177, 202, 171,~
## $ COD_RC     <dbl> 20130302, 20131101, 20130104, 20130103, 20130102, 20130105,~
## $ RC         <dbl> 20130302, 20131101, 20130104, 20130103, 20130102, 20130105,~
## $ ESTIM_2020 <dbl> 1303, 589, 1520, 1219, 1534, 866, 1460, 1097, 736, 528, 915~
## $ RC_2       <dbl> 20130302, 20131101, 20130104, 20130103, 20130102, 20130105,~
## $ P21_MAS55  <dbl> 157, 182, 196, 237, 260, 171, 242, 194, 290, 189, 215, 182,~
## $ geometry   <MULTIPOLYGON [°]> MULTIPOLYGON (((-58.46739 -..., MULTIPOLYGON (~

Filtramos las variables de interés

rc_pob_21_mas55 <- rc_pob_21_mas55 %>% 
select(67,60,68)

Mapeamos la población mayor a 60 años proyectada a 2021 por comuna

tm_shape(comunas_pob_21_mas60) + 
  tm_fill("POB21_M60",title="Población mayor 60 años",style = "quantile", n = 5, palette = "Reds") +
  tm_borders(alpha = 0.8) +
  tm_layout(main.title = "Población mayor a 60 años por Comuna (Proyección 2021)", main.title.size = 0.7 ,
            legend.position = c("right", "bottom"), legend.title.size = 0.8)

La mayor parte de la población mayor a 60 años se localiza hacia el norte de la ciudad (comunas 12,13 y 14) y en el centro (comunas 6 y 7)

Transformamos la variable de COMUNAS a factor

comunas_pob_21_mas60$COMUNAS <- as.factor(comunas_pob_21_mas60$COMUNAS)

Graficamos la cantidad de población +60 años por comuna

comunas_pob_21_mas60 %>%
  select(COMUNAS,POB21_M60) %>% 
  ggplot(mapping = aes(x = fct_reorder(COMUNAS,POB21_M60),
                       y= POB21_M60))+
  geom_col(fill="firebrick3")+
  labs(title = "Población mayor a 60 años por Comuna",
       subtitle = "(Proyección 2021)",
       x = "Comunas",
       y = "Población mayor a 60 años",
       fill = "COMUNAS")+
  theme(axis.text.x = element_text(angle = 90))+
  theme(legend.position = "none")

Mapeamos el % de población mayor a 60 años en relación al total por comuna (Proyección 2021)

tm_shape(comunas_pob_21_mas60) + 
  tm_fill("P_COMU_M60",title="% de población mayor a 60 años por Comuna",style = "quantile", n = 5, palette = "Reds") +
  tm_borders(alpha = 0.8) +
  tm_layout(main.title = "% Población mayor a 60 años por Comuna (Proyección 2021)", main.title.size = 0.7 ,
            legend.position = c("right", "bottom"), legend.title.size = 0.8)

En este caso, identificamos que los porcentajes más altos se encuentran en las comunas 2,13 y 14 al norte, y en las comunas 6 y 11 al centro-oeste de la ciudad.

Definimos los intervalos de población por radio censal

custom.breaks <- c(0,100,200,300,400,500,898)

Mapeamos los radios censales según el total de población mayor a 55 años

tm_shape(rc_pob_21_mas55) + 
  tm_fill("P21_MAS55",title="Población mayor a 55 años",breaks=custom.breaks,palette="Reds")  +
  tm_borders(alpha = 0.5) +
  tm_layout(main.title = "Población mayor a 55 años por radio censal (Proyección 2021)", main.title.size = 0.5 ,
            legend.position = c("right", "bottom"), legend.title.size = 0.5)

Se identifican algunas zonas con mayor cantidad de población mayor a 55 años en los barrios de Recoleta, Belgrano, Palermo, Villa del Parque, Villa Lugano y sobre Av. Rivadavia (Comuna 5,6 y 7).

2. Análisis geográfico de siniestros viales de personas mayores (+60 años)

Importamos base en formato csv de los siniestros viales ocurridos entre 2015 y 2018

siniestros_viales <- read.csv("Victimas_siniestros_2015-2018.csv", stringsAsFactors = TRUE)

Damos un vistazo a las variables del dataset

glimpse(siniestros_viales)
## Rows: 33,234
## Columns: 29
## $ causa                        <fct> homicidio, homicidio, homicidio, homicidi~
## $ rol                          <fct> conductor, , peaton, , pasajero, conducto~
## $ tipo                         <fct> moto, , peaton, , camion, moto, moto, aut~
## $ sexo                         <fct> , , femenino, , masculino, , masculino, m~
## $ edad                         <int> NA, NA, NA, NA, NA, NA, 18, 26, 24, NA, 3~
## $ mes                          <int> 2, 2, 2, 3, 4, 4, 1, 1, 3, 9, 4, 8, 8, 10~
## $ periodo                      <int> 2015, 2015, 2015, 2015, 2015, 2015, 2015,~
## $ fecha                        <fct> 2/14/2015, 2/25/2015, 2/27/2015, 03-02-15~
## $ hora                         <fct> 19:00:00, 3:00:00, 8:00:00, 18:30:00, 1:2~
## $ lugar_hecho                  <fct> "cafayate y severo garcia grande de zeque~
## $ direccion_normalizada        <fct> "cafayate y garcia grande de zequeira, se~
## $ tipo_calle                   <fct> calle, avenida, avenida, calle, avenida, ~
## $ direccion_normalizada_arcgis <fct> "cafayate & garcia grande de zequeira, se~
## $ calle1                       <fct> "cafayate", "lugones, leopoldo av.", "juj~
## $ altura                       <int> NA, NA, NA, 1730, 2434, NA, NA, 2850, NA,~
## $ calle2                       <fct> "garcia grande de zequeira, severo", "uda~
## $ codigo_calle                 <int> 3015, 12152, 10013, 12089, 4039, 12112, 1~
## $ codigo_cruce                 <int> 27019, 22003, 9010, NA, NA, 3028, 9010, 0~
## $ geocodificacion              <fct> point(95841.9588592157 97312.345524462), ~
## $ semestre                     <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2,~
## $ x                            <dbl> -58.50866, -58.44768, -58.40352, -58.3913~
## $ y                            <dbl> -34.65349, -34.54351, -34.61884, -34.6031~
## $ geom                         <fct> 0101000020E610000057E042B51B414DC00841988~
## $ cantidad_victimas            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1,~
## $ comuna                       <int> 9, 13, 3, 1, 15, 1, 1, 7, 9, 15, 14, 14, ~
## $ geom_3857                    <fct> 0101000020110F0000DE9B958180D858C1EC80296~
## $ tipo_colision1               <fct> motovehiculo - vehiculo, , peaton - vehic~
## $ participantes_victimas       <fct> "moto", "NULL", "peaton", "NULL", "camion~
## $ participantes_acusados       <fct> "automovil", "", "\"transporte publico\""~

Filtramos los siniestros viales de personas mayores a 60 años (3273 siniestros)

siniestros_viales_60 <- siniestros_viales %>% 
  select(1,5,7,11,19,21,22,23,24,25,26)%>%
  filter(edad > 60)

Graficamos la cantidad de accidentes viales de personas +60 años ocurridos en los años 2015, 2016, 2017 y 2018 por tipo (homicidio o lesión)

ggplot(siniestros_viales_60)+ 
    geom_bar(aes(x = periodo, fill=causa)) +
    labs(title = "Cantidad de accidentes viales de personas mayores a 60 años",
         subtitle = "Por año",
         x = "Año",
         y = "Cantidad",
         fill = "Tipo de Siniestro vial",
         caption = "Fuente: BA Data")

Transformamos el csv a formato geográfico

siniestros_viales_geo <- st_as_sf(siniestros_viales_60, coords = c("x", "y"), crs = 4326, na.fail=FALSE)

Eliminamos los NA

siniestros_viales_geo <-na.omit(siniestros_viales_geo)
siniestros_viales_geo
## Simple feature collection with 3204 features and 9 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -58.53107 ymin: -34.70374 xmax: -58.35662 ymax: -34.53584
## Geodetic CRS:  WGS 84
## First 10 features:
##        causa edad periodo                       direccion_normalizada
## 1  homicidio   64    2015 corrientes av. y scalabrini ortiz, raul av.
## 2  homicidio   61    2017   maipu y peron, juan domingo, tte. general
## 3  homicidio   61    2017                        bonifacio, jose 2114
## 4  homicidio   72    2015                             san martin 1225
## 5  homicidio   70    2015                      27 de febrero av. 5509
## 6  homicidio   73    2015           pueyrredon, honorio, dr. av. 1137
## 7  homicidio   66    2015 santa fe av. y fray justo santamaria de oro
## 8  homicidio   70    2016                            ceretti y nuñez
## 9  homicidio   79    2015                            la plata av. 655
## 10 homicidio   81    2016                          castro y pavon av.
##                             geocodificacion
## 1  point(102250.450183927 103260.755742479)
## 2  point(107958.580695741 102597.492340379)
## 3        point(100559.089684 99787.0206996)
## 4         point(108266.618089 104023.69612)
## 5  POINT(103543.564772744 96344.0586567678)
## 6         point(101586.10004 102500.038192)
## 7  point(103570.930586172 105543.599263887)
## 8  point(96492.8903044916 106832.194845936)
## 9        point(103259.318628 100714.261804)
## 10 point(104049.285186283 99858.3753165837)
##                                                  geom cantidad_victimas comuna
## 1  0101000020E6100000AF3DED7E29384DC0C16071ABC84C41C0                 1     15
## 2  0101000020E6100000F931EA3B32304DC098F8C5AA8B4D41C0                 1      1
## 3  0101000020E6100000722CDD9D853A4DC0A0F99AD3CA5041C0                 1      7
## 4  0101000020E61000006E551DA4C42F4DC05927684FE64B41C0                 1      1
## 5  0101000020E6100000A57FE1A25A364DC0CA13FF9FC35441C0                 1      8
## 6  0101000020E6100000FF2B30C516394DC0F767BE69A94D41C0                 1     15
## 7  0101000020E610000072225B1A52364DC0D4F8783B264A41C0                 1     14
## 8  0101000020E6100000932617B931404DC0CB433D98A94841C0                 1     12
## 9  0101000020E61000004FB6D7CAC0364DC0C3EE83C6B84F41C0                 1      6
## 10 0101000020E610000094BBF463A6354DC0AF56B47FB55041C0                 1      5
##                                             geom_3857
## 1  0101000020110F00005F319F6DE7D058C128ECF6D7A25A4FC1
## 2  0101000020110F0000198B887B23CA58C1EA5F993F355C4FC1
## 3  0101000020110F000052D01B82E8D258C1F2B1AAC9E8624FC1
## 4  0101000020110F0000D7C0BB67C6C958C1161836C1CF584FC1
## 5  0101000020110F0000CE404A525ECF58C1203584341C6B4FC1
## 6  0101000020110F00006E280BF2B0D158C1F974D2A2725C4FC1
## 7  0101000020110F00004EEFF81257CF58C164F9B84433554FC1
## 8  0101000020110F0000BCBB59C8B9D758C10E1ED00B22524FC1
## 9  0101000020110F0000A3CE2815B5CF58C1345B6514B3604FC1
## 10 0101000020110F0000DCE6163DC5CE58C1EFDE94C2BC624FC1
##                       geometry
## 1  POINT (-58.43877 -34.59987)
## 2  POINT (-58.37653 -34.60582)
## 3   POINT (-58.4572 -34.63119)
## 4  POINT (-58.37319 -34.59297)
## 5  POINT (-58.42464 -34.66222)
## 6  POINT (-58.44601 -34.60673)
## 7  POINT (-58.42438 -34.57929)
## 8  POINT (-58.50152 -34.56768)
## 9  POINT (-58.42776 -34.62283)
## 10 POINT (-58.41914 -34.63054)

Generamos un mapa interactivo con los siniestros viales de personas +60 años ocurridos en el período 2015-2018

tmap_mode("view")
tm_shape(siniestros_viales_geo) +
    tm_bubbles(c("cantidad_victimas"), col = "darkslateblue")

Agrupamos los siniestros viales por comuna

sin_viales_mas60_comu <- siniestros_viales_geo%>%
  select(comuna, causa, cantidad_victimas) %>% #selecciono las variables 
  group_by(comuna) %>% #agrupo por comuna 
  summarise(cantidad_victimas = n())
glimpse(sin_viales_mas60_comu)
## Rows: 15
## Columns: 3
## $ comuna            <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
## $ cantidad_victimas <int> 385, 180, 313, 207, 186, 166, 207, 97, 227, 164, 212~
## $ geometry          <MULTIPOINT [°]> MULTIPOINT ((-58.36795 -34...., MULTIPOINT ((-58.395~
sin_viales_mas60_comu$comuna <- as.factor(sin_viales_mas60_comu$comuna)

Graficamos los siniestros viales del período 2015-2018 por comuna

sin_viales_mas60_comu %>%
  select(comuna,cantidad_victimas) %>% 
  ggplot(mapping = aes(x = fct_reorder(comuna,cantidad_victimas, na.rm = TRUE),
                       y= cantidad_victimas))+
  geom_col(fill="darkslateblue")+
  labs(title = "Cantidad de accidentes viales de personas mayores a 60 años por Comuna",
       subtitle = "Período 2015-2018",
       x = "Comunas",
       y = "Cantidad de accidentes viales",
       fill = "comuna")+
  theme(axis.text.x = element_text(angle = 90))+
  theme(legend.position = "none")

Unimos la tabla de datos con unidades espaciales y calculamos casos por comuna

st_crs(comunas_pob_21_mas60)
## Coordinate Reference System:
##   User input: WGS 84 
##   wkt:
## GEOGCRS["WGS 84",
##     DATUM["World Geodetic System 1984",
##         ELLIPSOID["WGS 84",6378137,298.257223563,
##             LENGTHUNIT["metre",1]]],
##     PRIMEM["Greenwich",0,
##         ANGLEUNIT["degree",0.0174532925199433]],
##     CS[ellipsoidal,2],
##         AXIS["latitude",north,
##             ORDER[1],
##             ANGLEUNIT["degree",0.0174532925199433]],
##         AXIS["longitude",east,
##             ORDER[2],
##             ANGLEUNIT["degree",0.0174532925199433]],
##     ID["EPSG",4326]]
st_crs(sin_viales_mas60_comu)
## Coordinate Reference System:
##   User input: EPSG:4326 
##   wkt:
## GEOGCRS["WGS 84",
##     DATUM["World Geodetic System 1984",
##         ELLIPSOID["WGS 84",6378137,298.257223563,
##             LENGTHUNIT["metre",1]]],
##     PRIMEM["Greenwich",0,
##         ANGLEUNIT["degree",0.0174532925199433]],
##     CS[ellipsoidal,2],
##         AXIS["geodetic latitude (Lat)",north,
##             ORDER[1],
##             ANGLEUNIT["degree",0.0174532925199433]],
##         AXIS["geodetic longitude (Lon)",east,
##             ORDER[2],
##             ANGLEUNIT["degree",0.0174532925199433]],
##     USAGE[
##         SCOPE["Horizontal component of 3D system."],
##         AREA["World."],
##         BBOX[-90,-180,90,180]],
##     ID["EPSG",4326]]

Agregamos una variable con la proporción de víctimas en función de la población mayor a 60 años por comuna

comunas_siniestros_60 <- st_join(comunas_pob_21_mas60, sin_viales_mas60_comu)%>% 
  mutate(propcasos = cantidad_victimas/POB21_M60)
comunas_siniestros_60
## Simple feature collection with 33 features and 8 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -58.53152 ymin: -34.7053 xmax: -58.33515 ymax: -34.5265
## Geodetic CRS:  WGS 84
## First 10 features:
##                       BARRIOS COMUNAS POB21_M60 P_COMU_M60 P_CABA_M60 comuna
## 1                    RECOLETA       2     39464         26          6      2
## 1.1                  RECOLETA       2     39464         26          6      3
## 1.2                  RECOLETA       2     39464         26          6     14
## 2             ALMAGRO - BOEDO       5     42737         23          6      5
## 2.1           ALMAGRO - BOEDO       5     42737         23          6      6
## 2.2           ALMAGRO - BOEDO       5     42737         23          6      7
## 3                   CABALLITO       6     44952         24          7      6
## 3.1                 CABALLITO       6     44952         24          7      7
## 3.2                 CABALLITO       6     44952         24          7     11
## 4   FLORES - PARQUE CHACABUCO       7     49788         21          8      7
##     cantidad_victimas                       geometry   propcasos
## 1                 180 MULTIPOLYGON (((-58.38001 -... 0.004561119
## 1.1               313 MULTIPOLYGON (((-58.38001 -... 0.007931279
## 1.2               210 MULTIPOLYGON (((-58.38001 -... 0.005321305
## 2                 186 MULTIPOLYGON (((-58.41287 -... 0.004352201
## 2.1               166 MULTIPOLYGON (((-58.41287 -... 0.003884222
## 2.2               207 MULTIPOLYGON (((-58.41287 -... 0.004843578
## 3                 166 MULTIPOLYGON (((-58.43061 -... 0.003692828
## 3.1               207 MULTIPOLYGON (((-58.43061 -... 0.004604912
## 3.2               212 MULTIPOLYGON (((-58.43061 -... 0.004716142
## 4                 207 MULTIPOLYGON (((-58.452 -34... 0.004157628

Exploramos la distribución espacial de la cantidad de víctimas por comuna

tm_shape(comunas_siniestros_60)+
 tm_polygons("cantidad_victimas", style="quantile", title="Cantidad de víctimas")

Hacia el norte de la ciudad se localizan mayor cantidad de siniestros viales de personas +60 años en este período.

Mapeamos la proporción de casos por población +60 años por comuna Cantidad de accidentes viales +60 años / Población mayor a 60 años por comuna

tm_shape(comunas_siniestros_60)+
 tm_polygons("propcasos", style="quantile", title="Proporción de casos por población +60 años por comuna")

Cambiamos la proyección del dataset geográfico

siniestros_viales_5347 <- siniestros_viales_geo %>%
st_transform(5347)

Filtramos los siniestros del año 2018

siniestros_viales_5347_2018 <- siniestros_viales_geo %>%
filter(periodo==2018)%>%
st_transform(5347)

Generamos las áreas de interés (buffer de 2000 metros y convex hull)

sf_use_s2(FALSE)
## Spherical geometry (s2) switched off
buf <- siniestros_viales_5347_2018 %>% st_buffer(dist= 2000) %>% st_geometry() %>% st_union()
buf
## Geometry set for 1 feature 
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 5632880 ymin: 6158516 xmax: 5652216 ymax: 6179418
## Projected CRS: POSGAR 2007 / Argentina 5
ch <- siniestros_viales_5347_2018 %>% st_union()%>% st_convex_hull()
ch
## Geometry set for 1 feature 
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 5634880 ymin: 6160516 xmax: 5650216 ymax: 6177418
## Projected CRS: POSGAR 2007 / Argentina 5

Mapeamos los polígonos voronoi de los siniestros viales de 2018 a partir de un buffer de 2000 metros y de la envolvente convexa, para identificar zonas con mayor cantidad de víctimas por accidente

voronoi_buf2000 <- siniestros_viales_5347_2018 %>% 
          st_geometry() %>%
          st_union() %>%
          st_voronoi() %>%
          st_collection_extract()%>%
          st_sfc(crs = st_crs(siniestros_viales_5347_2018)) %>% 
          st_sf() %>% 
          st_join(siniestros_viales_5347_2018) %>%
          st_intersection(buf)

qtm(voronoi_buf2000, fill=NULL)+
  qtm(buf,  fill=NULL)+
  qtm(siniestros_viales_5347_2018)
qtm(voronoi_buf2000, fill = "cantidad_victimas") 
voronoi_ch <- siniestros_viales_5347_2018 %>% 
          st_geometry() %>%
          st_union() %>%
          st_voronoi() %>%
          st_collection_extract()%>%
          st_sfc(crs = st_crs(siniestros_viales_5347_2018)) %>% 
          st_sf() %>% 
          st_join(siniestros_viales_5347_2018) %>%
          st_intersection(ch)

qtm(voronoi_ch, fill=NULL)+
  qtm(ch,  fill=NULL)+
  qtm(siniestros_viales_5347_2018)
qtm(voronoi_ch, fill = "cantidad_victimas") 

3. Estimación de densidad de siniestros viales en las comunas 3, 5 y 6

Evaluamos la cantidad de siniestros de la ciudad según la causa y la cantidad de víctimas

siniestros_viales_5347 %>% group_by(causa,cantidad_victimas) %>% summarise(tot=n()) %>% arrange(-tot)
## Simple feature collection with 12 features and 3 fields
## Geometry type: GEOMETRY
## Dimension:     XY
## Bounding box:  xmin: 5634727 ymin: 6159162 xmax: 5650689 ymax: 6177798
## Projected CRS: POSGAR 2007 / Argentina 5
## # A tibble: 12 x 4
## # Groups:   causa [2]
##    causa     cantidad_victimas   tot                                    geometry
##    <fct>                 <int> <int>                              <GEOMETRY [m]>
##  1 lesiones                  1  2803 MULTIPOINT ((5634727 6169141), (5634788 61~
##  2 lesiones                  2   236 MULTIPOINT ((5634896 6166399), (5635361 61~
##  3 homicidio                 1    57 MULTIPOINT ((5634913 6165199), (5635168 61~
##  4 lesiones                  3    56 MULTIPOINT ((5635319 6164556), (5635773 61~
##  5 lesiones                  4    28 MULTIPOINT ((5635114 6169863), (5635159 61~
##  6 lesiones                  5     7 MULTIPOINT ((5636866 6164419), (5636998 61~
##  7 lesiones                  6     5 MULTIPOINT ((5635830 6169733), (5637717 61~
##  8 lesiones                  7     4 MULTIPOINT ((5643582 6164818), (5647033 61~
##  9 lesiones                  8     4 MULTIPOINT ((5643446 6175821), (5645909 61~
## 10 lesiones                 18     2                     POINT (5643108 6170575)
## 11 homicidio                 2     1                     POINT (5649769 6169187)
## 12 lesiones                 17     1                     POINT (5641494 6175088)

¿Cuántos siniestros hay por comuna?

siniestros_viales_5347 %>% group_by(comuna) %>% summarise(tot=n())%>% arrange(-tot)
## Simple feature collection with 15 features and 2 fields
## Geometry type: MULTIPOINT
## Dimension:     XY
## Bounding box:  xmin: 5634727 ymin: 6159162 xmax: 5650689 ymax: 6177798
## Projected CRS: POSGAR 2007 / Argentina 5
## # A tibble: 15 x 3
##    comuna   tot                                                         geometry
##     <int> <int>                                                 <MULTIPOINT [m]>
##  1      1   385 ((5647503 6169610), (5647528 6167921), (5647546 6170484), (5647~
##  2      3   313 ((5645594 6168882), (5645629 6170424), (5645648 6170156), (5645~
##  3     15   248 ((5637416 6171490), (5637543 6171225), (5637586 6171256), (5637~
##  4      9   227 ((5634788 6166266), (5634788 6166266), (5634829 6165201), (5634~
##  5     13   224 ((5640261 6175948), (5640265 6176123), (5640268 6177156), (5640~
##  6     11   212 ((5634892 6169546), (5634892 6169547), (5635114 6169863), (5635~
##  7     14   210 ((5642507 6174274), (5642634 6174028), (5642645 6174033), (5642~
##  8      4   207 ((5643950 6165047), (5644174 6165385), (5644241 6164130), (5644~
##  9      7   207 ((5639740 6168150), (5639756 6167784), (5639844 6168181), (5639~
## 10      5   186 ((5643846 6170409), (5643877 6170464), (5643958 6169930), (5643~
## 11      2   180 ((5645437 6170839), (5645560 6171352), (5645563 6170831), (5645~
## 12     12   178 ((5636533 6173503), (5636661 6172271), (5636662 6173047), (5636~
## 13      6   166 ((5641298 6169129), (5641300 6169885), (5641402 6169166), (5641~
## 14     10   164 ((5634727 6169141), (5634792 6168636), (5634802 6168352), (5634~
## 15      8    97 ((5637747 6162551), (5638108 6162200), (5638150 6162594), (5638~

En la comuna 3 se identifican 313 accidentes, mientras que en la comuna 5 y 6 disminuyen a 186 y 166 respectivamente.

Importamos los datasets con los polígonos de las comunas y las líneas de las calles y los convertimos a una proyección métrica (5347) al igual que el dataset geográfico de siniestros viales

comunas <- comunas_pob_21_mas60 %>% 
  st_transform(crs = 5347) 
qtm(comunas,text = "COMUNAS", text.size = 1,text.col="red")
callesba <- st_read("./data/callejero.shp")
## Reading layer `callejero' from data source 
##   `E:\Documentos\BDEIT\Geoestadistica\TPF\data\callejero.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 30712 features and 29 fields
## Geometry type: LINESTRING
## Dimension:     XY
## Bounding box:  xmin: -58.53244 ymin: -34.70574 xmax: -58.34191 ymax: -34.52947
## Geodetic CRS:  WGS 84
glimpse(callesba)
## Rows: 30,712
## Columns: 30
## $ id         <dbl> 28686, 896, 1724, 1729, 1828, 1997, 2062, 3137, 3831, 30056~
## $ codigo     <dbl> 17138, 16003, 16003, 19028, 16003, 21059, 19053, 16011, 401~
## $ nomoficial <chr> "PUNTA ARENAS", "OBLIGADO RAFAEL, Av.Costanera", "OBLIGADO ~
## $ alt_izqini <dbl> 0, 6182, 4202, 4202, 3452, 0, 0, 2796, 3002, 1172, 2602, 0,~
## $ alt_izqfin <dbl> 0, 6200, 4500, 4220, 4200, 0, 0, 2800, 3030, 1200, 3100, 0,~
## $ alt_derini <dbl> 0, 6181, 4201, 4201, 3451, 0, 0, 2795, 3001, 1171, 2601, 32~
## $ alt_derfin <dbl> 0, 6199, 4499, 4219, 4199, 0, 0, 2799, 3029, 1199, 3099, 32~
## $ nomanter   <chr> NA, "COSTANERA NORTE, Av.", "COSTANERA NORTE, Av.", "REPUBL~
## $ nom_mapa   <chr> "TÚNEL PUNTA ARENAS", "AV.COSTANERA RAFAEL OBLIGADO", "AV.C~
## $ tipo_c     <chr> "TÚNEL", "AVENIDA", "AVENIDA", "AVENIDA", "AVENIDA", "CALLE~
## $ long       <dbl> 334.6034, 56.3800, 297.2600, 30.5900, 175.9300, 9.4000, 14.~
## $ sentido    <chr> "DOBLE", "DOBLE", "DOBLE", "CRECIENTE", "DOBLE", "DOBLE", "~
## $ cod_sent   <dbl> 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 2, 1, -1, 1, 1, -1, 1, 1, 2, ~
## $ observa    <chr> "Viaducto - Túnel inaugurado en Abril de 2009", NA, NA, NA,~
## $ bicisenda  <chr> "-", "Ciclovías", "Ciclovías", "-", "Ciclovías", "Ciclovías~
## $ lado_ciclo <chr> NA, NA, NA, NA, NA, "Por calzada paralela y adyacente a la ~
## $ recorrid_x <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Vereda", NA, NA, N~
## $ ciclo_obse <chr> NA, "Construcción Año 2014", "Construcción Año 2014", NA, "~
## $ tooltip_bi <chr> NA, "Ciclovía", "Ciclovía", NA, "Ciclovía", "Ciclovía", NA,~
## $ red_jerarq <chr> "VÍA DISTRIBUIDORA COMPLEMENTARIA", "VÍA DISTRIBUIDORA PRIN~
## $ red_tp     <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, "SI", NA, NA, "SI", NA,~
## $ ffcc       <chr> "SI", NA, NA, "SI", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,~
## $ tipo_ffcc  <chr> "Túnel", NA, NA, "Paso a Nivel", NA, NA, NA, NA, NA, NA, NA~
## $ COMUNA     <int> 15, 13, 14, 12, 14, 12, 12, 13, 14, 2, 14, 12, 13, 2, 2, 2,~
## $ COM_PAR    <int> 15, 13, 14, 12, 14, 12, 12, 13, 14, 2, 14, 12, 13, 2, 2, 2,~
## $ COM_IMPAR  <int> 15, 13, 14, 12, 14, 12, 12, 13, 14, 2, 14, 12, 13, 2, 2, 2,~
## $ BARRIO     <chr> "PATERNAL", "PALERMO", "PALERMO", "SAAVEDRA", "PALERMO", "C~
## $ BARRIO_PAR <chr> "PATERNAL", "PALERMO", "PALERMO", "SAAVEDRA", "PALERMO", "C~
## $ BARRIO_IMP <chr> "PATERNAL", "PALERMO", "PALERMO", "SAAVEDRA", "PALERMO", "C~
## $ geometry   <LINESTRING [°]> LINESTRING (-58.4694 -34.59..., LINESTRING (-58.~
calles <- callesba %>% 
  st_transform(crs = 5347) 

Filtramos las calles de las comunas 3, 5 y 6.

callesc356 <- callesba %>% filter(COMUNA %in% c("3","5","6")) %>% select(id)
callesc356 <- callesc356 %>% 
  st_transform(crs = 5347) 
qtm(callesc356)
glimpse(comunas)
## Rows: 15
## Columns: 6
## $ BARRIOS    <fct> RECOLETA, ALMAGRO - BOEDO, CABALLITO, FLORES - PARQUE CHACA~
## $ COMUNAS    <fct> 2, 5, 6, 7, 9, 10, 11, 12, 14, 3, 15, 8, 4, 1, 13
## $ POB21_M60  <dbl> 39464, 42737, 44952, 49788, 36761, 39205, 44737, 49197, 545~
## $ P_COMU_M60 <dbl> 26, 23, 24, 21, 21, 23, 24, 23, 24, 21, 22, 14, 17, 19, 25
## $ P_CABA_M60 <dbl> 6, 6, 7, 8, 6, 6, 7, 7, 8, 6, 6, 5, 6, 7, 9
## $ geometry   <MULTIPOLYGON [m]> MULTIPOLYGON (((5648663 617..., MULTIPOLYGON (((5645570 616~
comuna356 <- comunas %>% 
  select (COMUNAS,BARRIOS)%>%
  filter(COMUNAS %in% c("3","5","6"))
qtm(comuna356,text = "COMUNAS", text.size = 1,text.col="red")
sin_viales_c356 <- siniestros_viales_5347 %>% filter(comuna %in% c("3","5","6"))

¿Se repiten los siniestros en una misma localización?

sin_viales_c356 %>% group_by(geom_3857) %>% summarise(tot=n())%>% arrange(-tot)
## Simple feature collection with 572 features and 2 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: 5641298 ymin: 6166292 xmax: 5647537 ymax: 6170855
## Projected CRS: POSGAR 2007 / Argentina 5
## # A tibble: 572 x 3
##    geom_3857                                            tot          geometry
##    <fct>                                              <int>       <POINT [m]>
##  1 0101000020110F0000336D42B300D058C1B65AA358F95C4FC1     5 (5643964 6169660)
##  2 0101000020110F00002590BD0427D358C142A5DF55565E4FC1     4 (5641298 6169129)
##  3 0101000020110F0000291E456CF7CD58C16F811B71BF5B4FC1     4 (5645691 6170148)
##  4 0101000020110F000056D273AB56CC58C133E9ED7E6D604FC1     4 (5647033 6168161)
##  5 0101000020110F000058E61C1FDFCC58C19FAC1013935D4FC1     4 (5646602 6169367)
##  6 0101000020110F000059132394D0CD58C102AAB6446D5D4FC1     4 (5645808 6169441)
##  7 0101000020110F000076D75150F9CE58C1C3DCBCA7B35D4FC1     4 (5644828 6169341)
##  8 0101000020110F00001134A3AC56CD58C1D02E32B5575D4FC1     3 (5646210 6169470)
##  9 0101000020110F0000168F922A89CD58C11598A2E9E05F4FC1     3 (5646027 6168408)
## 10 0101000020110F000093E74AAC54CE58C12999E30A2E604FC1     3 (5645354 6168292)
## # ... with 562 more rows

Hay 73 localizaciones donde ocurrieron más de una vez siniestros viales.

Mapeamos los siniestros viales de las 3 comunas seleccionadas (según cantidad de víctimas) donde se concentra gran parte de la población mayor a 60 años.

tm_shape(comuna356) + 
  tm_fill() +
  tm_shape(sin_viales_c356) +
  tm_bubbles(size ="cantidad_victimas")
plot(callesc356)
plot(sin_viales_c356, add = TRUE)

Generamos un dataset de procesos puntuales a partir de los siniestros viales de las comunas 3, 5 y 6.

ventana <-as.owin(st_geometry(comuna356))
sin0 <- as.ppp(st_geometry(sin_viales_c356))

Generamos un dataset de red de lineas de las calles asociada a los puntos

callesnet <- as.psp(st_geometry(callesc356)) %>% as.linnet()
plot(callesnet)

Generamos el patrón de puntos sobre la red de líneas

sinnet <- lpp(sin0,callesnet)
plot(sinnet)

intensity(sinnet)
## [1] 0.002148839

Generamos intensidades kernel de los siniestros en las comunas

dsv <- density(sin0)
plot(dsv, main='densidad de siniestros viales en Comunas 3, 5 y 6')

Generamos intensidades kernel de los siniestros en las comunas sobre las líneas de las calles

d10 <- density.lpp(sinnet, 10)
plot(-d10, main='densidad de siniestros viales cada 10 metros en Comuna 3,5 y 6')

plot(d10, style="width", adjust=5, main='Densidad de siniestros viales cada 10 metros en Comuna 3,5 y 6')