EncuestaOrigenDestino = subset(EncuestaOrigenDestino,comunaorigen!='FueradeCali')
EncuestaOrigenDestino = subset(EncuestaOrigenDestino,comunadestino!='FueradeCali')
EncuestaOrigenDestino = subset(EncuestaOrigenDestino,comunaorigen!='0')
EncuestaOrigenDestino = subset(EncuestaOrigenDestino,comunadestino!='0')
EncuestaOrigenDestino = EncuestaOrigenDestino[c("comunaorigen",
                                                "comunadestino",
                                                "TIPODEVEHÍCULO")]

EncuestaOrigenDestino=na.omit(EncuestaOrigenDestino)

Encuesta Origen y Destino

Se trabajo con un set de datos que contiene el origen y destino de distintos trayectos realizados por las personas de la ciudad de cali, esta fue realizada en 2015.

Dado que se necesita calcular el porcentaje de personas que tiene como origen las distintas comunas de Cali, se calcula la informacion agrupada por comunas y se anexa esta información al mapa de las comunas.

### Anexar la información de los datos de origen
datos_agrupados = data.frame(table(EncuestaOrigenDestino$comunaorigen))
colnames(datos_agrupados) = c("comuna",'cant_cliente_ori')
datos_agrupados$comuna = as.character(as.numeric(datos_agrupados$comuna))
datos_agrupados$porc_cliente_ori = round((datos_agrupados$cant_cliente_ori/22151)*100,1)
datos_orig_dest = merge(comunas, datos_agrupados, by = c("comuna"))


### Anexar la información de los datos de destino
datos_agrupados = data.frame(table(EncuestaOrigenDestino$comunadestino))
colnames(datos_agrupados) = c("comuna",'cant_cliente_dest')
datos_agrupados$comuna = as.character(as.numeric(datos_agrupados$comuna))
datos_agrupados$porc_cliente_dest = round((datos_agrupados$cant_cliente_dest/22151)*100,1)
datos_orig_dest = merge(datos_orig_dest, datos_agrupados, by = c("comuna"))

datos_orig_dest@data[is.na(datos_orig_dest@data)] <- 0

head(datos_orig_dest)
##    comuna OBJECTID gid    nombre cant_cliente_ori porc_cliente_ori
## 2       2        1 107  Comuna 2             2250             10.2
## 1       1        2 108  Comuna 1              626              2.8
## 3       3        3 109  Comuna 3             1610              7.3
## 19     19        4 110 Comuna 19             2241             10.1
## 15     15        5 103 Comuna 15              974              4.4
## 17     17        6 104 Comuna 17             1762              8.0
##    cant_cliente_dest porc_cliente_dest
## 2               3773              17.0
## 1                187               0.8
## 3               2887              13.0
## 19              2441              11.0
## 15               481               2.2
## 17              1616               7.3

Analisis sobre los origenes

Con la informacion calculada anteriormente, graficamos el porcentajes de personas que tienen a las diferentes comunas de Cali como destino de Origen, encontrando que las comunas 2, 19 y 17 son los origenes más frecuentes.

my.palette <- brewer.pal(n = 7, name = "Purples")
p <- spplot(datos_orig_dest, 
            zcol = "porc_cliente_ori", 
            main = "Comuna de origen",
            sub = "Porcentaje de personas", 
            cuts = 6,
            col.regions = my.palette)

p <- p + layer(panel.text(x = coordinates(datos_orig_dest)[, 1], 
                          y = coordinates(datos_orig_dest)[, 2],
                          labels=paste0(datos_orig_dest$comuna, 
                                        "\n",
                                        datos_orig_dest$porc_cliente_ori,
                                        "%"),
                          cex = 0.5, 
                          col = "black",
                          fontface = "bold"))

p

Cuando se analiza los origenes por cada uno de los de los medios de transporte, podemos observar que la tendencia que observabamos anteriormente se mantiene, son las mismas comunas las que presentan una mayor afluencia de personas.

EncuestaOrigenDestino_tipoviajero = subset(EncuestaOrigenDestino,
                                           TIPODEVEHÍCULO %in% c(1,2,3)
                                           )
EncuestaOrigenDestino_tipoviajero$index = 1

tipo_viajero = EncuestaOrigenDestino_tipoviajero %>%
  group_by(TIPODEVEHÍCULO) %>%
  summarize(total = sum(index))

