Maestría en Ciencia de Datos, Pontificia Universidad Javeriana, Cali, Colombia

Contexto del desarrollo del caso

Este informe consiste en un estudio de los patrones de movilidad urbana en la ciudad de Cali, Colombia. Se analizaran datos de la Encuesta de movilidad para analizar cómo se desplazan las personas dentro de la ciudad. Se van a generar ocho mapas que ofreceran una visión integral de la movilidad en Cali, desglosada por origen, destino y modo de transporte. Esto permite comprender el rol de cada modo dentro del sistema de transporte general, como también las comunas que dependen más de ciertos modos de transporte, los patrones de origen y destino de cada uno de estos, lo cual puede generar información de importancia para la planificación y estructuración con miras a las mejoras u otros.

Datos a utilizar: Base de datos de Encuesta destino

Listado de mapas

    1. Mapa desde el origen del viaje de las personas encuestadas desde que comuna (n=22) con el número de trayectos.
    1. Mapa de viajes realizados en bicicleta por comuna.
    1. Mapa de viajes realizados en moto por comuna.
    1. Mapa de viajes realizados en auto por comuna.
    1. Mapa para establecer el destino de los viajes de las personas encuestadas.
    1. Mapa de destinos a los que se llega en bicicleta.
    1. Mapa de destinos los que se llega en moto.
    1. Mapa de destinos a los que se llega en auto.

Mapa desde el origen del viaje de las personas encuestadas

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
class(comunas)
## [1] "SpatialPolygonsDataFrame"
## attr(,"package")
## [1] "sp"
plot(comunas)

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

Cargan de la base de datos

La base de datos fue proporcionada dentro de las explicaciones de la actividad en documento Excel.

Revision de los datos

Se realiza una revisión de la base de datos,especialmente para descripcionn de datos y detección de faltantes.

colnames(Encuesta)
##  [1] "FECHA"                                                                                   
##  [2] "ID ESTACIÓN"                                                                             
##  [3] "ESTACIÓN"                                                                                
##  [4] "ACCESO"                                                                                  
##  [5] "MOVIMIENTO"                                                                              
##  [6] "Hora de Encuesta"                                                                        
##  [7] "MUNICIPIO...7"                                                                           
##  [8] "DEPARTAMENTO / LOCALIDAD  / COMUNA / DISTRITO / BARRIO / VEREDA  / HITO / DIRECCIÓN...8" 
##  [9] "Codigo Origen_SDG"                                                                       
## [10] "¿QUE ESTABA HACIENDO EN ESE LUGAR?"                                                      
## [11] "MUNICIPIO...11"                                                                          
## [12] "DEPARTAMENTO / LOCALIDAD  / COMUNA / DISTRITO / BARRIO / VEREDA  / HITO / DIRECCIÓN...12"
## [13] "Codigo Destino_SDG"                                                                      
## [14] "¿QUE VA HACER A ESE LUGAR?"                                                              
## [15] "ESTRATO EN SU VIVIENDA"                                                                  
## [16] "¿DISPONIA DE UN VEHÍCULO PARA REALIZAR ESTE DESPLAZAMIENTO?"                             
## [17] "OTRO ¿CUÁL?...17"                                                                        
## [18] "ANTES"                                                                                   
## [19] "DESPUES"                                                                                 
## [20] "EDAD"                                                                                    
## [21] "SEXO"                                                                                    
## [22] "PERSONAS EN EL VEHÍCULO"                                                                 
## [23] "TIPO DE VEHÍCULO"                                                                        
## [24] "OTRO ¿CUÁL?...24"                                                                        
## [25] "TIPO DE VIAJERO"                                                                         
## [26] "comuna origen"                                                                           
## [27] "comuna destino"                                                                          
## [28] "Intracomuna"

Tipos de datos

