Introducción

Este informe presenta un análisis detallado de la movilidad urbana en la ciudad de Cali, a partir de los datos recolectados y propiciados por la universidad para tal fin. El enfoque principal se centra en los trayectos realizados en bicicleta, moto y automóvil, con el fin de comprender los patrones de origen y destino, así como los motivos asociados a cada medio de transporte. Para ello, se aplicaron técnicas de análisis espacial utilizando R, incluyendo visualizaciones geográficas a través de mapas temáticos y la elaboración de tablas descriptivas.

Carga y preparación de los datos

Datos de origen (Generales)

encuesta <- encuesta %>% clean_names()

# Tabla de conteo de trayectos por comuna de origen
origen_general <- encuesta %>%
  group_by(comuna_origen) %>%
  summarise(total = n()) %>%
  mutate(comuna_origen = as.numeric(comuna_origen))

# Conteo de trayectos por comuna de origen al shapefile
comunas_origen_general <- comunas %>%
  left_join(origen_general, by = c("comuna" = "comuna_origen"))

# Mapa
ggplot(data = comunas_origen_general) +
  geom_sf(aes(fill = total), color = "white") +
  scale_fill_viridis_c(option = "inferno", name = "N° de trayectos", na.value = "gray90") +
  labs(
    title = "📍 Mapa general de origen de trayectos - Cali",
    subtitle = "Cantidad total de trayectos por comuna de origen",
    caption = "Fuente: Encuestas de Movilidad Urbana de Cali"
  ) +
  theme_minimal()+
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

# Tabla de origen_general
origen_general %>%
  kable(caption = "Conteo de trayectos por comuna de origen en Cali") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Conteo de trayectos por comuna de origen en Cali
comuna_origen total
0 672
1 794
2 2968
3 2121
4 1493
5 664
6 998
7 734
8 1124
9 952
10 1401
11 925
12 348
13 1238
14 685
15 1171
16 993
17 2377
18 1536
19 2850
20 733
21 818
22 1153
NA 6306

Los datos del análisis preliminar de los trayectos de origen reportados muestran una distribución desigual según la comuna de origen, lo que sugiere varias áreas clave de interés. Las comunas con mayor número de trayectos (como las comunas 2, 19 y 17) podrían estar relacionadas con una mayor actividad de desplazamiento, ya sea por densidad poblacional, ubicación estratégica o infraestructura de transporte. En contraste, comunas con menor cantidad de trayectos, como las comunas 0 y 12, pueden estar menos conectadas o tener una menor demanda de transporte, lo que podría ser indicativo de la necesidad de mejorar la infraestructura o los servicios de movilidad en esas áreas.

Se logra evidenciar, también, disparidad en la cantidad de trayectos por comuna, lo que sugiere que ciertas zonas podrían beneficiarse de intervenciones específicas en términos de infraestructura y políticas de movilidad, tales como la mejora del transporte público o la creación de carriles exclusivos para bicicletas.

Datos de destino (Generales)

# Mapa de destino general
destino_general <- encuesta %>%
  group_by(comuna_destino) %>%
  summarise(total = n()) %>%
  mutate(comuna_destino = as.numeric(comuna_destino))

comunas_destino_general <- comunas %>%
  left_join(destino_general, by = c("comuna" = "comuna_destino"))

# Mapa con números de comuna
ggplot(comunas_destino_general) +
  geom_sf(aes(fill = total), color = "white") +
  scale_fill_viridis_c() +
  labs(title = "Mapa general de destino de viajes",
       fill = "Cantidad de viajes") +
  theme_minimal() +
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

# Tabla de conteo de trayectos por comuna de destino
destino_general <- encuesta %>%
  group_by(comuna_destino) %>%
  summarise(total = n()) %>%
  mutate(comuna_destino = as.numeric(comuna_destino))

# Tabla destino_general
destino_general %>%
  kable(caption = "Conteo de trayectos por comuna de destino en Cali") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Conteo de trayectos por comuna de destino en Cali
comuna_destino total
0 788
1 230
2 4810
3 3859
4 1856
5 522
6 716
7 748
8 1025
9 1279
10 927
11 564
12 246
13 673
14 379
15 579
16 743
17 2164
18 662
19 3158
20 351
21 515
22 1860
NA 6400

El análisis de los trayectos en función de los destinos revela una distribución asimétrica de los viajes en Cali, con ciertas comunas destacándose como destinos predominantes. Las comunas con mayor volumen de trayectos hacia ellas, como las comunas 2, 3, 19 y 17, sugieren una alta concentración de actividades económicas, servicios o infraestructura que atraen a un número significativo de usuarios. Esto podría estar relacionado con factores como la densidad poblacional, la accesibilidad a servicios clave o la ubicación estratégica de estas áreas dentro de la red de transporte urbano.

En contraste, algunas comunas, como la 0 y la 20, presentan una cantidad considerablemente menor de trayectos hacia ellas, lo que podría indicar que estas áreas no concentran alta demanda de movilidad o que existen limitaciones en términos de conectividad y accesibilidad. Estas diferencias en la distribución de los destinos reflejan posibles disparidades en la infraestructura de transporte, que pueden requerir una evaluación más profunda para identificar, seguramente, algunas oportunidades de mejora en las zonas menos visitadas.

Análisis por tipo de vehículo

# Recodificación por tipo de vehículo
encuesta <- encuesta %>%
  mutate(tipo_vehiculo = recode(as.character(`tipo_de_vehiculo`),
                                "1" = "Bicicleta",
                                "2" = "Moto",
                                "3" = "Automóvil"))

Mapa de viajes en bicicleta

Datos de origen (Bicicleta)

# Subconjunto: trayectos en bicicleta
bicicleta <- encuesta %>%
  filter(tipo_vehiculo == "Bicicleta")

# Conteo de trayectos por comuna origen
origen_bici <- bicicleta %>%
  group_by(comuna_origen) %>%
  summarise(total = n()) %>%
  mutate(comuna_origen = as.numeric(comuna_origen))

# Tabla para inspección
origen_bici %>%
  kable(caption = "Distribución de trayectos en bicicleta por comuna de origen",
        col.names = c("Comuna de Origen", "Número de Trayectos")) %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Distribución de trayectos en bicicleta por comuna de origen
Comuna de Origen Número de Trayectos
0 43
1 36
2 159
3 99
4 74
5 38
6 44
7 35
8 52
9 53
10 82
11 52
12 14
13 76
14 37
15 70
16 73
17 141
18 111
19 141
20 46
21 44
22 55
NA 156
# Unión con el shapefile por comuna
comunas_bici <- comunas %>%
  mutate(comuna = as.numeric(comuna)) %>%
  left_join(origen_bici, by = c("comuna" = "comuna_origen"))

# Mapa
ggplot(comunas_bici) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Origen de trayectos en bicicleta - Cali",
       fill = "Cantidad") +
  theme_minimal()+
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

Comunas con alta actividad de origen:

Las comunas 2, 17 y 19 presentan un volumen elevado de trayectos en bicicleta, lo que podría indicar que estas áreas son centros residenciales o comerciales de donde los usuarios inician sus desplazamientos. Esto puede reflejar un alto uso de la bicicleta para el transporte diario, como para ir al trabajo, a la escuela o realizar actividades cotidianas.

Comunas con baja actividad de origen:

Por otro lado, las comunas 12, 13 y 15 tienen una presencia más baja en cuanto a trayectos de bicicleta. Esto podría estar relacionado con una menor infraestructura ciclista o con una menor densidad de destinos relevantes en esas áreas, lo que hace que el uso de la bicicleta no sea tan común para desplazamientos largos desde esas zonas.

Zonas periféricas:

Se observa que algunas comunas ubicadas en las zonas periféricas o de rango más rural (como las comunas Fuera de Cali) también presentan una cantidad considerable de trayectos de bicicleta. Esto podría reflejar patrones de movilidad entre las periferias de la ciudad y el centro urbano, como desplazamientos hacia áreas laborales o comerciales.

Datos de destino (Bicicleta)