destino_tipo_viajero = EncuestaOrigenDestino_tipoviajero %>%
  group_by(TIPODEVEHÍCULO,comunaorigen ) %>%
  summarize(cant_cliente_ori = sum(index))

destino_tipo_viajero = merge(tipo_viajero, destino_tipo_viajero, by = c("TIPODEVEHÍCULO"))
destino_tipo_viajero$porc_cliente_ori = round((destino_tipo_viajero$cant_cliente_ori/destino_tipo_viajero$total)*100,1)
destino_tipo_viajero$TIPODEVEHÍCULO <- ifelse( destino_tipo_viajero$TIPODEVEHÍCULO== 1, "Bicicleta", ifelse(
  destino_tipo_viajero$TIPODEVEHÍCULO== 2, "Moto","Automovil"))
colnames(destino_tipo_viajero) = c("TIPODEVEHÍCULO", "total",
                                   "comuna","cant_cliente_ori",
                                   "porc_cliente_ori")

library(reshape2)

tabla_graficos <- dcast(destino_tipo_viajero, comuna ~ TIPODEVEHÍCULO, value.var = "porc_cliente_ori", sum)


tabla_graficos$comuna = as.character(as.numeric(tabla_graficos$comuna))
datos_orig_vehiculo = merge(comunas, tabla_graficos, by = c("comuna"))
p1 <- spplot(datos_orig_vehiculo, 
             zcol = "Automovil", 
             main = "Comuna de origen - Automovil",
             sub = "Porcentaje de personas", 
             cuts = 6,
             col.regions = my.palette)

p1 <- p1 + layer(panel.text(x = coordinates(datos_orig_vehiculo)[, 1], 
                            y = coordinates(datos_orig_vehiculo)[, 2],
                            labels=paste0(datos_orig_vehiculo$comuna, 
                                          "\n",
                                          datos_orig_vehiculo$Automovil,
                                          "%"
                                          ),
                            cex = 0.5, 
                            col = "black",
                            fontface = "bold"))


p2 <- spplot(datos_orig_vehiculo, 
             zcol = "Bicicleta", 
             main = "Comuna de origen - Bicicleta",
             sub = "Porcentaje de personas", 
             cuts = 6,
             col.regions = my.palette)

p2 <- p2 + layer(panel.text(x = coordinates(datos_orig_vehiculo)[, 1], 
                            y = coordinates(datos_orig_vehiculo)[, 2],
                            labels=paste0(datos_orig_vehiculo$comuna, 
                                          "\n",
                                          datos_orig_vehiculo$Bicicleta,
                                          "%"
                                          ),
                            cex = 0.5, 
                            col = "black",
                            fontface = "bold"))



p3 <- spplot(datos_orig_vehiculo, 
             zcol = "Moto", 
             main = "Comuna de origen - Moto",
             sub = "Porcentaje de personas", 
             cuts = 6,
             col.regions = my.palette)

p3 <- p3 + layer(panel.text(x = coordinates(datos_orig_vehiculo)[, 1], 
                            y = coordinates(datos_orig_vehiculo)[, 2],
                            labels=paste0(datos_orig_vehiculo$comuna, 
                                          "\n",
                                          datos_orig_vehiculo$Moto,
                                          "%"
                                          ),
                            cex = 0.5, 
                            col = "black",
                            fontface = "bold"))


grid.arrange(p1, p2, p3, ncol = 3, nrow = 1)

Analisis sobre los destinos

En cuanto a los destinos, las personas en mayor proporción se movilizan hasta las comunas 2, 19 y 3, representando el 17%, 11% y 13% del total de los registros dentro del set de datos.

my.palette <- brewer.pal(n = 7, name = "Blues")
p <- spplot(datos_orig_dest, 
            zcol = "porc_cliente_dest", 
            main = "Comuna de destino",
            sub = "Porcentaje de personas", 
            # col = "transparent",
            cuts = 6,
            col.regions = my.palette)

p <- p + layer(panel.text(x = coordinates(datos_orig_dest)[, 1], 
                          y = coordinates(datos_orig_dest)[, 2],
                          labels=paste0(datos_orig_dest$comuna, 
                                        "\n",
                                        datos_orig_dest$porc_cliente_dest,
                                        "%"),
                          cex = 0.5, 
                          col = "black",
                          fontface = "bold"))