str(Encuesta)
## tibble [35,054 × 28] (S3: tbl_df/tbl/data.frame)
##  $ FECHA                                                                                   : POSIXct[1:35054], format: "2015-06-01" "2015-06-01" ...
##  $ ID ESTACIÓN                                                                             : num [1:35054] 1 1 1 1 1 1 1 1 1 1 ...
##  $ ESTACIÓN                                                                                : chr [1:35054] "Avenida 6N X Calle 70N" "Avenida 6N X Calle 70N" "Avenida 6N X Calle 70N" "Avenida 6N X Calle 70N" ...
##  $ ACCESO                                                                                  : chr [1:35054] "NORTE" "NORTE" "NORTE" "NORTE" ...
##  $ MOVIMIENTO                                                                              : chr [1:35054] "MOV 1" "MOV 1" "MOV 1" "MOV 1" ...
##  $ Hora de Encuesta                                                                        : POSIXct[1:35054], format: "1899-12-31 06:10:00" "1899-12-31 06:11:00" ...
##  $ MUNICIPIO...7                                                                           : chr [1:35054] "CALI" "CALIMA" "YUMBO" "YUMBO" ...
##  $ DEPARTAMENTO / LOCALIDAD  / COMUNA / DISTRITO / BARRIO / VEREDA  / HITO / DIRECCIÓN...8 : chr [1:35054] "B CHIPICHAPE" "DARIEN" "VALLE DEL CAUCA" "VALLE DEL CAUCA" ...
##  $ Codigo Origen_SDG                                                                       : chr [1:35054] "218" "4102" "3102" "3102" ...
##  $ ¿QUE ESTABA HACIENDO EN ESE LUGAR?                                                      : num [1:35054] 5 6 6 6 8 6 6 6 6 6 ...
##  $ MUNICIPIO...11                                                                          : chr [1:35054] "CALI" "CALI" "CALI" "CALI" ...
##  $ DEPARTAMENTO / LOCALIDAD  / COMUNA / DISTRITO / BARRIO / VEREDA  / HITO / DIRECCIÓN...12: chr [1:35054] "B PANCE" "TEQUENDAMA" "B EL PEÑON" "B OBRERO" ...
##  $ Codigo Destino_SDG                                                                      : chr [1:35054] "2216" "1904" "302" "910" ...
##  $ ¿QUE VA HACER A ESE LUGAR?                                                              : num [1:35054] 1 4 1 1 1 1 2 1 1 2 ...
##  $ ESTRATO EN SU VIVIENDA                                                                  : num [1:35054] 3 2 3 2 3 2 3 3 3 3 ...
##  $ ¿DISPONIA DE UN VEHÍCULO PARA REALIZAR ESTE DESPLAZAMIENTO?                             : num [1:35054] 0 NA NA NA NA NA NA NA NA NA ...
##  $ OTRO ¿CUÁL?...17                                                                        : logi [1:35054] NA NA NA NA NA NA ...
##  $ ANTES                                                                                   : num [1:35054] NA NA NA NA NA NA NA NA NA NA ...
##  $ DESPUES                                                                                 : logi [1:35054] NA NA NA NA NA NA ...
##  $ EDAD                                                                                    : num [1:35054] 35 40 33 28 25 31 50 37 36 35 ...
##  $ SEXO                                                                                    : num [1:35054] 2 2 2 2 2 2 2 2 2 2 ...
##  $ PERSONAS EN EL VEHÍCULO                                                                 : num [1:35054] 1 4 1 1 2 3 2 1 1 2 ...
##  $ TIPO DE VEHÍCULO                                                                        : num [1:35054] 2 3 2 2 2 3 3 2 2 3 ...
##  $ OTRO ¿CUÁL?...24                                                                        : logi [1:35054] NA NA NA NA NA NA ...
##  $ TIPO DE VIAJERO                                                                         : chr [1:35054] "1" "1" "1" "1" ...
##  $ comuna origen                                                                           : chr [1:35054] "02" "Fuera de Cali" "Fuera de Cali" "Fuera de Cali" ...
##  $ comuna destino                                                                          : chr [1:35054] "22" "19" "03" "09" ...
##  $ Intracomuna                                                                             : chr [1:35054] "0" "0" "0" "0" ...
head(data)
##                                                                             
## 1 function (..., list = character(), package = NULL, lib.loc = NULL,        
## 2     verbose = getOption("verbose"), envir = .GlobalEnv, overwrite = TRUE) 
## 3 {                                                                         
## 4     fileExt <- function(x) {                                              
## 5         db <- grepl("\\\\.[^.]+\\\\.(gz|bz2|xz)$", x)                     
## 6         ans <- sub(".*\\\\.", "", x)