# Mapa de destino bicicleta
destino_bici <- encuesta %>%
  filter(tipo_vehiculo == "Bicicleta") %>%
  group_by(comuna_destino) %>%
  summarise(total = n()) %>%
  mutate(comuna_destino = as.numeric(comuna_destino))

# Tabla para inspección
destino_bici %>%
  kable(caption = "Distribución de trayectos en bicicleta por comuna de destino",
        col.names = c("Comuna de Destino", "Número de Trayectos")) %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Distribución de trayectos en bicicleta por comuna de destino
Comuna de Destino Número de Trayectos
0 46
1 12
2 218
3 189
4 85
5 41
6 34
7 41
8 54
9 65
10 43
11 29
12 15
13 33
14 22
15 20
16 35
17 115
18 31
19 147
20 25
21 26
22 100
NA 305
comunas_destino_bici <- comunas %>%
  left_join(destino_bici, by = c("comuna" = "comuna_destino"))

ggplot(comunas_destino_bici) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c() +
  labs(title = "Destino de trayectos en bicicleta",
       fill = "Cantidad de viajes") +
  theme_minimal()

Comunas con alta actividad de destino:

Las comunas 2, 19 y 17 son las que más destacan en cuanto a la cantidad de trayectos en bicicleta, lo que sugiere que estos lugares son destinos importantes para los ciclistas. Pueden ser zonas con una alta concentración de trabajo, comercio o actividad recreativa, lo que atrae a las personas a utilizarlas como puntos de destino.

Comunas con menor actividad de destino:

Algunas comunas, como las comunas 12, 15 y 5, muestran una menor cantidad de trayectos de bicicleta. Esto podría reflejar una menor concentración de destinos relevantes en esas áreas, o bien una falta de infraestructura adecuada para fomentar el uso de la bicicleta.

Zonas rurales o periféricas:

Similar al análisis de origen, se observa una fuerte relación con las comunas Fuera de Cali, que también aparecen como destinos frecuentes. Esto sugiere que los trayectos en bicicleta no solo ocurren dentro de los límites urbanos, sino que existe un flujo significativo de personas viajando hacia o desde áreas periféricas o rurales, lo que puede estar relacionado con el transporte hacia áreas de trabajo fuera del centro de la ciudad.

# Resumen estadístico del conteo de trayectos por comuna
summary(comunas_bici$total)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   14.00   44.00   54.00   69.64   80.50  159.00
# Tabla de datos con conteos por comuna
head(comunas_bici %>% dplyr::select(comuna, total))
## Simple feature collection with 6 features and 2 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 1053868 ymin: 863572.5 xmax: 1066087 ymax: 878628.1
## Projected CRS: MAGNA_Colombia_Cali
##   comuna total                       geometry
## 1      2   159 POLYGON ((1059648 874236.3,...
## 2      1    36 POLYGON ((1054094 875172.8,...
## 3      3    99 POLYGON ((1061757 874615.5,...
## 4     19   141 POLYGON ((1057817 873269.4,...
## 5     15    70 POLYGON ((1065485 869864.1,...
## 6     17   141 POLYGON ((1061675 868320.9,...

El resumen estadístico muestra una gran variabilidad en cuanto a cantidad de trayectos en bicicleta entre las comunas de Cali, con valores que oscilan entre 14 y 159 trayectos. La mediana (54) y la media (69.64) indican que, aunque la mayoría de las comunas registran niveles moderados de desplazamientos, hay algunas que destacan por un volumen significativamente superior, como es el caso de la comuna 2. Esta dispersión sugiere diferencias marcadas en el uso de la bicicleta como medio de transporte, posiblemente por factores como la infraestructura ciclista, la topografía, la conectividad con puntos de interés y las condiciones socioeconómicas.

Comunas con más y menos trayectos

La asociación entre comunas permitió una representación espacial precisa que facilita la identificación visual de patrones y zonas con alta o baja intensidad de movilidad ciclista. Tenemos:

# Tablas individuales para mostrar en formato tabla
tabla_mayor <- comunas_bici %>%
  arrange(desc(total)) %>%
  slice_head(n = 10)

tabla_menor <- comunas_bici %>%
  arrange(total) %>%
  slice_head(n = 10)

tabla_mayor %>%
  kable(caption = "Top 10 comunas con mayor cantidad de trayectos en bicicleta") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 comunas con mayor cantidad de trayectos en bicicleta
