Nota: Documento académico para la Maestría en ciencia de datos de la Universidad Javeriana de Cali
Las instrucciones del trabajo a realizar se encuentran en el vídeo de Youtube llamado M1U1 “Caso encuesta Origen destino”:
En resumen, se solicita:
##Importar Datos Espaciales en R
#install.packages("rgdal") #no voy a usar rgdal porque por mi versión de rtools ya no sirve.
#install.packages("sf")
#install.packages("terra")
library(terra)
## terra 1.7.78
## Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
## Reading layer `Comunas' from data source
## `C:\Users\doar9\OneDrive\Javeriana\analisis espacial\Trabajo M1U1\Comunas.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 22 features and 4 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Projected CRS: MAGNA_Colombia_Cali
## [1] "OBJECTID" "gid" "comuna" "nombre"
## [1] "OBJECTID" "gid" "comuna" "nombre" "geometry"
# Cargar el paquete readxl
#install.packages("readxl")
library(readxl)
# Cargar la hoja "Hoja1" del archivo EncuestaOrigenDestino.xlsx sin warnings
EncuestaOrigenDestino <- suppressWarnings(read_excel("EncuestaOrigenDestino.xlsx", sheet = "Hoja1"))
## 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`
## [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"
library(ggplot2)
# Asegurarse de que las variables se traten como factores para preservar las etiquetas
EncuestaOrigenDestino$`comuna origen` <- as.factor(EncuestaOrigenDestino$`comuna origen`)
EncuestaOrigenDestino$`comuna destino` <- as.factor(EncuestaOrigenDestino$`comuna destino`)
# Gráfico de distribución para "comuna origen" con conteo encima de las barras
ggplot(EncuestaOrigenDestino, aes(x = `comuna origen`)) +
geom_bar(fill = "blue", color = "black") +
geom_text(stat = 'count', aes(label = after_stat(count)), vjust = -0.5) +
ylim(0, 7000) + # Ampliar el límite superior del eje Y
labs(title = "Distribución de Comuna Origen", x = "Comuna Origen", y = "Frecuencia") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas si son muchas
# Gráfico de distribución para "comuna destino" con conteo encima de las barras
ggplot(EncuestaOrigenDestino, aes(x = `comuna destino`)) +
geom_bar(fill = "green", color = "black") +
geom_text(stat = 'count', aes(label = after_stat(count)), vjust = -0.5) +
ylim(0, 7000) + # Ampliar el límite superior del eje Y
labs(title = "Distribución de Comuna Destino", x = "Comuna Destino", y = "Frecuencia") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas si son muchas
##
## 1 2 3 4 5 6 7 8 9 77
## 1731 16077 14100 459 1999 211 167 88 30 77
library(dplyr)
# Crear una nueva variable 'tipo_vehiculo' que recodifique los valores, incluyendo los vacíos y faltantes
EncuestaOrigenDestino <- EncuestaOrigenDestino %>%
mutate(tipo_vehiculo = case_when(
`TIPO DE VEHÍCULO` == '1' ~ 'Bicicleta',
`TIPO DE VEHÍCULO` == '2' ~ 'Moto',
`TIPO DE VEHÍCULO` == '3' ~ 'Automovil',
`TIPO DE VEHÍCULO` == '4' ~ 'Campero (Guala)',
`TIPO DE VEHÍCULO` == '5' ~ 'Taxi',
`TIPO DE VEHÍCULO` == '6' ~ 'Intermunicipal - Bus',
`TIPO DE VEHÍCULO` == '7' ~ 'Intermunicipal - Buseta',
`TIPO DE VEHÍCULO` == '8' ~ 'Intermunicipal - Van',
`TIPO DE VEHÍCULO` == '9' ~ 'Taxi blanco',
`TIPO DE VEHÍCULO` == '77' ~ 'Otro',
is.na(`TIPO DE VEHÍCULO`) | `TIPO DE VEHÍCULO` == "" ~ 'Missing', # Tratar NA y vacíos como "Missing"
TRUE ~ 'Sin dato' # Para cualquier otro valor no contemplado
))
# Visualizar la tabla con la nueva variable para verificar el resultado
table(EncuestaOrigenDestino$tipo_vehiculo)
##
## Automovil Bicicleta Campero (Guala)
## 14100 1731 459
## Intermunicipal - Bus Intermunicipal - Buseta Intermunicipal - Van
## 211 167 88
## Missing Moto Otro
## 115 16077 77
## Taxi Taxi blanco
## 1999 30
##
## Adjuntando el paquete: 'knitr'
## The following object is masked from 'package:terra':
##
## spin
# Tabla de contingencia para "comuna origen" y "tipo de vehículo" con totales
tabla_origen_vehiculo <- table(EncuestaOrigenDestino$`comuna origen`, EncuestaOrigenDestino$tipo_vehiculo)
tabla_origen_vehiculo_con_totales <- addmargins(tabla_origen_vehiculo, FUN = sum, quiet = TRUE)
colnames(tabla_origen_vehiculo_con_totales)[ncol(tabla_origen_vehiculo_con_totales)] <- "Total"
rownames(tabla_origen_vehiculo_con_totales)[nrow(tabla_origen_vehiculo_con_totales)] <- "Total"
kable(tabla_origen_vehiculo_con_totales, caption = "Tabla de Contingencia - Comuna Origen y Tipo de Vehículo con Totales")
Automovil | Bicicleta | Campero (Guala) | Intermunicipal - Bus | Intermunicipal - Buseta | Intermunicipal - Van | Missing | Moto | Otro | Taxi | Taxi blanco | Total | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 317 | 43 | 5 | 2 | 1 | 2 | 1 | 259 | 3 | 38 | 1 | 672 |
01 | 301 | 36 | 11 | 8 | 6 | 3 | 0 | 375 | 1 | 52 | 1 | 794 |
02 | 1121 | 159 | 36 | 11 | 13 | 9 | 6 | 1414 | 5 | 192 | 2 | 2968 |
03 | 854 | 99 | 27 | 12 | 12 | 8 | 9 | 970 | 4 | 123 | 3 | 2121 |
04 | 551 | 74 | 17 | 6 | 6 | 4 | 2 | 720 | 5 | 106 | 2 | 1493 |
05 | 241 | 38 | 11 | 2 | 2 | 1 | 3 | 319 | 4 | 43 | 0 | 664 |
06 | 389 | 44 | 9 | 7 | 4 | 4 | 3 | 473 | 4 | 61 | 0 | 998 |
07 | 283 | 35 | 8 | 6 | 2 | 0 | 1 | 350 | 4 | 45 | 0 | 734 |
08 | 420 | 52 | 19 | 5 | 4 | 4 | 0 | 552 | 2 | 65 | 1 | 1124 |
09 | 382 | 53 | 10 | 9 | 6 | 3 | 2 | 413 | 3 | 69 | 2 | 952 |
10 | 529 | 82 | 18 | 7 | 4 | 3 | 4 | 675 | 3 | 76 | 0 | 1401 |
11 | 361 | 52 | 9 | 7 | 2 | 2 | 3 | 431 | 0 | 57 | 1 | 925 |
12 | 123 | 14 | 3 | 1 | 0 | 0 | 0 | 176 | 1 | 30 | 0 | 348 |
13 | 486 | 76 | 24 | 4 | 4 | 3 | 3 | 554 | 2 | 82 | 0 | 1238 |
14 | 272 | 37 | 9 | 5 | 6 | 2 | 2 | 310 | 1 | 40 | 1 | 685 |
15 | 456 | 70 | 24 | 6 | 5 | 3 | 2 | 536 | 1 | 68 | 0 | 1171 |
16 | 385 | 73 | 12 | 7 | 5 | 5 | 3 | 450 | 1 | 51 | 1 | 993 |
17 | 899 | 141 | 35 | 14 | 6 | 6 | 4 | 1136 | 4 | 132 | 0 | 2377 |
18 | 559 | 111 | 22 | 6 | 2 | 3 | 0 | 746 | 1 | 85 | 1 | 1536 |
19 | 1165 | 141 | 37 | 19 | 10 | 9 | 7 | 1280 | 6 | 171 | 5 | 2850 |
20 | 272 | 46 | 16 | 0 | 2 | 2 | 4 | 339 | 3 | 48 | 1 | 733 |
21 | 328 | 44 | 5 | 8 | 3 | 2 | 3 | 378 | 1 | 44 | 2 | 818 |
22 | 489 | 55 | 14 | 5 | 4 | 2 | 3 | 515 | 4 | 62 | 0 | 1153 |
Fuera de Cali | 2917 | 156 | 78 | 54 | 58 | 8 | 50 | 2706 | 14 | 259 | 6 | 6306 |
Total | 14100 | 1731 | 459 | 211 | 167 | 88 | 115 | 16077 | 77 | 1999 | 30 | 35054 |
# Tabla de contingencia para "comuna destino" y "tipo de vehículo" con totales
tabla_destino_vehiculo <- table(EncuestaOrigenDestino$`comuna destino`, EncuestaOrigenDestino$tipo_vehiculo)
tabla_destino_vehiculo_con_totales <- addmargins(tabla_destino_vehiculo, FUN = sum, quiet = TRUE)
colnames(tabla_destino_vehiculo_con_totales)[ncol(tabla_destino_vehiculo_con_totales)] <- "Total"
rownames(tabla_destino_vehiculo_con_totales)[nrow(tabla_destino_vehiculo_con_totales)] <- "Total"
kable(tabla_destino_vehiculo_con_totales, caption = "Tabla de Contingencia - Comuna Destino y Tipo de Vehículo con Totales")
Automovil | Bicicleta | Campero (Guala) | Intermunicipal - Bus | Intermunicipal - Buseta | Intermunicipal - Van | Missing | Moto | Otro | Taxi | Taxi blanco | Total | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 280 | 46 | 16 | 7 | 1 | 3 | 3 | 390 | 2 | 38 | 2 | 788 |
01 | 86 | 12 | 3 | 2 | 1 | 0 | 0 | 112 | 0 | 14 | 0 | 230 |
02 | 2006 | 218 | 41 | 24 | 20 | 9 | 11 | 2177 | 8 | 290 | 6 | 4810 |
03 | 1557 | 189 | 54 | 30 | 21 | 12 | 13 | 1734 | 11 | 236 | 2 | 3859 |
04 | 757 | 85 | 28 | 9 | 8 | 3 | 5 | 846 | 5 | 110 | 0 | 1856 |
05 | 225 | 41 | 2 | 1 | 1 | 0 | 0 | 215 | 1 | 33 | 3 | 522 |
06 | 275 | 34 | 17 | 4 | 2 | 0 | 2 | 323 | 2 | 57 | 0 | 716 |
07 | 286 | 41 | 18 | 7 | 4 | 0 | 2 | 353 | 1 | 36 | 0 | 748 |
08 | 403 | 54 | 18 | 7 | 3 | 2 | 1 | 470 | 3 | 62 | 2 | 1025 |
09 | 489 | 65 | 13 | 17 | 5 | 4 | 3 | 608 | 2 | 72 | 1 | 1279 |
10 | 384 | 43 | 10 | 9 | 8 | 3 | 2 | 419 | 1 | 47 | 1 | 927 |
11 | 239 | 29 | 7 | 1 | 0 | 1 | 0 | 254 | 1 | 32 | 0 | 564 |
12 | 85 | 15 | 3 | 1 | 0 | 0 | 0 | 128 | 1 | 13 | 0 | 246 |
13 | 226 | 33 | 15 | 2 | 2 | 3 | 2 | 346 | 1 | 41 | 2 | 673 |
14 | 138 | 22 | 6 | 3 | 1 | 1 | 0 | 188 | 1 | 19 | 0 | 379 |
15 | 245 | 20 | 10 | 2 | 2 | 3 | 2 | 271 | 2 | 22 | 0 | 579 |
16 | 321 | 35 | 4 | 3 | 0 | 3 | 1 | 327 | 1 | 46 | 2 | 743 |
17 | 959 | 115 | 18 | 14 | 9 | 9 | 3 | 927 | 2 | 107 | 1 | 2164 |
18 | 276 | 31 | 7 | 2 | 5 | 1 | 0 | 302 | 1 | 36 | 1 | 662 |
19 | 1302 | 147 | 34 | 12 | 17 | 9 | 9 | 1421 | 9 | 196 | 2 | 3158 |
20 | 144 | 25 | 5 | 0 | 2 | 1 | 2 | 151 | 0 | 21 | 0 | 351 |
21 | 198 | 26 | 2 | 2 | 1 | 3 | 1 | 243 | 1 | 38 | 0 | 515 |
22 | 694 | 100 | 37 | 16 | 10 | 4 | 4 | 911 | 5 | 79 | 0 | 1860 |
Fuera de Cali | 2525 | 305 | 91 | 36 | 44 | 14 | 49 | 2961 | 16 | 354 | 5 | 6400 |
Total | 14100 | 1731 | 459 | 211 | 167 | 88 | 115 | 16077 | 77 | 1999 | 30 | 35054 |
library(dplyr)
# Filtrar el dataframe excluyendo "Fuera de Cali" en comuna origen
EncuestaOrigen <- EncuestaOrigenDestino %>%
filter(`comuna origen` != "Fuera de Cali") %>%
mutate(`comuna origen` = as.numeric(as.character(`comuna origen`))) # Convertir a numérica
# Filtrar el dataframe excluyendo "Fuera de Cali" en comuna destino
EncuestaDestino <- EncuestaOrigenDestino %>%
filter(`comuna destino` != "Fuera de Cali") %>%
mutate(`comuna destino` = as.numeric(as.character(`comuna destino`))) # Convertir a numérica
# Verificar el resultado
table(EncuestaOrigen$`comuna origen`)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 672 794 2968 2121 1493 664 998 734 1124 952 1401 925 348 1238 685 1171
## 16 17 18 19 20 21 22
## 993 2377 1536 2850 733 818 1153
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 788 230 4810 3859 1856 522 716 748 1025 1279 927 564 246 673 379 579
## 16 17 18 19 20 21 22
## 743 2164 662 3158 351 515 1860
## num [1:28748] 2 6 6 3 4 6 4 2 13 6 ...
## num [1:28654] 22 19 3 9 2 2 17 2 2 2 ...
library(dplyr)
# Contar los viajes por comuna origen en EncuestaOrigen
conteo_origen <- EncuestaOrigen %>%
group_by(`comuna origen`) %>%
summarise(conteo_viajes_origen = n())
# Aquí usamos el objeto comunas_data que es de sf
library(sf)
# Unir los conteos de EncuestaOrigen al shapefile usando la columna "comuna"
comunas_data_conteo <- merge(comunas_data, conteo_origen, by.x = "comuna", by.y = "comuna origen", all.x = TRUE)
library(sp)
# Convertir el objeto sf a sp
comunas_sp <- as(comunas_data_conteo, "Spatial")
# Crear el mapa con spplot usando el conteo de viajes
spplot(comunas_sp, "conteo_viajes_origen", main = "Conteo de Viajes por Comuna - Origen Total Cali")
library(ggplot2)
# Crear una nueva columna 'comuna_origen_factor' como factor
conteo_origen$comuna_origen_factor <- as.factor(conteo_origen$`comuna origen`)
# Gráfico de distribución para "comuna_origen_factor" usando el dataframe conteo_origen
ggplot(conteo_origen, aes(x = comuna_origen_factor, y = conteo_viajes_origen)) +
geom_bar(stat = "identity", fill = "blue", color = "black") +
geom_text(aes(label = conteo_viajes_origen), vjust = -0.5) + # Mostrar el conteo encima de las barras
labs(title = "Distribución de Viajes por Comuna - Origen", x = "Comuna Origen", y = "Conteo de Viajes") +
scale_x_discrete(drop = FALSE) + # Asegurarse de que todas las comunas se muestren
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas para legibilidad
library(dplyr)
library(sf)
library(sp)
library(ggplot2)
# 1. Filtrar solo los viajes en bicicleta desde EncuestaOrigen
Bicicleta_Origen <- EncuestaOrigen %>%
filter(tipo_vehiculo == "Bicicleta")
# 2. Contar los viajes por comuna origen en Bicicleta_Origen
conteo_bicicleta_origen <- Bicicleta_Origen %>%
group_by(`comuna origen`) %>%
summarise(conteo_viajes_bicicleta_origen = n())
# 3. Unir los conteos de Bicicleta_Origen al shapefile usando la columna "comuna"
comunas_data_conteo_bicicleta <- merge(comunas_data, conteo_bicicleta_origen, by.x = "comuna", by.y = "comuna origen", all.x = TRUE)
# 4. Convertir el objeto sf a sp
comunas_sp_bicicleta <- as(comunas_data_conteo_bicicleta, "Spatial")
# 5. Crear el mapa con spplot usando el conteo de viajes en bicicleta
spplot(comunas_sp_bicicleta, "conteo_viajes_bicicleta_origen", main = "Conteo de Viajes en Bicicleta por Comuna de origen")
# 6. Crear una nueva columna 'comuna_origen_factor' como factor para bicicletas
conteo_bicicleta_origen$comuna_origen_factor <- as.factor(conteo_bicicleta_origen$`comuna origen`)
# 7. Gráfico de distribución para "comuna_origen_factor" usando el dataframe conteo_bicicleta_origen
ggplot(conteo_bicicleta_origen, aes(x = comuna_origen_factor, y = conteo_viajes_bicicleta_origen)) +
geom_bar(stat = "identity", fill = "blue", color = "black") +
geom_text(aes(label = conteo_viajes_bicicleta_origen), vjust = -0.5) + # Mostrar el conteo encima de las barras
labs(title = "Distribución de Viajes en Bicicleta por Comuna de origen", x = "Comuna Origen", y = "Conteo de Viajes en Bicicleta") +
scale_x_discrete(drop = FALSE) + # Asegurarse de que todas las comunas se muestren
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas para legibilidad
library(dplyr)
library(sf)
library(sp)
library(ggplot2)
# 1. Filtrar solo los viajes en moto desde EncuestaOrigen
Moto_Origen <- EncuestaOrigen %>%
filter(tipo_vehiculo == "Moto")
# 2. Contar los viajes por comuna origen en Moto_Origen
conteo_moto_origen <- Moto_Origen %>%
group_by(`comuna origen`) %>%
summarise(conteo_viajes_moto_origen = n())
# 3. Unir los conteos de Moto_Origen al shapefile usando la columna "comuna"
comunas_data_conteo_moto <- merge(comunas_data, conteo_moto_origen, by.x = "comuna", by.y = "comuna origen", all.x = TRUE)
# 4. Convertir el objeto sf a sp
comunas_sp_moto <- as(comunas_data_conteo_moto, "Spatial")
# 5. Crear el mapa con spplot usando el conteo de viajes en moto
spplot(comunas_sp_moto, "conteo_viajes_moto_origen", main = "Conteo de Viajes en Moto por Comuna de origen")
# 6. Crear una nueva columna 'comuna_origen_factor' como factor para moto
conteo_moto_origen$comuna_origen_factor <- as.factor(conteo_moto_origen$`comuna origen`)
# 7. Gráfico de distribución para "comuna_origen_factor" usando el dataframe conteo_moto_origen
ggplot(conteo_moto_origen, aes(x = comuna_origen_factor, y = conteo_viajes_moto_origen)) +
geom_bar(stat = "identity", fill = "blue", color = "black") +
geom_text(aes(label = conteo_viajes_moto_origen), vjust = -0.5) + # Mostrar el conteo encima de las barras
labs(title = "Distribución de Viajes en Moto por Comuna de origen", x = "Comuna Origen", y = "Conteo de Viajes en Moto") +
scale_x_discrete(drop = FALSE) + # Asegurarse de que todas las comunas se muestren
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas para legibilidad
Además, aunque el efecto es mínimo, mantener o mejorar los salarios podría ayudar a retener empleados, ya que un mayor ingreso tiene una ligera relación con una menor probabilidad de rotación.
library(dplyr)
library(sf)
library(sp)
library(ggplot2)
# 1. Filtrar solo los viajes en auto desde EncuestaOrigen
Auto_Origen <- EncuestaOrigen %>%
filter(tipo_vehiculo == "Automovil")
# 2. Contar los viajes por comuna origen en Auto_Origen
conteo_auto_origen <- Auto_Origen %>%
group_by(`comuna origen`) %>%
summarise(conteo_viajes_auto_origen = n())
# 3. Unir los conteos de Auto_Origen al shapefile usando la columna "comuna"
comunas_data_conteo_auto <- merge(comunas_data, conteo_auto_origen, by.x = "comuna", by.y = "comuna origen", all.x = TRUE)
# 4. Convertir el objeto sf a sp
comunas_sp_auto <- as(comunas_data_conteo_auto, "Spatial")
# 5. Crear el mapa con spplot usando el conteo de viajes en auto
spplot(comunas_sp_auto, "conteo_viajes_auto_origen", main = "Conteo de Viajes en Automóvil por Comuna de origen")
# 6. Crear una nueva columna 'comuna_origen_factor' como factor para auto
conteo_auto_origen$comuna_origen_factor <- as.factor(conteo_auto_origen$`comuna origen`)
# 7. Gráfico de distribución para "comuna_origen_factor" usando el dataframe conteo_auto_origen
ggplot(conteo_auto_origen, aes(x = comuna_origen_factor, y = conteo_viajes_auto_origen)) +
geom_bar(stat = "identity", fill = "blue", color = "black") +
geom_text(aes(label = conteo_viajes_auto_origen), vjust = -0.5) + # Mostrar el conteo encima de las barras
labs(title = "Distribución de Viajes en Automóvil por Comuna de origen", x = "Comuna Origen", y = "Conteo de Viajes en Automóvil") +
scale_x_discrete(drop = FALSE) + # Asegurarse de que todas las comunas se muestren
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas para legibilidad
library(dplyr)
library(sf)
library(sp)
library(ggplot2)
# 1. Contar los viajes por comuna destino en EncuestaDestino
conteo_destino <- EncuestaDestino %>%
group_by(`comuna destino`) %>%
summarise(conteo_viajes_destino = n())
# 2. Unir los conteos de comuna destino al shapefile usando la columna "comuna"
comunas_data_conteo_destino <- merge(comunas_data, conteo_destino, by.x = "comuna", by.y = "comuna destino", all.x = TRUE)
# 3. Convertir el objeto sf a sp
comunas_sp_destino <- as(comunas_data_conteo_destino, "Spatial")
# 4. Crear el mapa con spplot usando el conteo de viajes en comuna destino
spplot(comunas_sp_destino, "conteo_viajes_destino", main = "Conteo de Viajes por Comuna de Destino - Total Cali")
# 5. Crear una nueva columna 'comuna_destino_factor' como factor para comuna destino
conteo_destino$comuna_destino_factor <- as.factor(conteo_destino$`comuna destino`)
# 6. Gráfico de distribución para "comuna_destino_factor" usando el dataframe conteo_destino
ggplot(conteo_destino, aes(x = comuna_destino_factor, y = conteo_viajes_destino)) +
geom_bar(stat = "identity", fill = "blue", color = "black") +
geom_text(aes(label = conteo_viajes_destino), vjust = -0.5) + # Mostrar el conteo encima de las barras
labs(title = "Distribución de Viajes por Comuna de Destino", x = "Comuna Destino", y = "Conteo de Viajes") +
scale_x_discrete(drop = FALSE) + # Asegurarse de que todas las comunas se muestren
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas para legibilidad
library(dplyr)
library(sf)
library(sp)
library(ggplot2)
# 1. Filtrar solo los viajes en bicicleta desde EncuestaDestino
Bicicleta_Destino <- EncuestaDestino %>%
filter(tipo_vehiculo == "Bicicleta")
# 2. Contar los viajes por comuna destino en Bicicleta_Destino
conteo_bicicleta_destino <- Bicicleta_Destino %>%
group_by(`comuna destino`) %>%
summarise(conteo_viajes_bicicleta_destino = n())
# 3. Unir los conteos de Bicicleta_Destino al shapefile usando la columna "comuna"
comunas_data_conteo_bicicleta_destino <- merge(comunas_data, conteo_bicicleta_destino, by.x = "comuna", by.y = "comuna destino", all.x = TRUE)
# 4. Convertir el objeto sf a sp
comunas_sp_bicicleta_destino <- as(comunas_data_conteo_bicicleta_destino, "Spatial")
# 5. Crear el mapa con spplot usando el conteo de viajes en bicicleta
spplot(comunas_sp_bicicleta_destino, "conteo_viajes_bicicleta_destino", main = "Conteo de Viajes en Bicicleta por Comuna de Destino")
# 6. Crear una nueva columna 'comuna_destino_factor' como factor para bicicletas
conteo_bicicleta_destino$comuna_destino_factor <- as.factor(conteo_bicicleta_destino$`comuna destino`)
# 7. Gráfico de distribución para "comuna_destino_factor" usando el dataframe conteo_bicicleta_destino
ggplot(conteo_bicicleta_destino, aes(x = comuna_destino_factor, y = conteo_viajes_bicicleta_destino)) +
geom_bar(stat = "identity", fill = "blue", color = "black") +
geom_text(aes(label = conteo_viajes_bicicleta_destino), vjust = -0.5) + # Mostrar el conteo encima de las barras
labs(title = "Distribución de Viajes en Bicicleta por Comuna de Destino", x = "Comuna Destino", y = "Conteo de Viajes en Bicicleta") +
scale_x_discrete(drop = FALSE) + # Asegurarse de que todas las comunas se muestren
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas para legibilidad
library(dplyr)
library(sf)
library(sp)
library(ggplot2)
# 1. Filtrar solo los viajes en moto desde EncuestaDestino
Moto_Destino <- EncuestaDestino %>%
filter(tipo_vehiculo == "Moto")
# 2. Contar los viajes por comuna destino en Moto_Destino
conteo_moto_destino <- Moto_Destino %>%
group_by(`comuna destino`) %>%
summarise(conteo_viajes_moto_destino = n())
# 3. Unir los conteos de Moto_Destino al shapefile usando la columna "comuna"
comunas_data_conteo_moto_destino <- merge(comunas_data, conteo_moto_destino, by.x = "comuna", by.y = "comuna destino", all.x = TRUE)
# 4. Convertir el objeto sf a sp
comunas_sp_moto_destino <- as(comunas_data_conteo_moto_destino, "Spatial")
# 5. Crear el mapa con spplot usando el conteo de viajes en moto
spplot(comunas_sp_moto_destino, "conteo_viajes_moto_destino", main = "Conteo de Viajes en Moto por Comuna de Destino")
# 6. Crear una nueva columna 'comuna_destino_factor' como factor para moto
conteo_moto_destino$comuna_destino_factor <- as.factor(conteo_moto_destino$`comuna destino`)
# 7. Gráfico de distribución para "comuna_destino_factor" usando el dataframe conteo_moto_destino
ggplot(conteo_moto_destino, aes(x = comuna_destino_factor, y = conteo_viajes_moto_destino)) +
geom_bar(stat = "identity", fill = "blue", color = "black") +
geom_text(aes(label = conteo_viajes_moto_destino), vjust = -0.5) + # Mostrar el conteo encima de las barras
labs(title = "Distribución de Viajes en Moto por Comuna de Destino", x = "Comuna Destino", y = "Conteo de Viajes en Moto") +
scale_x_discrete(drop = FALSE) + # Asegurarse de que todas las comunas se muestren
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas para legibilidad
library(dplyr)
library(sf)
library(sp)
library(ggplot2)
# 1. Filtrar solo los viajes en auto desde EncuestaDestino
Auto_Destino <- EncuestaDestino %>%
filter(tipo_vehiculo == "Automovil")
# 2. Contar los viajes por comuna destino en Auto_Destino
conteo_auto_destino <- Auto_Destino %>%
group_by(`comuna destino`) %>%
summarise(conteo_viajes_auto_destino = n())
# 3. Unir los conteos de Auto_Destino al shapefile usando la columna "comuna"
comunas_data_conteo_auto_destino <- merge(comunas_data, conteo_auto_destino, by.x = "comuna", by.y = "comuna destino", all.x = TRUE)
# 4. Convertir el objeto sf a sp
comunas_sp_auto_destino <- as(comunas_data_conteo_auto_destino, "Spatial")
# 5. Crear el mapa con spplot usando el conteo de viajes en auto
spplot(comunas_sp_auto_destino, "conteo_viajes_auto_destino", main = "Conteo de Viajes en Automóvil por Comuna de Destino")
# 6. Crear una nueva columna 'comuna_destino_factor' como factor para auto
conteo_auto_destino$comuna_destino_factor <- as.factor(conteo_auto_destino$`comuna destino`)
# 7. Gráfico de distribución para "comuna_destino_factor" usando el dataframe conteo_auto_destino
ggplot(conteo_auto_destino, aes(x = comuna_destino_factor, y = conteo_viajes_auto_destino)) +
geom_bar(stat = "identity", fill = "blue", color = "black") +
geom_text(aes(label = conteo_viajes_auto_destino), vjust = -0.5) + # Mostrar el conteo encima de las barras
labs(title = "Distribución de Viajes en Automóvil por Comuna de Destino", x = "Comuna Destino", y = "Conteo de Viajes en Automóvil") +
scale_x_discrete(drop = FALSE) + # Asegurarse de que todas las comunas se muestren
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # Rotar etiquetas para legibilidad
El análisis de las distribuciones de viajes por comuna en Origen me indica una concentración de los trayectos en ciertas zonas de Cali. Al eliminar los viajes etiquetados como “Fuera de Cali”, que no pueden ser representados en el shapefile de las comunas de la ciudad, observamos que las comunas 2, 17, y 18 destacan como las más frecuentes. La comuna 2, en particular, es la que concentra una mayor cantidad de viajes de origen, superando los 2.900 trayectos. Por otro lado, comunas como la 12 y la 14 presentan una menor frecuencia de viajes, con menos de 400 trayectos en total. Esto indica una distribución desigual de los flujos de origen en la ciudad, donde ciertas zonas funcionan como importantes polos generadores de viajes.
Para los viajes en bicicleta, la distribución muestra una concentración más moderada. Las comunas 2, 18, y 16 son las que más viajes generan en este tipo de transporte, con la comuna 2 alcanzando el mayor número de viajes, 159 en total. Sin embargo, en este caso las diferencias entre las comunas no son tan drásticas como en el análisis general, aunque algunas comunas, como la 12, se mantienen con una baja frecuencia de viajes en bicicleta, con solo 14 trayectos. Esto sugiere que el uso de la bicicleta está más repartido entre las comunas, pero sigue habiendo una tendencia hacia ciertos sectores.
En cuanto a los viajes en moto, el patrón es más concentrado. La comuna 2 vuelve a ser un punto destacado, con más de 1.400 viajes de origen, seguida por la comuna 18 con 1.280 trayectos. Las comunas 0 y 1 también registran una actividad significativa en este tipo de transporte. Al igual que con la bicicleta, la comuna 12 se posiciona entre las menos activas, con solo 176 viajes. Las comunas 16 y 18 demuestran ser áreas de alto uso de la moto, lo cual podría estar relacionado con la accesibilidad o la infraestructura disponible para este tipo de vehículos.
Por último, en los viajes en automóvil, la concentración se observa principalmente en las comunas 2, 18, y 17, con la comuna 2 liderando una vez más, con más de 1.100 trayectos. En este caso, la comuna 18 también presenta un alto volumen de viajes, lo cual es consistente con su alto número de viajes en otros modos de transporte. Las comunas 12 y 10, en cambio, tienen un número significativamente menor de viajes en automóvil, sugiriendo que estas zonas podrían tener menos dependencia del vehículo privado en comparación con otras partes de la ciudad.
El análisis de las distribuciones de viajes por comuna en Destino muestra una dinámica algo diferente a la de Origen. Las comunas 2, 3, y 18 son las que concentran la mayor cantidad de viajes, destacándose la comuna 2 con más de 4.800 viajes registrados. Este resultado es consistente en términos de su papel central en la ciudad. Sin embargo, observamos también que las comunas con menor frecuencia de viajes, como la comuna 12 y la comuna 14, permanecen en niveles bajos, registrando menos de 400 viajes. La eliminación de los viajes “Fuera de Cali” sigue siendo importante, ya que el shapefile utilizado representa solo las comunas de Cali.
Al observar los viajes en bicicleta con respecto a los destinos, la comuna 2 y la comuna 18 nuevamente sobresalen, con 218 y 147 viajes, respectivamente. Sin embargo, en este caso, la diferencia entre las comunas es más notoria, con varias comunas registrando menos de 50 viajes en total. Las comunas 0 y 12, en particular, presentan muy pocos viajes en bicicleta hacia ellas como destino, lo que puede ser indicativo de una infraestructura menos favorable o una menor actividad en este modo de transporte en esas zonas.
Los viajes en moto muestran un patrón de concentración similar al de los viajes generales y en bicicleta, con la comuna 2 dominando con más de 2.100 viajes de destino, seguida por la comuna 18 con más de 1.400. A diferencia de otros medios, el uso de la moto está más uniformemente distribuido entre las comunas, aunque sigue existiendo una concentración notable en las zonas más centrales y de mayor actividad económica.
Finalmente, los viajes en automóvil mantienen el patrón de concentración en las comunas 2, 18, y 19, con la comuna 2 registrando más de 2.000 viajes de destino en total. El automóvil, como modo de transporte, parece seguir las mismas tendencias que otros medios, pero con una mayor disparidad entre las comunas que registran altos niveles de actividad y aquellas con pocos viajes, como la comuna 12, que tiene menos de 100 viajes en total. Esto sugiere que el uso del automóvil está estrechamente ligado a ciertas zonas de la ciudad, con una clara preferencia por destinos en áreas más centrales y de mayor desarrollo económico.
En resumen, tanto en los viajes de Origen como en los de Destino, se observa que las comunas 2, 18 y 17 son las más activas, mientras que las comunas 12 y 14 tienden a registrar menos actividad en casi todos los medios de transporte.
Fin del documento