Depuración de los datos

Se identificaran los datos faltantes para realizar imputar.

sum(is.na(Encuesta))
## [1] 161637
#graficar los datos faltantes
mice::md.pattern(Encuesta, rotate.names = TRUE)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

##       FECHA ID ESTACIÓN ESTACIÓN ACCESO MOVIMIENTO Hora de Encuesta
## 34974     1           1        1      1          1                1
##           0           0        0      0          0                0
##       MUNICIPIO...7
## 34974             1
##                   0
##       DEPARTAMENTO / LOCALIDAD  / COMUNA / DISTRITO / BARRIO / VEREDA  / HITO / DIRECCIÓN...8
## 34974                                                                                       1
##                                                                                             0
##       Codigo Origen_SDG ¿QUE ESTABA HACIENDO EN ESE LUGAR? MUNICIPIO...11
## 34974                 1                                  1              1
##                       0                                  0              0
##       DEPARTAMENTO / LOCALIDAD  / COMUNA / DISTRITO / BARRIO / VEREDA  / HITO / DIRECCIÓN...12
## 34974                                                                                        1
##                                                                                              0
##       Codigo Destino_SDG ¿QUE VA HACER A ESE LUGAR? ESTRATO EN SU VIVIENDA EDAD
## 34974                  1                          1                      1    1
##                        0                          0                      0    0
##       SEXO PERSONAS EN EL VEHÍCULO TIPO DE VEHÍCULO TIPO DE VIAJERO
## 34974    1                       1                1               1
##          0                       0                0               0
##       comuna origen comuna destino Intracomuna  
## 34974             1              1           1 0
##                   0              0           0 0

Realización de Mapas

1. Mapa desde el origen del viaje de las personas encuestadas desde que comuna (n=22) con el número de trayectos.

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_sf <- st_as_sf(comunas)
plot(comunas_sf$geometry)

Mapa 1. Viajes por Comuna de Origen

#Crear vector de datos de origen en general
datos_ComunaOrigen <- data.frame(table(OrigenDestino_Limpio$"comuna origen", useNA = "ifany"))[c(-22),c(2)]

#Agregar vector al SpatialPointsDataFrame
comunas_orden_origen <- comunas_orden
comunas_orden_origen$Comuna_Origen <- datos_ComunaOrigen

#Graficar datos por comuna de origen
plot(comunas_orden_origen[,6], main="Mapa 1. Viajes por Comuna de Origen",
     breaks=seq(0,3000,500))

Mapa 2. Viajes realizados en bicicleta por comuna.

#Crear vector de datos de origen en bicicleta
datos_ComunaOrigen_Bici <- data.frame(table(OrigenDestino_Limpio$"comuna origen"[OrigenDestino_Limpio$"TIPO DE VEHÍCULO"==1], useNA = "ifany"))[c(-23,-24),c(2)]

#Agregar vector al SpatialPointsDataFrame
comunas_orden_origen_bici <- comunas_orden
comunas_orden_origen_bici$Comuna_Origen_Bici <- datos_ComunaOrigen_Bici

#Graficar datos por comuna de origen
plot(comunas_orden_origen_bici[,6], main="Mapa 2. Viajes en Bicicleta por Comuna de Origen",
     breaks=seq(0,175,25))

Mapa 3. Viajes en Moto por Comuna de Origen

#Crear vector de datos de origen en moto
datos_ComunaOrigen_Moto <- data.frame(table(OrigenDestino_Limpio$"comuna origen"[OrigenDestino_Limpio$"TIPO DE VEHÍCULO"==2], useNA = "ifany"))[c(-23,-24),c(2)]

#Agregar vector al SpatialPointsDataFrame
comunas_orden_origen_moto <- comunas_orden
comunas_orden_origen_moto$Comuna_Origen_Moto <- datos_ComunaOrigen_Moto

#Graficar datos por comuna de origen
plot(comunas_orden_origen_moto[,6], main="Mapa 3. Viajes en Moto por Comuna de Origen",
     breaks=seq(0,1500,250))

