Se pretende analizar el comportamiento de la movilidad en las 22 comunas de la ciudad de Cali, a partir de una encuesta realizada en el año 2015.
Para este caso, se tomarán como referencia el origen y destino de los trayectos realizados en el area urbana de la ciudad utilizando como medios de transporte bicicleta, moto y automovil respectivamente.options("sp_evolution_status"=2)
library(sp)
library(rgdal)
library(raster)
library(readxl)
library(dplyr)
library(RColorBrewer)
library(ggplot2)
library(gridExtra)
Se carga la base de datos correspondiente a la Encuesta Origen - Destino realizada en el año 2015.
# Cargue de la base de datos de la Encuesta Origen - Destino
BD_Encuesta <- read_excel("C:/Users/User/Desktop/EncuestaOrigenDestino.xlsx",
sheet = "Sheet4")
## New names:
## • `MUNICIPIO` -> `MUNICIPIO...7`
## • `DEPARTAMENTO/LOCALIDAD/COMUNA/DISTRITO/BARRIO/VEREDA/HITO/DIRECCIÓN` ->
## `DEPARTAMENTO/LOCALIDAD/COMUNA/DISTRITO/BARRIO/VEREDA/HITO/DIRECCIÓN...8`
## • `MUNICIPIO` -> `MUNICIPIO...11`
## • `DEPARTAMENTO/LOCALIDAD/COMUNA/DISTRITO/BARRIO/VEREDA/HITO/DIRECCIÓN` ->
## `DEPARTAMENTO/LOCALIDAD/COMUNA/DISTRITO/BARRIO/VEREDA/HITO/DIRECCIÓN...12`
## • `OTRO¿CUÁL?` -> `OTRO¿CUÁL?...17`
## • `OTRO¿CUÁL?` -> `OTRO¿CUÁL?...24`
Se carga el archivo .shp que contiene la información geoespacial de las 22 comunas de la ciudad.
# Cargue de la base de datos geográfica Comunas.shp
comunas = shapefile("C:/Users/User/Desktop/cali/Comunas.shp")
comunas
## class : SpatialPolygonsDataFrame
## features : 22
## extent : 1053868, 1068492, 860190.2, 879441.5 (xmin, xmax, ymin, ymax)
## crs : +proj=tmerc +lat_0=3.441883333 +lon_0=-76.5205625 +k=1 +x_0=1061900.18 +y_0=872364.63 +a=6379137 +rf=298.257222101 +units=m +no_defs
## variables : 4
## names : OBJECTID, gid, comuna, nombre
## min values : 1, 89, 1, Comuna 1
## max values : 22, 110, 22, Comuna 9
comunas@data
## OBJECTID gid comuna nombre
## 1 1 107 2 Comuna 2
## 2 2 108 1 Comuna 1
## 3 3 109 3 Comuna 3
## 4 4 110 19 Comuna 19
## 5 5 103 15 Comuna 15
## 6 6 104 17 Comuna 17
## 7 7 105 18 Comuna 18
## 8 8 106 22 Comuna 22
## 9 9 89 6 Comuna 6
## 10 10 90 4 Comuna 4
## 11 11 91 5 Comuna 5
## 12 12 92 7 Comuna 7
## 13 13 93 8 Comuna 8
## 14 14 94 9 Comuna 9
## 15 15 95 21 Comuna 21
## 16 16 96 13 Comuna 13
## 17 17 97 12 Comuna 12
## 18 18 98 14 Comuna 14
## 19 19 99 11 Comuna 11
## 20 20 100 10 Comuna 10
## 21 21 101 20 Comuna 20
## 22 22 102 16 Comuna 16
# Se crea una copia del set de datos para el procesamiento
BD_Encuesta2 <- BD_Encuesta
# Se eliminan los registros correspondientes a viajes fuera de la ciudad o no clasificados dentro de las 22 comunas
BD_Encuesta2 = subset(BD_Encuesta2,comunaorigen!='FueradeCali')
BD_Encuesta2 = subset(BD_Encuesta2,comunadestino!='FueradeCali')
BD_Encuesta2 = subset(BD_Encuesta2,comunaorigen!='0')
BD_Encuesta2 = subset(BD_Encuesta2,comunadestino!='0')
# Se seleccionan solamente las columnas del set de datos que se utilizarán para el análisis
BD_Encuesta3 = BD_Encuesta2[c("comunaorigen", "comunadestino", "TIPODEVEHICULO")]
# Se convierten a valores numéricos los datos correspondientes a las columnas "comuna origen" y "comuna destino"
BD_Encuesta3$comunaorigen =as.numeric(as.character(BD_Encuesta3$comunaorigen))
BD_Encuesta3$comunadestino =as.numeric(as.character(BD_Encuesta3$comunadestino))
# Conteo de los viajes según la Comuna de origen.
conteo <- table(BD_Encuesta3$comunaorigen)
conteos_origen <- data.frame(comuna = names(conteo), conteo = as.vector(conteo))
conteos_origen
## comuna conteo
## 1 1 626
## 2 2 2250
## 3 3 1610
## 4 4 1193
## 5 5 521
## 6 6 797
## 7 7 583
## 8 8 862
## 9 9 737
## 10 10 1094
## 11 11 717
## 12 12 257
## 13 13 1031
## 14 14 575
## 15 15 974
## 16 16 836
## 17 17 1762
## 18 18 1208
## 19 19 2241
## 20 20 599
## 21 21 693
## 22 22 985
# Se realiza el conteo para la categoría de Origen
conteos_origen_shp <- merge(comunas, conteos_origen, by="comuna")
# Se definen los colores para el mapa
pallete_ = brewer.pal(n=9, name = "OrRd")
# Se construye el mapa
p =spplot(conteos_origen_shp[,5],
main = "Comuna de origen",
sub = "Número de Viajes - Persona",
col.regions = pallete_, cuts = 6)
p
Como se observa en el mapa anterior, las comunas desde donde se originan el mayor número de viajes independientemente del medio de transporte que utilizan estás personas son: Comuna 2 (2.250), seguido de la Comuna 19 (2.241), Comuna 17 (1.762) y la Comuna 3 (1.610).
En contraste, la comuna donde se origina el menor número de viajes es la 12 con 257 viajes.# Para el caso de la comuna de Origen se construye el filtro de Bicicleta
origen_bici <- which(BD_Encuesta3$TIPODEVEHICULO==1)
conteos_bc <- table(BD_Encuesta3$comunaorigen[origen_bici])
conteos_cobc <- data.frame(comuna = names(conteos_bc), conteo = as.vector(conteos_bc))
conteos_cobc
## comuna conteo
## 1 1 32
## 2 2 122
## 3 3 84
## 4 4 58
## 5 5 28
## 6 6 29
## 7 7 30
## 8 8 46
## 9 9 36
## 10 10 71
## 11 11 42
## 12 12 10
## 13 13 62
## 14 14 32
## 15 15 55
## 16 16 65
## 17 17 103
## 18 18 85
## 19 19 113
## 20 20 33
## 21 21 35
## 22 22 52
# Para el caso de la comuna de Origen se construye el filtro de Motocicleta
origen_moto <- which(BD_Encuesta3$TIPODEVEHICULO==2)
conteos_mt <- table(BD_Encuesta3$comunaorigen[origen_moto])
conteos_moto <- data.frame(comuna = names(conteos_mt), conteo = as.vector(conteos_mt))
conteos_moto
## comuna conteo
## 1 1 296
## 2 2 1063
## 3 3 702
## 4 4 571
## 5 5 260
## 6 6 377
## 7 7 272
## 8 8 421
## 9 9 317
## 10 10 535
## 11 11 339
## 12 12 133
## 13 13 453
## 14 14 258
## 15 15 455
## 16 16 383
## 17 17 853
## 18 18 593
## 19 19 995
## 20 20 278
## 21 21 323
## 22 22 430
# Para el caso de la comuna de Origen se construye el filtro de Automovil
origen_auto <- which(BD_Encuesta3$TIPODEVEHICULO==3)
conteos_ocr <- table(BD_Encuesta3$comunaorigen[origen_auto])
conteos_cocr <- data.frame(comuna = names(conteos_ocr), conteo = as.vector(conteos_ocr))
conteos_cocr
## comuna conteo
## 1 1 234
## 2 2 860
## 3 3 679
## 4 4 443
## 5 5 185
## 6 6 314
## 7 7 229
## 8 8 319
## 9 9 295
## 10 10 404
## 11 11 268
## 12 12 88
## 13 13 412
## 14 14 236
## 15 15 377
## 16 16 320
## 17 17 662
## 18 18 433
## 19 19 923
## 20 20 228
## 21 21 272
## 22 22 424
# Se realiza el conteo para la categoría de Origen de cada medio de transporte
conteos_origen_bici_shp <- merge(comunas, conteos_cobc, by="comuna")
conteos_origen_moto_shp <- merge(comunas, conteos_moto, by="comuna")
conteos_origen_auto_shp <- merge(comunas, conteos_cocr, by="comuna")
# Se definen los colores para cada categoria
pallete_bici = brewer.pal(n=9, name = "Greens")
pallete_moto = brewer.pal(n=9, name = "Blues")
pallete_auto = brewer.pal(n=9, name = "Spectral")
# Se construyen los mapas
b1 =spplot(conteos_origen_bici_shp[,5],
main = "Bicicleta",
sub = "No.Viajes - Persona",
cuts = 6, col.regions = pallete_bici)
m1 =spplot(conteos_origen_moto_shp[,5],
main = "Moto",
sub = "No.Viajes - Persona",
col.regions = pallete_moto, cuts = 6)
a1 =spplot(conteos_origen_auto_shp[,5],
main = "Automovil",
sub = "No.Viajes - Persona",
col.regions = pallete_auto, cuts = 6)
grid.arrange(b1, m1, a1, ncol = 3, nrow = 1)
# Conteo de los viajes según la Comuna de destino
conteo1 <- table(BD_Encuesta3$comunadestino)
conteos_destino <- data.frame(comuna = names(conteo1), conteo = as.vector(conteo1))
conteos_destino
## comuna conteo
## 1 1 187
## 2 2 3773
## 3 3 2887
## 4 4 1497
## 5 5 440
## 6 6 570
## 7 7 598
## 8 8 830
## 9 9 1055
## 10 10 741
## 11 11 483
## 12 12 207
## 13 13 560
## 14 14 316
## 15 15 481
## 16 16 645
## 17 17 1616
## 18 18 526
## 19 19 2441
## 20 20 303
## 21 21 434
## 22 22 1561
conteos_destino_shp <- merge(comunas, conteos_destino, by="comuna")
pallete_ = brewer.pal(n=7, name = "OrRd")
spplot(conteos_destino_shp[,5],
main = "Comuna de destino",
sub = "Número de Viajes - Persona",
col.regions = pallete_, cuts = 6)
Según el mapa anterior, las comunas hacia donde se dirigen o tienen como destino el mayor número de viajes realizados son: Comuna 2 (3.773), seguido de la Comuna 3 (2.887), Comuna 19 (2.441), Comuna 17 (1.616) y por último la Comuna 22 (1.561).
En contraste, las comunas con el menor número de viajes de destino son las Comunas 1, 12, 20, 14, 15, 11 y 5 siendo las menos sombreadas en el mapa.# Para el caso de la comuna de Destino se construye el filtro de Bicicleta
destino_bici <- which(BD_Encuesta3$TIPODEVEHICULO==1)
conteos_dest_bc <- table(BD_Encuesta3$comunadestino[destino_bici])
conteos_dest_cobc <- data.frame(comuna = names(conteos_dest_bc), conteo = as.vector(conteos_dest_bc))
conteos_dest_cobc
## comuna conteo
## 1 1 9
## 2 2 194
## 3 3 169
## 4 4 80
## 5 5 38
## 6 6 31
## 7 7 36
## 8 8 46
## 9 9 56
## 10 10 34
## 11 11 26
## 12 12 13
## 13 13 28
## 14 14 20
## 15 15 17
## 16 16 31
## 17 17 95
## 18 18 28
## 19 19 131
## 20 20 22
## 21 21 24
## 22 22 95
# Para el caso de la comuna de destino se construye el filtro de Motocicleta
destino_moto <- which(BD_Encuesta3$TIPODEVEHICULO==2)
conteos_dest_mt <- table(BD_Encuesta3$comunadestino[destino_moto])
conteos_dest_moto <- data.frame(comuna = names(conteos_dest_mt), conteo = as.vector(conteos_dest_mt))
conteos_dest_moto
## comuna conteo
## 1 1 90
## 2 2 1734
## 3 3 1333
## 4 4 678
## 5 5 183
## 6 6 255
## 7 7 279
## 8 8 382
## 9 9 512
## 10 10 353
## 11 11 217
## 12 12 106
## 13 13 285
## 14 14 150
## 15 15 232
## 16 16 290
## 17 17 744
## 18 18 240
## 19 19 1152
## 20 20 124
## 21 21 202
## 22 22 766
# Para el caso de la comuna de destino se construye el filtro de Automovil
destino_auto <- which(BD_Encuesta3$TIPODEVEHICULO==3)
conteos_dest_ocr <- table(BD_Encuesta3$comunadestino[destino_auto])
conteos_dest_cocr <- data.frame(comuna = names(conteos_dest_ocr), conteo = as.vector(conteos_dest_ocr))
conteos_dest_cocr
## comuna conteo
## 1 1 73
## 2 2 1518
## 3 3 1098
## 4 4 596
## 5 5 181
## 6 6 208
## 7 7 224
## 8 8 325
## 9 9 382
## 10 10 291
## 11 11 204
## 12 12 71
## 13 13 189
## 14 14 120
## 15 15 199
## 16 16 275
## 17 17 650
## 18 18 216
## 19 19 926
## 20 20 131
## 21 21 164
## 22 22 564
# Se realiza el conteo para la categoría de Origen de cada medio de transporte
conteos_destino_bici_shp <- merge(comunas, conteos_dest_cobc, by="comuna")
conteos_destino_moto_shp <- merge(comunas, conteos_dest_moto, by="comuna")
conteos_destino_auto_shp <- merge(comunas, conteos_dest_cocr, by="comuna")
# Se definen los colores para cada categoria
pallete_bici_dest = brewer.pal(n=9, name = "Greens")
pallete_moto_dest = brewer.pal(n=9, name = "Blues")
pallete_auto_dest = brewer.pal(n=9, name = "Spectral")
# Se construyen los mapas
b2 =spplot(conteos_destino_bici_shp[,5],
main = "Bicicleta",
sub = "No.Viajes - Persona",
cuts = 6, col.regions = pallete_bici_dest)
m2 =spplot(conteos_destino_moto_shp[,5],
main = "Moto",
sub = "No.Viajes - Persona",
col.regions = pallete_moto_dest, cuts = 6)
a2 =spplot(conteos_destino_auto_shp[,5],
main = "Automovil",
sub = "No.Viajes - Persona",
col.regions = pallete_auto_dest, cuts = 6)
grid.arrange(b2, m2, a2, ncol = 3, nrow = 1)