OBJECTID gid comuna nombre total geometry
1 107 2 Comuna 2 159 POLYGON ((1059648 874236.3,…
4 110 19 Comuna 19 141 POLYGON ((1057817 873269.4,…
6 104 17 Comuna 17 141 POLYGON ((1061675 868320.9,…
7 105 18 Comuna 18 111 POLYGON ((1059061 867223.6,…
3 109 3 Comuna 3 99 POLYGON ((1061757 874615.5,…
20 100 10 Comuna 10 82 POLYGON ((1061946 870944.4,…
16 96 13 Comuna 13 76 POLYGON ((1065206 872591.4,…
10 90 4 Comuna 4 74 POLYGON ((1063833 877507.1,…
22 102 16 Comuna 16 73 POLYGON ((1062914 866767.5,…
5 103 15 Comuna 15 70 POLYGON ((1065485 869864.1,…
tabla_menor %>%
  kable(caption = "Top 10 comunas con menor cantidad de trayectos en bicicleta") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 comunas con menor cantidad de trayectos en bicicleta
OBJECTID gid comuna nombre total geometry
17 97 12 Comuna 12 14 POLYGON ((1065201 872590, 1…
12 92 7 Comuna 7 35 POLYGON ((1066866 875282.2,…
2 108 1 Comuna 1 36 POLYGON ((1054094 875172.8,…
18 98 14 Comuna 14 37 POLYGON ((1066257 872256.8,…
11 91 5 Comuna 5 38 POLYGON ((1064821 877198.6,…
9 89 6 Comuna 6 44 POLYGON ((1065143 879409.5,…
15 95 21 Comuna 21 44 POLYGON ((1066744 873158.6,…
21 101 20 Comuna 20 46 POLYGON ((1058420 870976.2,…
13 93 8 Comuna 8 52 POLYGON ((1063039 874065.4,…
19 99 11 Comuna 11 52 POLYGON ((1063357 870771.6,…

A continuación, se presenta una comparación visual que refuerza esta desigualdad espacial en la movilidad ciclista urbana:

# Comunas con más y menos trayectos
comunas_bici_resumen <- bind_rows(
  comunas_bici %>%
    arrange(desc(total)) %>%
    head(10) %>%
    mutate(tipo = "Mayor cantidad de trayectos"),
  
  comunas_bici %>%
    arrange(total) %>%
    head(10) %>%
    mutate(tipo = "Menor cantidad de trayectos")
)

# Visualización en un gráfico
ggplot(comunas_bici_resumen) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Comparación de trayectos en bicicleta por comuna en Cali",
       fill = "Cantidad de trayectos") +
  facet_wrap(~tipo) +
  theme_minimal()+
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

El contraste entre las comunas con mayor y menor número de trayectos evidencia disparidades importantes en el uso de la bicicleta como medio de transporte. Mientras que comunas como la 2, 17 y 19 presentan una alta concentración de trayectos, otras como la 12, 7 y 1 muestran una participación significativamente menor. Estas diferencias podrían estar relacionadas con factores como la presencia de infraestructura ciclística, la conectividad vial, las pendientes del terreno o incluso aspectos sociales y económicos.

Análisis ampliado de la movilidad en bicicleta en Cali

1. Comunicación territorial del origen de los trayectos

Los datos revelan que las comunas con mayor número de trayectos en bicicleta son:

  • Comuna 2 (159 trayectos)
  • Comunas 17 y 19 (141 trayectos cada una)
  • Comuna 18 (111 trayectos)
  • Comuna 3 (99 trayectos)

Estas comunas se caracterizan por una mezcla de zonas residenciales, comerciales y universitarias (como en el caso de la Comuna 2). La alta concentración de trayectos puede deberse a una mayor densidad poblacional, la cultura de movilidad alternativa más desarrollada precisamente debido a ello o presencia de equipamientos educativos o laborales accesibles en bicicleta.

2. Comunicación territorial del destino de los trayectos

# Conteo por comuna destino
destino_bici <- bicicleta %>%
  group_by(comuna_destino) %>%
  summarise(total = n()) %>%
  mutate(comuna_destino = as.numeric(comuna_destino))

# Unión con el shapefile
comunas_destino_bici <- comunas %>%
  left_join(destino_bici, by = c("comuna" = "comuna_destino"))

# Tabla 'comunas_destino_bici'
comunas_destino_bici %>%
  kable(caption = "Comunas con trayectos en bicicleta por destino") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Comunas con trayectos en bicicleta por destino
OBJECTID gid comuna nombre total geometry
1 107 2 Comuna 2 218 POLYGON ((1059648 874236.3,…
2 108 1 Comuna 1 12 POLYGON ((1054094 875172.8,…
3 109 3 Comuna 3 189 POLYGON ((1061757 874615.5,…
4 110 19 Comuna 19 147 POLYGON ((1057817 873269.4,…
5 103 15 Comuna 15 20 POLYGON ((1065485 869864.1,…
6 104 17 Comuna 17 115 POLYGON ((1061675 868320.9,…
7 105 18 Comuna 18 31 POLYGON ((1059061 867223.6,…
8 106 22 Comuna 22 100 POLYGON ((1059486 864976.4,…
9 89 6 Comuna 6 34 POLYGON ((1065143 879409.5,…
10 90 4 Comuna 4 85 POLYGON ((1063833 877507.1,…
11 91 5 Comuna 5 41 POLYGON ((1064821 877198.6,…
12 92 7 Comuna 7 41 POLYGON ((1066866 875282.2,…
13 93 8 Comuna 8 54 POLYGON ((1063039 874065.4,…
14 94 9 Comuna 9 65 POLYGON ((1062123 873592.6,…
15 95 21 Comuna 21 26 POLYGON ((1066744 873158.6,…
16 96 13 Comuna 13 33 POLYGON ((1065206 872591.4,…
17 97 12 Comuna 12 15 POLYGON ((1065201 872590, 1…
18 98 14 Comuna 14 22 POLYGON ((1066257 872256.8,…
19 99 11 Comuna 11 29 POLYGON ((1063357 870771.6,…
20 100 10 Comuna 10 43 POLYGON ((1061946 870944.4,…
21 101 20 Comuna 20 25 POLYGON ((1058420 870976.2,…
22 102 16 Comuna 16 35 POLYGON ((1062914 866767.5,…

Las comunas con más salidas de trayectos en bicicleta se ubican principalmente en el norte-centro y sur-centro de Cali, zonas densamente pobladas con alta concentración de instituciones educativas, empleo y equipamientos urbanos. Es probable que la infraestructura existente (como ciclorrutas en la Calle 5ª o la Av. Pasoancho) influya positivamente en la elección de este modo de transporte.

Las comunas 2, 3, 19 y 17 no solo son puntos de partida, sino también destinos frecuentes, lo cual indica trayectos intracomunales o hacia zonas cercanas.

La comuna 22 aparece como destino frecuente, lo que podría estar reflejando flujos hacia zonas más periféricas donde puede haber zonas industriales o residenciales nuevas.

3. Motivo del viaje

# Diccionario de motivos
motivos_dict <- tibble::tibble(
  que_va_hacer_a_ese_lugar = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 77),
  motivo = c(
    "A trabajar",
    "Asuntos de Trabajo",
    "Estudiar",
    "Recibir Atención de Salud",
    "Ver a Alguien",
    "Volver a casa",
    "Buscar / Dejar a Alguien",
    "Buscar / Dejar algo",
    "Comer / Tomar algo",
    "Compras",
    "Trámites",
    "Recreación",
    "Buscando Trabajo",
    "Otra cosa"
  )
)

# Conteo de motivos, unión con nombres y ordenamiento
motivo_bici <- bicicleta %>%
  count(que_va_hacer_a_ese_lugar) %>%
  left_join(motivos_dict, by = "que_va_hacer_a_ese_lugar") %>%
  mutate(motivo = ifelse(is.na(motivo), "No especificado", motivo)) %>%
  arrange(desc(n))

# Tabla
motivo_bici %>%
  dplyr::select(ID = que_va_hacer_a_ese_lugar, Motivo = motivo, Cantidad = n) %>%
  kable(caption = "Distribución de motivos de viaje en bicicleta", 
        col.names = c("ID", "Motivo del viaje", "Cantidad")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Distribución de motivos de viaje en bicicleta
ID Motivo del viaje Cantidad
1 A trabajar 930
6 Volver a casa 264
2 Asuntos de Trabajo 172
11 Trámites 75
3 Estudiar 46
10 Compras 44
5 Ver a Alguien 40
12 Recreación 36
7 Buscar / Dejar a Alguien 32
4 Recibir Atención de Salud 31
77 Otra cosa 23
13 Buscando Trabajo 18
8 Buscar / Dejar algo 13
NA No especificado 4
9 Comer / Tomar algo 3
  • Los resultados demuestran que el motivo predominante para los viajes realizados en bicicleta es “ir a trabajar” (930 trayectos), lo que evidencia el rol fundamental de este modo de transporte en los desplazamientos laborales. Esta alta frecuencia refuerza la noción de que la bicicleta no solo es un medio de transporte alternativo, sino también una herramienta funcional en la movilidad diaria de quienes la utilizan.

  • Como segundo motivo más común está el “volver a casa” (264 trayectos), lo que sugiere que muchos de estos viajes forman parte de trayectos más amplios, posiblemente intermodales, donde la bicicleta se utiliza en el tramo de retorno tras haber llegado al destino inicial por otro medio de transporte.

  • “Asuntos de trabajo” (172 trayectos) y “estudiar” (46 trayectos) también aparecen con una presencia significativa, indicando que la bicicleta se emplea en actividades productivas y educativas, no solo para ocio o diligencias menores.

  • Motivos como “trámites” (75 trayectos), “compras” (44) y “ver a alguien” (40) confirman que la bicicleta también es utilizada para cubrir necesidades cotidianas, probablemente dentro de la misma comuna o en trayectos de corta distancia.

  • Aunque los motivos recreativos (36 trayectos para “recreación” y 23 trayectos catalogados como “otra cosa”) tienen una presencia menor, su presencia en este punto revela el uso de la bicicleta asociada al esparcimiento, la salud y el bienestar.

Por otra parte, algo interesante y bastante bueno es la baja cantidad de trayectos sin motivo especificado (4) porque esto muestra alto nivel de completitud en la recolección de datos, lo que respalda la confiabilidad del análisis.

4. Relación entre comunas de origen y destino

viajes_por_comunas <- bicicleta %>%
  group_by(comuna_origen, comuna_destino) %>%
  summarise(n = n(), .groups = "drop") %>%
  arrange(desc(n))

viajes_por_comunas %>%
  slice_head(n = 10) %>%
  kable(caption = "Top 10 viajes entre comunas de origen y destino en bicicleta") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 viajes entre comunas de origen y destino en bicicleta
comuna_origen comuna_destino n
02 Fuera de Cali 35
17 Fuera de Cali 30
Fuera de Cali Fuera de Cali 28
19 Fuera de Cali 26
02 02 24
18 Fuera de Cali 24
19 02 22
02 03 21
18 03 21
18 02 20
  • Alta conexión con “Fuera de Cali”: Muchos viajes inician o terminan fuera del perímetro urbano. Esto puede reflejar dinámicas metropolitanas o zonas rurales bien conectadas a Cali a través de vías o transporte o en proceso de urbanización o tener una dependencia económica/social de Cali.

  • Intercambios internos destacados: Se notan flujos significativos entre comunas 2, 3, 18 y 19. Esto puede deberse a la alta densidad poblacional y presencia de instituciones educativas, comercios y servicios, así como zonas con actividad económica y social que generan o atraen viajes en bicicleta, y probablemente, debido a lo anterior también se cuente en estas comunas infraestructura favorable para quienes se transporten en bicicleta.

  • La comuna 2 aparece con frecuencia, tanto como origen como destino, lo que indica una posible centralidad funcional en la movilidad en bici.

Mapa de viajes en moto

Datos de destino (Moto)

moto <- encuesta %>%
  filter(tipo_vehiculo == "Moto")

# Conteo de trayectos por comuna origen
origen_moto <- moto %>%
  group_by(comuna_origen) %>%
  summarise(total = n()) %>%
  mutate(comuna_origen = as.numeric(comuna_origen))

# Tabla
origen_moto %>%
  kable(caption = "Distribución de trayectos en moto por comuna de origen",
        col.names = c("Comuna de Origen", "Número de Trayectos")) %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Distribución de trayectos en moto por comuna de origen
Comuna de Origen Número de Trayectos
0 259
1 375
2 1414
3 970
4 720
5 319
6 473
7 350
8 552
9 413
10 675
11 431
12 176
13 554
14 310
15 536
16 450
17 1136
18 746
19 1280
20 339
21 378
22 515
NA 2706
# Unión con el shapefile por comuna
comunas_moto <- comunas %>%
  mutate(comuna = as.numeric(comuna)) %>%
  left_join(origen_moto, by = c("comuna" = "comuna_origen"))

# Mapa
ggplot(comunas_moto) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Origen de trayectos en moto - Cali",
       fill = "Cantidad") +
  theme_minimal()+
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

El mapa temático de los trayectos realizados en moto en la ciudad de Cali revela una clara concentración de viajes en ciertas comunas. Se observa un uso intensivo en el oriente y suroriente de la ciudad, especialmente en comunas como la 2, 19 y 17, donde se registran los valores más altos de trayectos. Esto podría estar asociado a factores como la alta densidad poblacional, la existencia de zonas residenciales populares con menor cobertura del transporte público y una mayor disponibilidad de motocicletas como medio de transporte accesible y flexible.

Además, comunas como la 3, 18 y 10 también presentan volúmenes significativos, lo que sugiere que la motocicleta es ampliamente utilizada tanto para trayectos cotidianos como para actividades laborales o personales. El número elevado de trayectos con origen “Fuera de Cali” (comuna 0 y NA) también puede indicar una relación importante entre zonas rurales o periurbanas y la ciudad, consolidando la moto como un vehículo clave en la movilidad regional.

Datos de destino (Moto)

# Conteo de trayectos por comuna destino
destino_moto <- moto %>%
  group_by(comuna_destino) %>%
  summarise(total = n()) %>%
  mutate(comuna_destino = as.numeric(comuna_destino))

# Tabla para inspección de destino
destino_moto %>%
  kable(caption = "Distribución de trayectos en moto por comuna de destino",
        col.names = c("Comuna de Destino", "Número de Trayectos")) %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Distribución de trayectos en moto por comuna de destino
Comuna de Destino Número de Trayectos
0 390
1 112
2 2177
3 1734
4 846
5 215
6 323
7 353
8 470
9 608
10 419
11 254
12 128
13 346
14 188
15 271
16 327
17 927
18 302
19 1421
20 151
21 243
22 911
NA 2961
# Unión con el shapefile por comuna
comunas_destino_moto <- comunas %>%
  left_join(destino_moto, by = c("comuna" = "comuna_destino"))

# Mapa
ggplot(comunas_destino_moto) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Destino de trayectos en moto - Cali",
       fill = "Cantidad") +
  theme_minimal() +
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

En cuanto al destino de los trayectos, la Comuna 2 se destaca ampliamente con 2.177 trayectos, seguida por la Comuna 3 (1.734) y la Comuna 19 (1.421). Este patrón sugiere que estas zonas podrían estar cumpliendo funciones de centralidad urbana, ya sea por concentración de actividades económicas, servicios, equipamientos educativos o trámites.

La alta concentración de destinos en el nororiente y centro-sur refuerza la idea de que la moto se usa no solo para trayectos residenciales, sino también para movilidad productiva, permitiendo alcanzar destinos estratégicos para el día a día. También es notoria la cantidad de trayectos cuyo destino está clasificado como “Fuera de Cali” (NA y 0), lo cual indica posibles movimientos intermunicipales o hacia zonas rurales conectadas funcionalmente con la ciudad.

En conjunto, estos datos reflejan que la motocicleta no solo responde a necesidades individuales de movilidad, sino que también está integrada a dinámicas metropolitanas y económicas más amplias.

Resumen estadístico del conteo de trayectos por comuna

summary(comunas_moto$total)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   176.0   375.8   494.0   596.0   708.8  1414.0

El número de trayectos en moto por comuna varía entre 176 y 1414. El promedio se sitúa en 596 viajes, mientras que la mediana es de 494, lo que indica una ligera asimetría hacia comunas con mayor volumen de trayectos. El primer cuartil (376) y el tercer cuartil (709) muestran que la mayoría de las comunas se encuentran en un rango intermedio, aunque unas pocas se destacan con valores significativamente superiores.

Tablas de datos con conteos por comuna

head(comunas_moto %>% dplyr::select(comuna, total))
## Simple feature collection with 6 features and 2 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 1053868 ymin: 863572.5 xmax: 1066087 ymax: 878628.1
## Projected CRS: MAGNA_Colombia_Cali
##   comuna total                       geometry
## 1      2  1414 POLYGON ((1059648 874236.3,...
## 2      1   375 POLYGON ((1054094 875172.8,...
## 3      3   970 POLYGON ((1061757 874615.5,...
## 4     19  1280 POLYGON ((1057817 873269.4,...
## 5     15   536 POLYGON ((1065485 869864.1,...
## 6     17  1136 POLYGON ((1061675 868320.9,...

Comunas con más y menos trayectos

# Resumen de las comunas con más y menos trayectos en moto
comunas_moto_resumen <- bind_rows(
  comunas_moto %>%
    arrange(desc(total)) %>%
    head(10) %>%
    mutate(tipo = "Mayor cantidad de trayectos"),
  
  comunas_moto %>%
    arrange(total) %>%
    head(10) %>%
    mutate(tipo = "Menor cantidad de trayectos")
)

# Visualización en un gráfico
ggplot(comunas_moto_resumen) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Comparación de trayectos en moto por comuna en Cali",
       fill = "Cantidad de trayectos") +
  facet_wrap(~tipo) +
  theme_minimal()+
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

tabla_mayor_moto <- comunas_moto %>%
  arrange(desc(total)) %>%
  slice_head(n = 10)

tabla_menor_moto <- comunas_moto %>%
  arrange(total) %>%
  slice_head(n = 10)

tabla_mayor_moto %>%
  kable(caption = "Top 10 comunas con mayor cantidad de trayectos en moto") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 comunas con mayor cantidad de trayectos en moto
OBJECTID gid comuna nombre total geometry
1 107 2 Comuna 2 1414 POLYGON ((1059648 874236.3,…
4 110 19 Comuna 19 1280 POLYGON ((1057817 873269.4,…
6 104 17 Comuna 17 1136 POLYGON ((1061675 868320.9,…
3 109 3 Comuna 3 970 POLYGON ((1061757 874615.5,…
7 105 18 Comuna 18 746 POLYGON ((1059061 867223.6,…
10 90 4 Comuna 4 720 POLYGON ((1063833 877507.1,…
20 100 10 Comuna 10 675 POLYGON ((1061946 870944.4,…
16 96 13 Comuna 13 554 POLYGON ((1065206 872591.4,…
13 93 8 Comuna 8 552 POLYGON ((1063039 874065.4,…
5 103 15 Comuna 15 536 POLYGON ((1065485 869864.1,…

Las comunas con mayor cantidad de trayectos en moto son la 2 (1414), la 19 (1280), la 17 (1136) y la 3 (970). Estas zonas se caracterizan, como se ha evidenciado en el análisis de uso de las bicicletas, por ser áreas densamente pobladas, con infraestructura vial que favorece el uso de motos o bien por ser puntos centrales de movilidad urbana. Este patrón podría indicar que la moto es un medio preferido en estas comunas para evitar congestiones o por menor acceso a transporte masivo.

tabla_menor_moto %>%
  kable(caption = "Top 10 comunas con menor cantidad de trayectos en moto") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 comunas con menor cantidad de trayectos en moto
OBJECTID gid comuna nombre total geometry
17 97 12 Comuna 12 176 POLYGON ((1065201 872590, 1…
18 98 14 Comuna 14 310 POLYGON ((1066257 872256.8,…
11 91 5 Comuna 5 319 POLYGON ((1064821 877198.6,…
21 101 20 Comuna 20 339 POLYGON ((1058420 870976.2,…
12 92 7 Comuna 7 350 POLYGON ((1066866 875282.2,…
2 108 1 Comuna 1 375 POLYGON ((1054094 875172.8,…
15 95 21 Comuna 21 378 POLYGON ((1066744 873158.6,…
14 94 9 Comuna 9 413 POLYGON ((1062123 873592.6,…
19 99 11 Comuna 11 431 POLYGON ((1063357 870771.6,…
22 102 16 Comuna 16 450 POLYGON ((1062914 866767.5,…

En contraste, las comunas con menor número de trayectos en moto son la 12 (176), 14 (310), 5 (319) y 20 (339). Estas zonas podrían tener una mayor cobertura de transporte público, menor densidad poblacional o estar ubicadas en áreas donde las condiciones no son tan favorables para el uso de motocicletas. También es posible que haya restricciones o menor disponibilidad económica para este medio de transporte.

Análisis ampliado de la movilidad en moto en Cali

1. Comunicación territorial del origen de los trayectos

# Conteo por comuna de origen
origen_moto <- moto %>%
  group_by(comuna_origen) %>%
  summarise(total = n()) %>%
  mutate(comuna_origen = as.numeric(comuna_origen))

# Unir al shapefile
comunas_origen_moto <- comunas %>%
  left_join(origen_moto, by = c("comuna" = "comuna_origen"))

# Tabla
comunas_origen_moto %>%
  kable(caption = "Comunas con trayectos en moto por origen") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Comunas con trayectos en moto por origen
OBJECTID gid comuna nombre total geometry
1 107 2 Comuna 2 1414 POLYGON ((1059648 874236.3,…
2 108 1 Comuna 1 375 POLYGON ((1054094 875172.8,…
3 109 3 Comuna 3 970 POLYGON ((1061757 874615.5,…
4 110 19 Comuna 19 1280 POLYGON ((1057817 873269.4,…
5 103 15 Comuna 15 536 POLYGON ((1065485 869864.1,…
6 104 17 Comuna 17 1136 POLYGON ((1061675 868320.9,…
7 105 18 Comuna 18 746 POLYGON ((1059061 867223.6,…
8 106 22 Comuna 22 515 POLYGON ((1059486 864976.4,…
9 89 6 Comuna 6 473 POLYGON ((1065143 879409.5,…
10 90 4 Comuna 4 720 POLYGON ((1063833 877507.1,…
11 91 5 Comuna 5 319 POLYGON ((1064821 877198.6,…
12 92 7 Comuna 7 350 POLYGON ((1066866 875282.2,…
13 93 8 Comuna 8 552 POLYGON ((1063039 874065.4,…
14 94 9 Comuna 9 413 POLYGON ((1062123 873592.6,…
15 95 21 Comuna 21 378 POLYGON ((1066744 873158.6,…
16 96 13 Comuna 13 554 POLYGON ((1065206 872591.4,…
17 97 12 Comuna 12 176 POLYGON ((1065201 872590, 1…
18 98 14 Comuna 14 310 POLYGON ((1066257 872256.8,…
19 99 11 Comuna 11 431 POLYGON ((1063357 870771.6,…
20 100 10 Comuna 10 675 POLYGON ((1061946 870944.4,…
21 101 20 Comuna 20 339 POLYGON ((1058420 870976.2,…
22 102 16 Comuna 16 450 POLYGON ((1062914 866767.5,…

El análisis territorial de los trayectos en moto según la comuna de origen evidencia que las comunas con mayor número de salidas son la Comuna 2 (1.414 trayectos), Comuna 19 (1.280) y Comuna 3 (970). Estas comunas, ubicadas en zonas céntricas y con alta actividad residencial y comercial, funcionan como grandes generadores de viajes en motocicleta. También destacan la Comuna 17 y la Comuna 18, indicando una importante dinámica de movilidad en el sur de la ciudad.

2. Comunicación territorial del destino de los trayectos

# Conteo por comuna destino
destino_moto <- moto %>%
  group_by(comuna_destino) %>%
  summarise(total = n()) %>%
  mutate(comuna_destino = as.numeric(comuna_destino))

# Unir al shapefile
comunas_destino_moto <- comunas %>%
  left_join(destino_moto, by = c("comuna" = "comuna_destino"))

# Tabla
comunas_destino_moto %>%
  kable(caption = "Comunas con trayectos en moto por destino") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Comunas con trayectos en moto por destino
OBJECTID gid comuna nombre total geometry
1 107 2 Comuna 2 2177 POLYGON ((1059648 874236.3,…
2 108 1 Comuna 1 112 POLYGON ((1054094 875172.8,…
3 109 3 Comuna 3 1734 POLYGON ((1061757 874615.5,…
4 110 19 Comuna 19 1421 POLYGON ((1057817 873269.4,…
5 103 15 Comuna 15 271 POLYGON ((1065485 869864.1,…
6 104 17 Comuna 17 927 POLYGON ((1061675 868320.9,…
7 105 18 Comuna 18 302 POLYGON ((1059061 867223.6,…
8 106 22 Comuna 22 911 POLYGON ((1059486 864976.4,…
9 89 6 Comuna 6 323 POLYGON ((1065143 879409.5,…
10 90 4 Comuna 4 846 POLYGON ((1063833 877507.1,…
11 91 5 Comuna 5 215 POLYGON ((1064821 877198.6,…
12 92 7 Comuna 7 353 POLYGON ((1066866 875282.2,…
13 93 8 Comuna 8 470 POLYGON ((1063039 874065.4,…
14 94 9 Comuna 9 608 POLYGON ((1062123 873592.6,…
15 95 21 Comuna 21 243 POLYGON ((1066744 873158.6,…
16 96 13 Comuna 13 346 POLYGON ((1065206 872591.4,…
17 97 12 Comuna 12 128 POLYGON ((1065201 872590, 1…
18 98 14 Comuna 14 188 POLYGON ((1066257 872256.8,…
19 99 11 Comuna 11 254 POLYGON ((1063357 870771.6,…
20 100 10 Comuna 10 419 POLYGON ((1061946 870944.4,…
21 101 20 Comuna 20 151 POLYGON ((1058420 870976.2,…
22 102 16 Comuna 16 327 POLYGON ((1062914 866767.5,…

En cuanto a los destinos, se observa que la Comuna 2 (2.177 trayectos) y la Comuna 3 (1.734) concentran una alta recepción de viajes en moto, seguidas por la Comuna 19. Estas comunas funcionan como puntos de atracción, posiblemente por su actividad económica, servicios, empleo o educación. Es notorio también el volumen de trayectos con destino en la Comuna 22 y Comuna 4, lo cual puede asociarse a zonas de servicios o centros laborales.

3. Motivo del viaje

# Conteo de motivos
motivo_moto <- moto %>%
  count(`que_va_hacer_a_ese_lugar`) %>%
  arrange(desc(n))

motivos_moto <- tibble::tibble(
  motivo_codigo = c(1, 6, 2, 11, 3, 10, 5, 12, 7, 4),
  motivo = c(
    "Ir al trabajo",
    "Regresar a casa",
    "Ir a estudiar",
    "Otro",
    "Realizar diligencias personales",
    "Actividades recreativas/deportivas",
    "Compras o mercado",
    "Trámite institucional / salud / gobierno",
    "Acompañar a otra persona",
    "Visitar familiares/amigos"
  )
)

# Unir con los datos
motivo_moto_final <- motivo_moto %>%
  left_join(motivos_moto, by = c("que_va_hacer_a_ese_lugar" = "motivo_codigo")) %>%
  dplyr::select(motivo_codigo = que_va_hacer_a_ese_lugar, motivo, n) %>%
  arrange(desc(n))

motivo_moto_final %>%
  kable(col.names = c("Código", "Motivo del viaje", "Total de viajes"),
        caption = "Motivos de desplazamiento en moto - Encuesta de Movilidad en Cali") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Motivos de desplazamiento en moto - Encuesta de Movilidad en Cali
Código Motivo del viaje Total de viajes
1 Ir al trabajo 7983
2 Ir a estudiar 2766
6 Regresar a casa 2118
11 Otro 755
3 Realizar diligencias personales 425
7 Acompañar a otra persona 395
4 Visitar familiares/amigos 366
10 Actividades recreativas/deportivas 361
5 Compras o mercado 340
77 NA 211
8 NA 179
12 Trámite institucional / salud / gobierno 74
NA NA 38
13 NA 37
9 NA 28
72 NA 1

Los principales motivos de desplazamiento en moto son:

  • Ir al trabajo (7.983 viajes)
  • Ir a estudiar (2.766 viajes)
  • Regresar a casa (2.118 viajes)

Esto confirma que el uso de la motocicleta en Cali está fuertemente vinculado a actividades rutinarias y obligatorias, como el empleo y la educación. En menor medida, se reportan viajes por diligencias personales, acompañar a otros, actividades recreativas y compras.

4. Relación entre comunas de origen y destino

viajes_por_comunas_moto <- moto %>%
  group_by(comuna_origen, comuna_destino) %>%
  summarise(n = n(), .groups = "drop") %>%
  arrange(desc(n))

viajes_por_comunas_moto %>%
  slice_head(n = 10) %>%
  kable(caption = "Top 10 viajes entre comunas de origen y destino en moto") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 viajes entre comunas de origen y destino en moto
comuna_origen comuna_destino n
Fuera de Cali Fuera de Cali 433
Fuera de Cali 02 399
Fuera de Cali 03 370
02 Fuera de Cali 318
17 Fuera de Cali 250
Fuera de Cali 19 250
03 Fuera de Cali 244
19 Fuera de Cali 244
02 02 233
19 02 212

El cruce entre comunas de origen y destino revela una fuerte movilidad intermunicipal, con un número significativo de trayectos que inician y terminan fuera de Cali (433), o con uno de los extremos fuera de la ciudad. Las comunas 2, 3 y 19 también aparecen recurrentemente en las rutas más frecuentes, lo que confirma su rol tanto como emisoras como receptoras de desplazamientos en moto.

Llama la atención la cantidad de trayectos bidireccionales entre la misma comuna (por ejemplo, Comuna 2 a Comuna 2), lo que podría relacionarse con movilidad interna, como reparto de domicilios o múltiples paradas en un mismo sector.

Mapa de viajes en automóvil

Datos de origen (Automóvil)

automovil <- encuesta %>%
  filter(tipo_vehiculo == "Automóvil")

# Conteo de trayectos por comuna origen
origen_automovil <- automovil %>%
  group_by(comuna_origen) %>%
  summarise(total = n()) %>%
  mutate(comuna_origen = as.numeric(comuna_origen))

# Tabla de origen
origen_automovil %>%
  kable(caption = "Distribución de trayectos en automóvil por comuna de origen",
        col.names = c("Comuna de Origen", "Número de Trayectos")) %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Distribución de trayectos en automóvil por comuna de origen
Comuna de Origen Número de Trayectos
0 317
1 301
2 1121
3 854
4 551
5 241
6 389
7 283
8 420
9 382
10 529
11 361
12 123
13 486
14 272
15 456
16 385
17 899
18 559
19 1165
20 272
21 328
22 489
NA 2917
# Unión con el shapefile por comuna
comunas_automovil <- comunas %>%
  mutate(comuna = as.numeric(comuna)) %>%
  left_join(origen_automovil, by = c("comuna" = "comuna_origen"))

# Mapa
ggplot(comunas_automovil) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Origen de trayectos en automóvil - Cali",
       fill = "Cantidad") +
  theme_minimal()+
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

El análisis espacial de los trayectos que se inician en automóvil revela una concentración significativa en las comunas del sur y centro-occidente de Cali, especialmente en las comunas 2 (1121 viajes), 19 (1165), y 17 (899). Esta distribución sugiere que estas zonas podrían tener mayores niveles de motorización privada, probablemente asociados a factores como mejores condiciones socioeconómicas, presencia de parqueaderos, oferta vial y conectividad urbana.

Además, varias comunas como la 3, 10, 13 y 15 también registran altos volúmenes de salida en automóvil, lo cual refuerza la idea de que el automóvil se utiliza extensamente para desplazamientos desde sectores residenciales bien consolidados.

Datos de destino (Automóvil)

# Conteo de trayectos por comuna destino
destino_automovil <- automovil %>%
  group_by(comuna_destino) %>%
  summarise(total = n()) %>%
  mutate(comuna_destino = as.numeric(comuna_destino))

# Tabla de destino
destino_automovil %>%
  kable(caption = "Distribución de trayectos en automóvil por comuna de destino",
        col.names = c("Comuna de Destino", "Número de Trayectos")) %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Distribución de trayectos en automóvil por comuna de destino
Comuna de Destino Número de Trayectos
0 280
1 86
2 2006
3 1557
4 757
5 225
6 275
7 286
8 403
9 489
10 384
11 239
12 85
13 226
14 138
15 245
16 321
17 959
18 276
19 1302
20 144
21 198
22 694
NA 2525
# Unión con el shapefile para destino
comunas_destino_automovil <- comunas %>%
  left_join(destino_automovil, by = c("comuna" = "comuna_destino"))

# Mapa del destino
ggplot(comunas_destino_automovil) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Destino de trayectos en automóvil - Cali",
       fill = "Cantidad de viajes") +
  theme_minimal() +
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

En cuanto a los destinos, destaca fuertemente la Comuna 2, que recibe 2006 trayectos, consolidándose como un importante centro de atracción de viajes en automóvil. Esto podría estar relacionado con la presencia de zonas comerciales, centros educativos, servicios de salud, oficinas y vías principales que facilitan el acceso en carro.

Le siguen comunas como la 3 (1557 viajes) y la 19 (1302 viajes), lo cual evidencia una distribución del flujo vehicular hacia sectores centrales y del sur de la ciudad, posiblemente por motivos laborales, comerciales o administrativos.

También se observa un flujo considerable hacia la Comuna 22 (694 viajes), lo que puede vincularse a zonas de expansión urbana y sectores de mayor poder adquisitivo, donde el uso del automóvil es más frecuente.

Resumen estadístico del conteo de trayectos por comuna

summary(comunas_automovil$total)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   123.0   307.8   404.5   493.9   545.5  1165.0

El resumen estadístico de los trayectos en automóvil por comuna revela una marcada dispersión en la cantidad de viajes registrados. El número mínimo de trayectos fue de 123, mientras que el máximo alcanzó los 1.165. Esto indica que algunas comunas son centros importantes de origen de viajes en automóvil, posiblemente por su conectividad o nivel de actividad económica como bien lo mencioné inicialmente.

Tablas de datos con conteos por comuna

head(comunas_automovil %>% dplyr::select(comuna, total))
## Simple feature collection with 6 features and 2 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 1053868 ymin: 863572.5 xmax: 1066087 ymax: 878628.1
## Projected CRS: MAGNA_Colombia_Cali
##   comuna total                       geometry
## 1      2  1121 POLYGON ((1059648 874236.3,...
## 2      1   301 POLYGON ((1054094 875172.8,...
## 3      3   854 POLYGON ((1061757 874615.5,...
## 4     19  1165 POLYGON ((1057817 873269.4,...
## 5     15   456 POLYGON ((1065485 869864.1,...
## 6     17   899 POLYGON ((1061675 868320.9,...

Comunas con más y menos trayectos

tabla_mayor_automovil <- comunas_automovil %>%
  arrange(desc(total)) %>%
  slice_head(n = 10)

tabla_menor_automovil <- comunas_automovil %>%
  arrange(total) %>%
  slice_head(n = 10)

tabla_mayor_automovil %>%
  kable(caption = "Top 10 comunas con mayor cantidad de trayectos en automóvil") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 comunas con mayor cantidad de trayectos en automóvil
OBJECTID gid comuna nombre total geometry
4 110 19 Comuna 19 1165 POLYGON ((1057817 873269.4,…
1 107 2 Comuna 2 1121 POLYGON ((1059648 874236.3,…
6 104 17 Comuna 17 899 POLYGON ((1061675 868320.9,…
3 109 3 Comuna 3 854 POLYGON ((1061757 874615.5,…
7 105 18 Comuna 18 559 POLYGON ((1059061 867223.6,…
10 90 4 Comuna 4 551 POLYGON ((1063833 877507.1,…
20 100 10 Comuna 10 529 POLYGON ((1061946 870944.4,…
8 106 22 Comuna 22 489 POLYGON ((1059486 864976.4,…
16 96 13 Comuna 13 486 POLYGON ((1065206 872591.4,…
5 103 15 Comuna 15 456 POLYGON ((1065485 869864.1,…

Las comunas 19, 2, y 17 se destacan por tener los mayores volúmenes de viajes en automóvil, superando los 850 trayectos cada una. Estas comunas presentan una combinación de zonas residenciales de estrato medio-alto y corredores viales principales, lo cual puede incentivar el uso del automóvil como modo de transporte predominante.

tabla_menor_automovil %>%
  kable(caption = "Top 10 comunas con menor cantidad de trayectos en automóvil") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 comunas con menor cantidad de trayectos en automóvil
OBJECTID gid comuna nombre total geometry
17 97 12 Comuna 12 123 POLYGON ((1065201 872590, 1…
11 91 5 Comuna 5 241 POLYGON ((1064821 877198.6,…
18 98 14 Comuna 14 272 POLYGON ((1066257 872256.8,…
21 101 20 Comuna 20 272 POLYGON ((1058420 870976.2,…
12 92 7 Comuna 7 283 POLYGON ((1066866 875282.2,…
2 108 1 Comuna 1 301 POLYGON ((1054094 875172.8,…
15 95 21 Comuna 21 328 POLYGON ((1066744 873158.6,…
19 99 11 Comuna 11 361 POLYGON ((1063357 870771.6,…
14 94 9 Comuna 9 382 POLYGON ((1062123 873592.6,…
22 102 16 Comuna 16 385 POLYGON ((1062914 866767.5,…

En contraste, comunas como la 12, 5 y 14 registran los menores niveles de trayectos. Estas comunas pueden tener una menor tenencia de vehículos privados o estar ubicadas en zonas donde predominan otros medios de transporte como la moto o el transporte público. Además, su infraestructura vial podría limitar el uso intensivo del automóvil.

Visualización comparativa

comunas_automovil_resumen <- bind_rows(
  comunas_automovil %>%
    arrange(desc(total)) %>%
    head(10) %>%
    mutate(tipo = "Mayor cantidad de trayectos"),
  
  comunas_automovil %>%
    arrange(total) %>%
    head(10) %>%
    mutate(tipo = "Menor cantidad de trayectos")
)

ggplot(comunas_automovil_resumen) +
  geom_sf(aes(fill = total)) +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Comparación de trayectos en automóvil por comuna en Cali",
       fill = "Cantidad de trayectos") +
  facet_wrap(~tipo) +
  theme_minimal()+
  geom_sf_text(aes(label = comuna), size = 3, color = "black", fontface = "bold", check_overlap = TRUE)

La información tabulada y la visualización comparativa permiten observar que en el grupo de comunas con mayor cantidad de trayectos destacan la Comuna 19 (1.165 trayectos), Comuna 2 (1.121), Comuna 17 (899) y Comuna 3 (854), todas ubicadas en sectores del sur y centro de la ciudad, caracterizados por una alta densidad residencial y presencia de vías principales. Estos resultados sugieren que estas comunas concentran una población con mayor acceso a vehículos particulares y mayores niveles de motorización.

Por otro lado, entre las comunas con menor número de trayectos se encuentran la Comuna 12 (123 trayectos), Comuna 5 (241), Comuna 14 y Comuna 20 (ambas con 272). Estas comunas se ubican principalmente en el oriente y ladera occidental de la ciudad, zonas que han enfrentado desafíos socioeconómicos y en donde otros modos de transporte como la moto, el transporte público o caminar pueden ser más prevalentes.

Análisis ampliado de la movilidad en automóvil en Cali

1. Comunicación territorial del origen de los trayectos

origen_auto <- automovil %>%
  group_by(comuna_origen) %>%
  summarise(total = n()) %>%
  mutate(comuna_origen = as.numeric(comuna_origen))

# Unir al shapefile
comunas_origen_auto <- comunas %>%
  left_join(origen_auto, by = c("comuna" = "comuna_origen"))

# Tabla
comunas_origen_auto %>%
  kable(caption = "Comunas con trayectos en automóvil por origen") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Comunas con trayectos en automóvil por origen
OBJECTID gid comuna nombre total geometry
1 107 2 Comuna 2 1121 POLYGON ((1059648 874236.3,…
2 108 1 Comuna 1 301 POLYGON ((1054094 875172.8,…
3 109 3 Comuna 3 854 POLYGON ((1061757 874615.5,…
4 110 19 Comuna 19 1165 POLYGON ((1057817 873269.4,…
5 103 15 Comuna 15 456 POLYGON ((1065485 869864.1,…
6 104 17 Comuna 17 899 POLYGON ((1061675 868320.9,…
7 105 18 Comuna 18 559 POLYGON ((1059061 867223.6,…
8 106 22 Comuna 22 489 POLYGON ((1059486 864976.4,…
9 89 6 Comuna 6 389 POLYGON ((1065143 879409.5,…
10 90 4 Comuna 4 551 POLYGON ((1063833 877507.1,…
11 91 5 Comuna 5 241 POLYGON ((1064821 877198.6,…
12 92 7 Comuna 7 283 POLYGON ((1066866 875282.2,…
13 93 8 Comuna 8 420 POLYGON ((1063039 874065.4,…
14 94 9 Comuna 9 382 POLYGON ((1062123 873592.6,…
15 95 21 Comuna 21 328 POLYGON ((1066744 873158.6,…
16 96 13 Comuna 13 486 POLYGON ((1065206 872591.4,…
17 97 12 Comuna 12 123 POLYGON ((1065201 872590, 1…
18 98 14 Comuna 14 272 POLYGON ((1066257 872256.8,…
19 99 11 Comuna 11 361 POLYGON ((1063357 870771.6,…
20 100 10 Comuna 10 529 POLYGON ((1061946 870944.4,…
21 101 20 Comuna 20 272 POLYGON ((1058420 870976.2,…
22 102 16 Comuna 16 385 POLYGON ((1062914 866767.5,…

En este análisis, se observa la distribución territorial de los trayectos en automóvil según su comuna de origen. Los resultados muestran que las comunas con mayor cantidad de trayectos en automóvil incluyen la Comuna 2, Comuna 19 y Comuna 3, con 1121, 1165 y 854 trayectos respectivamente. Esto sugiere que estas áreas tienen una alta actividad de movilidad en automóvil, lo que podría estar relacionado con su ubicación geográfica o características socioeconómicas.

2. Comunicación territorial del destino de los trayectos

destino_auto <- automovil %>%
  group_by(comuna_destino) %>%
  summarise(total = n()) %>%
  mutate(comuna_destino = as.numeric(comuna_destino))

# Unir al shapefile
comunas_destino_auto <- comunas %>%
  left_join(destino_auto, by = c("comuna" = "comuna_destino"))

# Tabla
comunas_destino_auto %>%
  kable(caption = "Comunas con trayectos en automóvil por destino") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Comunas con trayectos en automóvil por destino
OBJECTID gid comuna nombre total geometry
1 107 2 Comuna 2 2006 POLYGON ((1059648 874236.3,…
2 108 1 Comuna 1 86 POLYGON ((1054094 875172.8,…
3 109 3 Comuna 3 1557 POLYGON ((1061757 874615.5,…
4 110 19 Comuna 19 1302 POLYGON ((1057817 873269.4,…
5 103 15 Comuna 15 245 POLYGON ((1065485 869864.1,…
6 104 17 Comuna 17 959 POLYGON ((1061675 868320.9,…
7 105 18 Comuna 18 276 POLYGON ((1059061 867223.6,…
8 106 22 Comuna 22 694 POLYGON ((1059486 864976.4,…
9 89 6 Comuna 6 275 POLYGON ((1065143 879409.5,…
10 90 4 Comuna 4 757 POLYGON ((1063833 877507.1,…
11 91 5 Comuna 5 225 POLYGON ((1064821 877198.6,…
12 92 7 Comuna 7 286 POLYGON ((1066866 875282.2,…
13 93 8 Comuna 8 403 POLYGON ((1063039 874065.4,…
14 94 9 Comuna 9 489 POLYGON ((1062123 873592.6,…
15 95 21 Comuna 21 198 POLYGON ((1066744 873158.6,…
16 96 13 Comuna 13 226 POLYGON ((1065206 872591.4,…
17 97 12 Comuna 12 85 POLYGON ((1065201 872590, 1…
18 98 14 Comuna 14 138 POLYGON ((1066257 872256.8,…
19 99 11 Comuna 11 239 POLYGON ((1063357 870771.6,…
20 100 10 Comuna 10 384 POLYGON ((1061946 870944.4,…
21 101 20 Comuna 20 144 POLYGON ((1058420 870976.2,…
22 102 16 Comuna 16 321 POLYGON ((1062914 866767.5,…

El análisis de las comunas de destino de los trayectos en automóvil revela que la Comuna 2 es también la que recibe el mayor número de vehículos, con un total de 2006 trayectos. Este patrón sugiere que la Comuna 2 actúa como un centro de atracción de movilidad, lo cual podría estar vinculado a diversos factores, tales como la infraestructura vial que conecta eficazmente esta comuna con otras áreas de la ciudad, su concentración de servicios esenciales (como centros comerciales, parques industriales, o instituciones educativas), o su actividad económica dinámica. Estos elementos hacen que la Comuna 2 sea un punto focal para los desplazamientos en automóvil, tanto para los habitantes locales como para aquellos provenientes de otras zonas de Cali.

3. Motivo del viaje

motivos_dict <- tibble::tibble(
  codigo = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 77),
  motivo = c(
    "A trabajar",
    "Asuntos de Trabajo",
    "Estudiar",
    "Recibir Atención de Salud",
    "Ver a Alguien",
    "Volver a casa",
    "Buscar /Dejar a Alguien",
    "Buscar /Dejar a Algo",
    "Comer /Tomar Algo",
    "Compras",
    "Trámites",
    "Recreación",
    "Buscando Trabajo",
    "Otra cosa"
  )
)

motivo_auto <- automovil %>%
  count(que_va_hacer_a_ese_lugar) %>%
  left_join(motivos_dict, by = c("que_va_hacer_a_ese_lugar" = "codigo")) %>%
  arrange(desc(n)) %>%
  mutate(
    motivo = ifelse(is.na(motivo), "No especificado", motivo),
    codigo = que_va_hacer_a_ese_lugar
  )

motivo_auto %>%
  dplyr::select(codigo, motivo, n) %>%
  kable(
    caption = "Distribución de motivos de viaje en automóvil",
    col.names = c("Código", "Motivo del viaje", "Cantidad")
  ) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Distribución de motivos de viaje en automóvil
Código Motivo del viaje Cantidad
1 A trabajar 5705
2 Asuntos de Trabajo 2122
6 Volver a casa 1951
11 Trámites 946
7 Buscar /Dejar a Alguien 647
10 Compras 583
5 Ver a Alguien 529
4 Recibir Atención de Salud 509
3 Estudiar 380
77 Otra cosa 266
8 Buscar /Dejar a Algo 183
12 Recreación 164
NA No especificado 55
9 Comer /Tomar Algo 47
13 Buscando Trabajo 13

El análisis de la distribución de los motivos de viaje en automóvil revela que el motivo más frecuente es “A trabajar” (código 1), con un total de 5705 viajes. Le siguen los motivos “Asuntos de Trabajo” (código 2) con 2122 trayectos y “Volver a casa” (código 6) con 1951 trayectos. Este patrón sugiere que una parte significativa de los desplazamientos en automóvil está directamente vinculada con actividades laborales y el regreso al hogar, lo que refuerza la idea de que el automóvil es un medio utilizado principalmente para fines productivos y funcionales.

Motivos adicionales como “Trámites” (946), “Buscar o dejar a alguien” (647), y “Compras” (583) también presentan cifras destacadas, lo que sugiere que el automóvil sigue siendo una opción clave para desplazamientos personales y logísticos. Sin embargo, este comportamiento podría verse influenciado por la creciente oferta de plataformas de transporte y servicios de transporte privado, que han aumentado la flexibilidad y accesibilidad del uso de vehículos privados sin necesidad de ser dueño del automóvil.

En contraste, motivos como “Estudiar” (380), “Recreación” (164), “Comer o tomar algo” (47), y “Buscando trabajo” (13) muestran una menor incidencia, lo que podría indicar una menor dependencia del automóvil para estas actividades o bien una preferencia por otros medios de transporte, como el uso de plataformas como Uber para trayectos más cortos o más económicos, o bien el uso de transporte público, especialmente en zonas de mayor densidad de población o con mejor infraestructura de movilidad.

4. Relación entre comunas de origen y destino

viajes_por_comunas_auto <- automovil %>%
  group_by(comuna_origen, comuna_destino) %>%
  summarise(n = n(), .groups = "drop") %>%
  arrange(desc(n))

viajes_por_comunas_auto %>%
  slice_head(n = 10) %>%
  kable(caption = "Top 10 viajes entre comunas de origen y destino en automóvil") %>%
  kable_styling(full_width = F, bootstrap_options = c("striped", "hover", "condensed"))
Top 10 viajes entre comunas de origen y destino en automóvil
comuna_origen comuna_destino n
Fuera de Cali Fuera de Cali 449
Fuera de Cali 02 441
Fuera de Cali 03 417
Fuera de Cali 19 336
Fuera de Cali 17 264
02 Fuera de Cali 235
19 02 215
19 Fuera de Cali 211
17 Fuera de Cali 190
02 02 189

El análisis de las relaciones entre las comunas de origen y destino en los trayectos en automóvil revela que los viajes más frecuentes están relacionados con trayectos hacia y desde el área de “Fuera de Cali”. Los primeros lugares en el top de trayectos incluyen viajes desde Fuera de Cali hacia las comunas 02 (441 trayectos), 03 (417 trayectos), y 19 (336 trayectos), lo que sugiere una interconexión importante con áreas periféricas o rurales cercanas a la ciudad.

El hecho de que “Fuera de Cali” aparezca repetidamente tanto como origen como destino indica que existe una movilidad significativa entre Cali y sus alrededores. Esto podría estar relacionado con actividades laborales, comerciales o recreativas, y sugiere una interdependencia de Cali con las zonas rurales y suburbanas cercanas.

Conclusión de la actividad

El análisis desarrollado permitió aplicar de forma integral técnicas de exploración y visualización espacial, mostrando cómo los patrones de movilidad en Cali varían significativamente según el tipo de vehículo utilizado. A través del uso de herramientas del lenguaje R y el procesamiento de datos espaciales, se logró representar con claridad la distribución de los trayectos por comunas, tanto en origen como destino, complementando esta información con tablas estadísticas y mapas temáticos.

Los hallazgos evidencian que la bicicleta, la moto y el automóvil responden a dinámicas urbanas diferenciadas. Mientras que la bicicleta presenta trayectos más localizados y funcionales, la moto muestra una amplia presencia en comunas con menor cobertura de transporte público, y el automóvil se concentra en zonas con mayores niveles socioeconómicos y de motorización. Además, la significativa cantidad de trayectos que conectan comunas con zonas “Fuera de Cali” pone en evidencia procesos de expansión urbana, flujos regionales y posibles vacíos en la infraestructura de transporte metropolitano.

Este ejercicio permitió demostrar cómo el análisis espacial no solo proporciona una visión descriptiva del territorio, sino que también facilita la identificación de patrones clave para la toma de decisiones en planeación urbana. En suma, la integración entre análisis estadístico, modelado espacial y visualización geográfica resultó fundamental para interpretar con mayor profundidad la movilidad urbana, consolidando habilidades esenciales en el contexto de la ciencia de datos aplicada a problemas territoriales.