Mapa 4. Viajes en automovil por Comuna de Origen

#Crear vector de datos de origen en automóvil
datos_ComunaOrigen_Auto <- data.frame(table(OrigenDestino_Limpio$"comuna origen"[OrigenDestino_Limpio$"TIPO DE VEHÍCULO"==3], useNA = "ifany"))[c(-23,-24),c(2)]

#Agregar vector al SpatialPointsDataFrame
comunas_orden_origen_auto <- comunas_orden
comunas_orden_origen_auto$Comuna_Origen_Auto <- datos_ComunaOrigen_Auto

#Graficar datos por comuna de origen
plot(comunas_orden_origen_auto[,6], main="Mapa 4. Viajes en Automóvil por Comuna de Origen",
     breaks=seq(0,1200,200))

Mapa 5.Mapa para establecer el destino de los viajes.

#Crear vector de datos de origen en general
datos_ComunaDestino <- data.frame(table(OrigenDestino_Limpio$"comuna destino", useNA = "ifany"))[c(-23),c(2)]

#Agregar vector al SpatialPointsDataFrame
comunas_orden_destino <- comunas_orden
comunas_orden_destino$Comuna_Destino <- datos_ComunaDestino

#Graficar datos por comuna de origen
plot(comunas_orden_destino[,6], main="Mapa 5. Viajes por Comuna de Destino",
     breaks=seq(0,5000,500))

Mapa 6. Destinos a los que se llega en bicicleta.

#Crear vector de datos de destino en bicicleta
datos_ComunaDestino_Bici <- data.frame(table(OrigenDestino_Limpio$"comuna destino"[OrigenDestino_Limpio$"TIPO DE VEHÍCULO"==1], useNA = "ifany"))[c(-23,-24),c(2)]

#Agregar vector al SpatialPointsDataFrame
comunas_orden_destino_bici <- comunas_orden
comunas_orden_destino_bici$Comuna_Destino_Bici <- datos_ComunaDestino_Bici

#Graficar datos por comuna de origen
plot(comunas_orden_destino_bici[,6], main="Mapa 6. Viajes en Bicicleta por Comuna de Destino",
     breaks=seq(0,225,25))

Mapa 7.Destinos los que se llega en moto.

#Crear vector de datos de destino en moto
datos_ComunaDestino_Moto <- data.frame(table(OrigenDestino_Limpio$"comuna destino"[OrigenDestino_Limpio$"TIPO DE VEHÍCULO"==2], useNA = "ifany"))[c(-23,-24),c(2)]

#Agregar vector al SpatialPointsDataFrame
comunas_orden_destino_moto <- comunas_orden
comunas_orden_destino_moto$Comuna_Destino_Moto <- datos_ComunaDestino_Moto

#Graficar datos por comuna de origen
plot(comunas_orden_destino_moto[,6], main="Mapa 7.Viajes en Moto por Comuna de Destino",
     breaks=seq(0,2250,250))

Mapa 8. Destinos a los que se llega en auto.

#Crear vector de datos de origen en automóvil
datos_ComunaDestino_Auto <- data.frame(table(OrigenDestino_Limpio$"comuna destino"[OrigenDestino_Limpio$"TIPO DE VEHÍCULO"==3], useNA = "ifany"))[c(-23,-24),c(2)]

#Agregar vector al SpatialPointsDataFrame
comunas_orden_destino_auto <- comunas_orden
comunas_orden_destino_auto$Comuna_Destino_Auto <- datos_ComunaDestino_Auto

#Graficar datos por comuna de origen
plot(comunas_orden_destino_auto[,6], main="Gráfico 8. Mapa de viajes en Automóvil por Comuna de Destino",
     breaks=seq(0,2250,250))

Conclusiones

El análisis de datos mostró que las comunas que las comunas 2, 19 y 17, en las que parten la mayoria de los encuestados en la ciudad de Cali, siendo muy similar en distribución por tipo de vehiculo. El destino también incluye las comunas 1 y 19, pero tambien la 3, siendo estas las mas frecuentes. Estas tres comunas las 2, 17 y 19 se podrían considerar para posibles intervenciones o manejo de la movilidad.