Caso Encuesta Origen - Destino en la ciudad de Cali

Análisis de Información Geográfica y Espacial

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.

Importación de librerías

options("sp_evolution_status"=2)
library(sp)
library(rgdal)
library(raster)
library(readxl)
library(dplyr)
library(RColorBrewer)
library(ggplot2)
library(gridExtra)

Cargue de la Base de datos

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
A continuación se presenta un resumen de como se encuentra la clasificación para las 22 comunas de la ciudad.
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

Procesamiento de los datos

# 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))

Desplazamientos según Origen

# 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
En cuanto a los viajes que se originan por comuna utilizando la Bicicleta como medio de transporte, las más representativas son la Comuna 2 (122), Comuna 19 (113) y la Comuna 17 (103).
# 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
Los viajes que realizan las personas en la ciudad utilizando como medio de transporte una motocicleta, estos tienen su origen principalmente es en: Comuna 2 (1.063), Comuna 19 (995) y la Comuna 17 (853), siendo este el medio de transporte más utilizado en la ciudad.
# 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
Para el caso de los viajes realizados en automovil la comunas donde se originan el mayor número de viajes o desde donde proviene el mayor número de personas que utilizan este vehiculo son: Comuna 19 (923), Comuna 2 (860), Comuna 3 (679) y la Comuna 17 (662).
# 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)

Como se puede apreciar en cada uno de los mapas, es clara la predominancia de los viajes que realizan los ciudadanos en Cali y que tienen como origen las Comunas 2, 17 y 19, en su orden con excepción de los viajes en automovil en los cuales la comuna 19 es desde donde se moviliza el mayor número de personas.

Desplazamientos según Destino

# 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
En cuanto a los viajes realizados por las personas en Bicicletas estos tienen como destino principal la Comuna 2 (194), seguido por la comuna 3 (169) y la comuna 19 (131).
# 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
Los viajes que realizan las personas en la ciudad utilizando como medio de transporte una motocicleta, tienen como principal destino: la Comuna 2 (1.734), seguido por la comuna 3 (1.333) y la comuna 19 (1.152).
# 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
Para el caso de los viajes realizado en automovil las comunas donde tiene como destino el mayor número de viajes hacia donde se dirige el mayor número de personas en automovil son: Comuna 2 (1.518), Comuna 3 (1.098) y la Comuna 19 (926).
# 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)
Como se puede apreciar en cada uno de los mapas, es clara la predominancia de los viajes que realizan los ciudadanos en Cali y que tienen como destino la Comuna 2, siendo la más representativa para todos los medios de transporte analizados. Seguidas por las Comunas 3 y 19 consolidando un eje sólido hacia donde se dirigen los ciudadanos a realizar distintas actividades.