p

EncuestaOrigenDestino_tipoviajero = subset(EncuestaOrigenDestino,
                                           TIPODEVEHÍCULO %in% c(1,2,3)
                                           )
EncuestaOrigenDestino_tipoviajero$index = 1

tipo_viajero = EncuestaOrigenDestino_tipoviajero %>%
  group_by(TIPODEVEHÍCULO) %>%
  summarize(total = sum(index))

destino_tipo_viajero = EncuestaOrigenDestino_tipoviajero %>%
  group_by(TIPODEVEHÍCULO,comunadestino ) %>%
  summarize(cant_cliente_dest = sum(index))

destino_tipo_viajero = merge(tipo_viajero, destino_tipo_viajero, by = c("TIPODEVEHÍCULO"))
destino_tipo_viajero$porc_cliente_dest = round((destino_tipo_viajero$cant_cliente_dest/destino_tipo_viajero$total)*100,1)
destino_tipo_viajero$TIPODEVEHÍCULO <- ifelse( destino_tipo_viajero$TIPODEVEHÍCULO== 1, "Bicicleta", ifelse(
  destino_tipo_viajero$TIPODEVEHÍCULO== 2, "Moto","Automovil"))
colnames(destino_tipo_viajero) = c("TIPODEVEHÍCULO", "total",
                                   "comuna","cant_cliente_dest",
                                   "porc_cliente_dest")

library(reshape2)

tabla_graficos <- dcast(destino_tipo_viajero, comuna ~ TIPODEVEHÍCULO, value.var = "porc_cliente_dest", sum)


tabla_graficos$comuna = as.character(as.numeric(tabla_graficos$comuna))
datos_dest_vehiculo = merge(comunas, tabla_graficos, by = c("comuna"))

Al analizarlo por medio de transporte podemos observar que la tendencia se mantiene, siendo la mismas comunas las que mayor afluencia de personas tienen por los diferentes medios de transporte.

my.palette <- brewer.pal(n = 7, name = "Blues")

p1 <- spplot(datos_dest_vehiculo, 
            zcol = "Automovil", 
            main = "Comuna de destino - Automovil",
            sub = "Porcentaje de personas", 
            cuts = 6,
            col.regions = my.palette)

p1 <- p1 + layer(panel.text(x = coordinates(datos_dest_vehiculo)[, 1], 
                          y = coordinates(datos_dest_vehiculo)[, 2],
                          labels=paste0(datos_dest_vehiculo$comuna, 
                                        "\n",
                                        datos_dest_vehiculo$Automovil,
                                        "%"
                                        ),
                          cex = 0.5, 
                          col = "black",
                          fontface = "bold"))


p2 <- spplot(datos_dest_vehiculo, 
            zcol = "Bicicleta", 
            main = "Comuna de destino - Bicicleta",
            sub = "Porcentaje de personas", 
            # col = "transparent",
            cuts = 6,
            col.regions = my.palette)

p2 <- p2 + layer(panel.text(x = coordinates(datos_dest_vehiculo)[, 1], 
                          y = coordinates(datos_dest_vehiculo)[, 2],
                          labels=paste0(datos_dest_vehiculo$comuna, 
                                        "\n",
                                        datos_dest_vehiculo$Bicicleta,
                                        "%"
                                        ),
                          cex = 0.5, 
                          col = "black",
                          fontface = "bold"))



p3 <- spplot(datos_dest_vehiculo, 
            zcol = "Moto", 
            main = "Comuna de destino - Moto",
            sub = "Porcentaje de personas", 
            # col = "transparent",
            cuts = 6,
            col.regions = my.palette)

p3 <- p3 + layer(panel.text(x = coordinates(datos_dest_vehiculo)[, 1], 
                          y = coordinates(datos_dest_vehiculo)[, 2],
                          labels=paste0(datos_dest_vehiculo$comuna, 
                                        "\n",
                                        datos_dest_vehiculo$Moto,
                                        "%"
                                        ),
                          cex = 0.5, 
                          col = "black",
                          fontface = "bold"))


# grid.arrange(p1, p2, p3, ncol = 2, nrow = 2)
grid.arrange(p1, p2, p3, ncol = 3, nrow = 1)

Conclusiones