A continuacion se realizara el analisis del comportamiento de la movilidad de la ciudad de Cali en sus respectivas comunas y los diferentes tipos de vehiculos o formas de transportarse:
Tipo de Vehículo
1 Bicicleta 2 Moto 3 Automovil 4 Campero (Guala) 5 Taxi 6 Intermunicipal
- Bus 7 Intermunicipal - Buseta 8 Intermunicipal - Van 9 Taxi blanco 77
Otro ¿Cuál?
Cargue de archivos:
EncuestaOrigenDestino = read_excel("~/R/Analisis Geoespacial/Casos/EncuestaOrigenDestino.xlsx")
## 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`
Datos_Vivienda = read_excel("~/R/Informe-1/datasets/Datos_Vivienda.xlsx")
Comunas_Nueva=shapefile("~/R/Analisis Geoespacial/mc_comunas/Comunas_Nueva.shp") # se Modifico en QGIS debido a que se tenia problemas con la proyeccion.
B. Implementación de la solución en R y limpieza del código. 25%
C. Interpretación de los resultados. 25%
D. Conclusiones sobre los resultados. 25%
# visualizacion mapa comunas
leaflet(Comunas_Nueva) %>%addTiles() %>%addPolygons(popup = Comunas_Nueva$nombre)
# visualizacion Informacion Origen Destino
head(EncuestaOrigenDestino)
## # A tibble: 6 × 28
## FECHA `ID ESTACIÓN` ESTACIÓN ACCESO MOVIMIENTO
## <dttm> <dbl> <chr> <chr> <chr>
## 1 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 2 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 3 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 4 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 5 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 6 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## # ℹ 23 more variables: `Hora de Encuesta` <dttm>, MUNICIPIO...7 <chr>,
## # `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...8` <chr>,
## # `Codigo Origen_SDG` <chr>, `¿QUE ESTABA HACIENDO EN ESE LUGAR?` <dbl>,
## # MUNICIPIO...11 <chr>,
## # `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...12` <chr>,
## # `Codigo Destino_SDG` <chr>, `¿QUE VA HACER A ESE LUGAR?` <dbl>,
## # `ESTRATO EN SU VIVIENDA` <dbl>, …
# visualizacion Informacion de comina
head(Comunas_Nueva)
## OBJECTID gid comuna nombre
## 1 1 107 2 Comuna 2
## 2 2 108 1 Comuna 1
## 3 3 109 3 Comuna 3
## 4 4 110 19 Comuna 19
## 5 5 103 15 Comuna 15
## 6 6 104 17 Comuna 17
# se transforma un dataframe a un spatialdataframe
Datos_Vivienda2=na.omit(Datos_Vivienda)
mapa_viviendas=SpatialPointsDataFrame(coords = Datos_Vivienda2[,11:12],data =Datos_Vivienda2 )
# se visualiza el nuevo dataframe mapa_viviendas
leaflet(mapa_viviendas) %>%addTiles() %>%addCircleMarkers(radius = 0.1,clusterOptions = markerClusterOptions())
# visualizacion de puntos sobre poligonos de viviendas vs comuna
plot(Comunas_Nueva)
points(mapa_viviendas, col ='Red')
# se realiza cambio de proyeccion para poder realizar el join espacial
crs(mapa_viviendas) ="+proj=longlat +datum=WGS84 +no_defs"
total_viviendas=over(x= Comunas_Nueva,y= mapa_viviendas[,1],fn=length)
Comunas_Nueva@data$viviendas=total_viviendas$Zona
# definicion de layers
lbls = as.character(Comunas_Nueva$comuna)
spl = list('sp.text', coordinates(Comunas_Nueva), lbls, cex=.6)
# Visualizacion del nuevo campo
g1=spplot(Comunas_Nueva[,5], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g1
Limpieza de datos oriden destino
#limpieza de datos para volverlos numericos o caracter
# numerico el tipo de vehiculo
com1=as.numeric(EncuestaOrigenDestino$`TIPO DE VEHÍCULO`)
# volver numericos la comunidad origen y lo q tenga caracter se coloca como nulo
com=as.numeric(EncuestaOrigenDestino$`comuna origen`)
## Warning: NAs introducidos por coerción
================================================================================
#seleccion solo de las columnas que tienen informacion
pos=which(com>=1&com<=22)
origenes=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna origen`))
# cuando se vaya a relacionar la informacion es mejor tenerla en tipo caracter
as.character(res$Var1)
## [1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15"
## [16] "16" "17" "18" "19" "20" "21" "22"
# dejar en orden en el mismo orden del shape de las comunas
#ejemplo uno, de orden
orden=Comunas_Nueva$comuna
res_orden= res[orden,]
Comunas_Nueva@data$total_Origen=res_orden$Freq
# se valida que quedo el campo creado
Comunas_Nueva@data
## OBJECTID gid comuna nombre viviendas total_Origen
## 1 1 107 2 Comuna 2 1445 2968
## 2 2 108 1 Comuna 1 132 794
## 3 3 109 3 Comuna 3 449 2121
## 4 4 110 19 Comuna 19 1092 2850
## 5 5 103 15 Comuna 15 106 1171
## 6 6 104 17 Comuna 17 2165 2377
## 7 7 105 18 Comuna 18 178 1536
## 8 8 106 22 Comuna 22 954 1153
## 9 9 89 6 Comuna 6 90 998
## 10 10 90 4 Comuna 4 165 1493
## 11 11 91 5 Comuna 5 331 664
## 12 12 92 7 Comuna 7 78 734
## 13 13 93 8 Comuna 8 173 1124
## 14 14 94 9 Comuna 9 196 952
## 15 15 95 21 Comuna 21 36 818
## 16 16 96 13 Comuna 13 34 1238
## 17 17 97 12 Comuna 12 36 348
## 18 18 98 14 Comuna 14 41 685
## 19 19 99 11 Comuna 11 90 925
## 20 20 100 10 Comuna 10 316 1401
## 21 21 101 20 Comuna 20 51 733
## 22 22 102 16 Comuna 16 116 993
#visualizar el nuevo campo
g2=spplot(Comunas_Nueva[,6], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g2
#caso Origenes Bici
pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==1)
origenes=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna origen`))
orden=Comunas_Nueva$comuna
res_orden= res[orden,]
Comunas_Nueva@data$total_origen_bici=res_orden$Freq
head(Comunas_Nueva@data)
## OBJECTID gid comuna nombre viviendas total_Origen total_origen_bici
## 1 1 107 2 Comuna 2 1445 2968 159
## 2 2 108 1 Comuna 1 132 794 36
## 3 3 109 3 Comuna 3 449 2121 99
## 4 4 110 19 Comuna 19 1092 2850 141
## 5 5 103 15 Comuna 15 106 1171 70
## 6 6 104 17 Comuna 17 2165 2377 141
lbls = as.character(Comunas_Nueva$comuna)
spl = list('sp.text', coordinates(Comunas_Nueva), lbls, cex=.6)
spl[[2]][7,]=spl[[2]][7,]+0.005 # este es para la comuna 21 que es como una L para correr el centroide
g3=spplot(Comunas_Nueva[,7], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g3
================================================================================
#caso Origenes Moto
pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==2)
origenes=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna origen`))
orden=Comunas_Nueva$comuna
res_orden= res[orden,]
Comunas_Nueva@data$total_Origen_moto=res_orden$Freq
head(Comunas_Nueva@data)
## OBJECTID gid comuna nombre viviendas total_Origen total_origen_bici
## 1 1 107 2 Comuna 2 1445 2968 159
## 2 2 108 1 Comuna 1 132 794 36
## 3 3 109 3 Comuna 3 449 2121 99
## 4 4 110 19 Comuna 19 1092 2850 141
## 5 5 103 15 Comuna 15 106 1171 70
## 6 6 104 17 Comuna 17 2165 2377 141
## total_Origen_moto
## 1 1414
## 2 375
## 3 970
## 4 1280
## 5 536
## 6 1136
g4=spplot(Comunas_Nueva[,8], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g4
#caso Origenes Carro
pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==3)
origenes=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna origen`))
orden=Comunas_Nueva$comuna
res_orden= res[orden,]
Comunas_Nueva@data$total_Origen_carro=res_orden$Freq
head(Comunas_Nueva@data)
## OBJECTID gid comuna nombre viviendas total_Origen total_origen_bici
## 1 1 107 2 Comuna 2 1445 2968 159
## 2 2 108 1 Comuna 1 132 794 36
## 3 3 109 3 Comuna 3 449 2121 99
## 4 4 110 19 Comuna 19 1092 2850 141
## 5 5 103 15 Comuna 15 106 1171 70
## 6 6 104 17 Comuna 17 2165 2377 141
## total_Origen_moto total_Origen_carro
## 1 1414 1121
## 2 375 301
## 3 970 854
## 4 1280 1165
## 5 536 456
## 6 1136 899
g5=spplot(Comunas_Nueva[,9], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g5
# con terrain
g6=spplot(Comunas_Nueva[,7:9], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g6
Comunas_Nueva@data$tasa_origen_bici=Comunas_Nueva@data$total_origen_bici/Comunas_Nueva@data$total_Origen
Comunas_Nueva@data$tasa_origen_moto=Comunas_Nueva@data$total_Origen_moto/Comunas_Nueva@data$total_Origen
Comunas_Nueva@data$tasa_origen_carro=Comunas_Nueva@data$total_Origen_carro/Comunas_Nueva@data$total_Origen
g7=spplot(Comunas_Nueva[,10:12], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g7
================================================================================
Limpieza de datos
com=as.numeric(EncuestaOrigenDestino$`comuna destino`)
## Warning: NAs introducidos por coerción
================================================================================
#seleccion solo de las columnas que tienen informacion
pos=which(com>=1&com<=22)
destino=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna destino`))
# cuando se vaya a relacionar la informacion es mejor tenerla en tipo caracter
as.character(res$Var1)
## [1] "0" "01" "02" "03"
## [5] "04" "05" "06" "07"
## [9] "08" "09" "10" "11"
## [13] "12" "13" "14" "15"
## [17] "16" "17" "18" "19"
## [21] "20" "21" "22" "Fuera de Cali"
# dejar en orden en el mismo orden del shape de las comunas
#ejemplo uno, de orden
orden=Comunas_Nueva$comuna
res_orden= res[orden,]
Comunas_Nueva@data$total_destino=res_orden$Freq
# se valida que quedo el campo creado
Comunas_Nueva@data
## OBJECTID gid comuna nombre viviendas total_Origen total_origen_bici
## 1 1 107 2 Comuna 2 1445 2968 159
## 2 2 108 1 Comuna 1 132 794 36
## 3 3 109 3 Comuna 3 449 2121 99
## 4 4 110 19 Comuna 19 1092 2850 141
## 5 5 103 15 Comuna 15 106 1171 70
## 6 6 104 17 Comuna 17 2165 2377 141
## 7 7 105 18 Comuna 18 178 1536 111
## 8 8 106 22 Comuna 22 954 1153 55
## 9 9 89 6 Comuna 6 90 998 44
## 10 10 90 4 Comuna 4 165 1493 74
## 11 11 91 5 Comuna 5 331 664 38
## 12 12 92 7 Comuna 7 78 734 35
## 13 13 93 8 Comuna 8 173 1124 52
## 14 14 94 9 Comuna 9 196 952 53
## 15 15 95 21 Comuna 21 36 818 44
## 16 16 96 13 Comuna 13 34 1238 76
## 17 17 97 12 Comuna 12 36 348 14
## 18 18 98 14 Comuna 14 41 685 37
## 19 19 99 11 Comuna 11 90 925 52
## 20 20 100 10 Comuna 10 316 1401 82
## 21 21 101 20 Comuna 20 51 733 46
## 22 22 102 16 Comuna 16 116 993 73
## total_Origen_moto total_Origen_carro tasa_origen_bici tasa_origen_moto
## 1 1414 1121 0.05357143 0.4764151
## 2 375 301 0.04534005 0.4722922
## 3 970 854 0.04667610 0.4573314
## 4 1280 1165 0.04947368 0.4491228
## 5 536 456 0.05977797 0.4577284
## 6 1136 899 0.05931847 0.4779133
## 7 746 559 0.07226562 0.4856771
## 8 515 489 0.04770165 0.4466609
## 9 473 389 0.04408818 0.4739479
## 10 720 551 0.04956463 0.4822505
## 11 319 241 0.05722892 0.4804217
## 12 350 283 0.04768392 0.4768392
## 13 552 420 0.04626335 0.4911032
## 14 413 382 0.05567227 0.4338235
## 15 378 328 0.05378973 0.4621027
## 16 554 486 0.06138934 0.4474960
## 17 176 123 0.04022989 0.5057471
## 18 310 272 0.05401460 0.4525547
## 19 431 361 0.05621622 0.4659459
## 20 675 529 0.05852962 0.4817987
## 21 339 272 0.06275580 0.4624829
## 22 450 385 0.07351460 0.4531722
## tasa_origen_carro total_destino
## 1 0.3776954 73
## 2 0.3790932 241
## 3 0.4026403 1518
## 4 0.4087719 216
## 5 0.3894108 120
## 6 0.3782078 275
## 7 0.3639323 650
## 8 0.4241110 164
## 9 0.3897796 181
## 10 0.3690556 1098
## 11 0.3629518 596
## 12 0.3855586 208
## 13 0.3736655 224
## 14 0.4012605 325
## 15 0.4009780 131
## 16 0.3925687 71
## 17 0.3534483 204
## 18 0.3970803 189
## 19 0.3902703 291
## 20 0.3775874 382
## 21 0.3710778 926
## 22 0.3877140 199
#visualizar el nuevo campo
g2a=spplot(Comunas_Nueva[,13], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g2a
#caso Origenes Bici
pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==1)
destino=EncuestaOrigenDestino[pos,]
res=data.frame(table(destino$`comuna destino`))
orden=Comunas_Nueva$comuna
res_orden= res[orden,]
Comunas_Nueva@data$total_destino_bici=res_orden$Freq
head(Comunas_Nueva@data)
## OBJECTID gid comuna nombre viviendas total_Origen total_origen_bici
## 1 1 107 2 Comuna 2 1445 2968 159
## 2 2 108 1 Comuna 1 132 794 36
## 3 3 109 3 Comuna 3 449 2121 99
## 4 4 110 19 Comuna 19 1092 2850 141
## 5 5 103 15 Comuna 15 106 1171 70
## 6 6 104 17 Comuna 17 2165 2377 141
## total_Origen_moto total_Origen_carro tasa_origen_bici tasa_origen_moto
## 1 1414 1121 0.05357143 0.4764151
## 2 375 301 0.04534005 0.4722922
## 3 970 854 0.04667610 0.4573314
## 4 1280 1165 0.04947368 0.4491228
## 5 536 456 0.05977797 0.4577284
## 6 1136 899 0.05931847 0.4779133
## tasa_origen_carro total_destino total_destino_bici
## 1 0.3776954 73 218
## 2 0.3790932 241 12
## 3 0.4026403 1518 189
## 4 0.4087719 216 147
## 5 0.3894108 120 20
## 6 0.3782078 275 115
g3a=spplot(Comunas_Nueva[,14], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g3a
================================================================================
#caso Origenes moto
pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==2)
destino=EncuestaOrigenDestino[pos,]
res=data.frame(table(destino$`comuna destino`))
orden=Comunas_Nueva$comuna
res_orden= res[orden,]
Comunas_Nueva@data$total_destino_moto=res_orden$Freq
head(Comunas_Nueva@data)
## OBJECTID gid comuna nombre viviendas total_Origen total_origen_bici
## 1 1 107 2 Comuna 2 1445 2968 159
## 2 2 108 1 Comuna 1 132 794 36
## 3 3 109 3 Comuna 3 449 2121 99
## 4 4 110 19 Comuna 19 1092 2850 141
## 5 5 103 15 Comuna 15 106 1171 70
## 6 6 104 17 Comuna 17 2165 2377 141
## total_Origen_moto total_Origen_carro tasa_origen_bici tasa_origen_moto
## 1 1414 1121 0.05357143 0.4764151
## 2 375 301 0.04534005 0.4722922
## 3 970 854 0.04667610 0.4573314
## 4 1280 1165 0.04947368 0.4491228
## 5 536 456 0.05977797 0.4577284
## 6 1136 899 0.05931847 0.4779133
## tasa_origen_carro total_destino total_destino_bici total_destino_moto
## 1 0.3776954 73 218 2177
## 2 0.3790932 241 12 112
## 3 0.4026403 1518 189 1734
## 4 0.4087719 216 147 1421
## 5 0.3894108 120 20 271
## 6 0.3782078 275 115 927
g4a=spplot(Comunas_Nueva[,15], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g4a
Caso Carro
#caso Origenes carro
pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==3)
destino=EncuestaOrigenDestino[pos,]
res=data.frame(table(destino$`comuna destino`))
orden=Comunas_Nueva$comuna
res_orden= res[orden,]
Comunas_Nueva@data$total_destino_carro=res_orden$Freq
head(Comunas_Nueva@data)
## OBJECTID gid comuna nombre viviendas total_Origen total_origen_bici
## 1 1 107 2 Comuna 2 1445 2968 159
## 2 2 108 1 Comuna 1 132 794 36
## 3 3 109 3 Comuna 3 449 2121 99
## 4 4 110 19 Comuna 19 1092 2850 141
## 5 5 103 15 Comuna 15 106 1171 70
## 6 6 104 17 Comuna 17 2165 2377 141
## total_Origen_moto total_Origen_carro tasa_origen_bici tasa_origen_moto
## 1 1414 1121 0.05357143 0.4764151
## 2 375 301 0.04534005 0.4722922
## 3 970 854 0.04667610 0.4573314
## 4 1280 1165 0.04947368 0.4491228
## 5 536 456 0.05977797 0.4577284
## 6 1136 899 0.05931847 0.4779133
## tasa_origen_carro total_destino total_destino_bici total_destino_moto
## 1 0.3776954 73 218 2177
## 2 0.3790932 241 12 112
## 3 0.4026403 1518 189 1734
## 4 0.4087719 216 147 1421
## 5 0.3894108 120 20 271
## 6 0.3782078 275 115 927
## total_destino_carro
## 1 2006
## 2 86
## 3 1557
## 4 1302
## 5 245
## 6 959
g5a=spplot(Comunas_Nueva[,16], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g5a
================================================================================
# con terrain
g6a=spplot(Comunas_Nueva[,14:16], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g6a
================================================================================
Comunas_Nueva@data$tasa_destino_bici=Comunas_Nueva@data$total_destino_bici/Comunas_Nueva@data$total_destino
Comunas_Nueva@data$tasa_destino_moto=Comunas_Nueva@data$total_destino_moto/Comunas_Nueva@data$total_destino
Comunas_Nueva@data$tasa_destino_carro=Comunas_Nueva@data$total_destino_carro/Comunas_Nueva@data$total_destino
g7a=spplot(Comunas_Nueva[,17:19], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g7a
Todos los mapas importantes
g8a=spplot(Comunas_Nueva[,10:12], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g9a=spplot(Comunas_Nueva[,17:19], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g8a
g9a
Concluciones:
Se identifica que en el origen el vehiculo mas usado es la moto, pero no se identifica un patron o concentracion a diferencia del de carro que se observa una mayor concentracion en la comuna 19 y 22
Mientras que en el destino se pueden evidenciar una relacion familiar entre moto y carro.
Como conclusion en ambos analisis las comunas con mayor tasa de movilidad tanto de origen y destino son la comunca 19 y 22