En este notebook se exploran los datos de comportamiento de cruces peatonales. La pregunta de investigación es “¿Cuáles son los factores asociados al comportamiento espacial (uso o no uso) en los pasos peatonales de Cuenca?”
Los datasets del estudio incluyen: Observaciones de Peatones, Observaciones de Vehículos y Características de los cruces peatonales.
En esta sección se cargan los paquetes necesarios y se configura el directorio de trabajo.
knitr::opts_chunk$set(eval = TRUE, include = TRUE)
source ("/Volumes/MacData/odrive/GDrive_UC/Rspace/packloader.R")
ipak(c(
# "googlesheets", #get data from google cheets
#,"zoo" #for filling NAs with previous values
"psych", #descriptive stats
# "FactoMineR",
# "ggplot2",
# "gplots", #contingence table graph
# "graphics", #mosaic graph
"plyr", #recoding via revalue
"dplyr", #pipes
"vcd" #advanced mosaic plots
)
)
## Loading required package: psych
## Loading required package: plyr
## Loading required package: dplyr
## Warning: package 'dplyr' was built under R version 3.4.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading required package: vcd
## Warning: package 'vcd' was built under R version 3.4.3
## Loading required package: grid
## psych plyr dplyr vcd
## TRUE TRUE TRUE TRUE
setwd("/Volumes/MacData/odrive/GDrive_UC/PIESYPEDALES_15/3_Metodos_y_Datos/Exp 6 Pasos peatonales/")
Los datos originales están almacenados en Google Sheets y/o en archivos locales. En el caso que se encuentren en GS, ejecutar este chunk, de lo contrario pasar al siguiente chunk.
# gs_ls()
# gsht <- gs_title("pedcross_data_20180528")
# peaton.df <- gsht %>% gs_read(ws = "obs_peaton")
# vehiculo.df <- gsht %>% gs_read(ws = "obs_vehiculo")
# fisicas.df <- gsht %>% gs_read(ws = "var_fisicas")
###grabar una copia de los datos en archivos locales
# write.csv(peaton.df, "./data/preprocess/pedcross_peaton.csv", row.names = F)
# write.csv(vehiculo.df, "./data/preprocess/pedcross_vehiculo.csv", row.names = F)
# write.csv(fisicas.df, "./data/preprocess/pedcross_fisicas.csv", row.names = F)
Si los datos están en archivos locales, cargarlos con éste chunk:
###run if data is in local cvs files
peaton.df <- read.csv("../data/preprocess/pedcross_peaton.csv", stringsAsFactors=T)
vehiculo.df <- read.csv("../data/preprocess/pedcross_vehiculo.csv", stringsAsFactors=T)
fisicas.df <- read.csv("../data/preprocess/pedcross_fisicas.csv", stringsAsFactors=T)
str(fisicas.df)
## 'data.frame': 128 obs. of 32 variables:
## $ cod_cebra : Factor w/ 128 levels "10Pa","10Pd",..: 39 40 41 42 81 82 83 103 104 105 ...
## $ vel_normada : int 50 50 50 50 50 50 50 50 50 50 ...
## $ vel_apreciada : int 30 30 30 30 40 40 40 50 50 50 ...
## $ flujo_v : Factor w/ 3 levels "bajo","intenso",..: 2 2 3 3 2 2 3 3 3 3 ...
## $ direccionalidad: Factor w/ 2 levels "doble via","una via": 2 2 2 2 1 1 1 1 1 1 ...
## $ n_carriles : int 2 2 2 2 4 4 3 4 4 2 ...
## $ a_calzada : num 5.4 5.4 5.4 5.4 7.7 7.7 4.6 15 9.4 10 ...
## $ a_parterre : num NA NA NA NA 2 2 NA NA 2.8 NA ...
## $ tipo_carriles : Factor w/ 5 levels "bahia","ciclovia",..: 3 3 3 3 3 3 3 3 2 3 ...
## $ pc_ubicacion : Factor w/ 5 levels "5","cerca esquina",..: 2 2 2 2 2 2 2 2 3 3 ...
## $ pc_barrera : Factor w/ 3 levels "bordillo","bordillo-rampa",..: 2 2 2 2 1 2 2 1 1 2 ...
## $ pc_rodadura : Factor w/ 5 levels "asfalto y pintura",..: 4 4 4 4 1 1 1 1 1 1 ...
## $ pc_trama : Factor w/ 4 levels "contínua","figurada",..: 2 2 2 2 4 4 4 4 4 4 ...
## $ pc_ancho : num 3.5 3.5 3.4 3.4 3.5 3.5 3.5 4 4 3 ...
## $ pc_franja : num 0.45 0.45 0.45 0.45 0.3 0.3 0.3 0.45 0.5 0.5 ...
## $ fp_tipo : Factor w/ 4 levels "adocreto","hemorrillado",..: 4 3 4 3 4 4 4 4 4 4 ...
## $ fp_ancho : num 5.4 NA 5.4 NA 7 7 6 6 4.7 10 ...
## $ fp_espesor : num 0.45 NA 0.42 NA 0.3 0.3 0.3 0.45 0.5 0.5 ...
## $ pc_separacion : num 1.5 NA 2 NA 2 2 2.8 3 3 2 ...
## $ pc_calidad_vis : Factor w/ 6 levels "6","alta","baja",..: 5 4 4 4 2 2 2 2 2 2 ...
## $ se_vertical : Factor w/ 4 levels "ciclovía","no existe",..: 4 2 4 2 4 4 4 2 1 4 ...
## $ smfv_estado : Factor w/ 2 levels "bueno","no existe": 1 1 1 1 1 1 1 1 1 1 ...
## $ smfp_tipo : Factor w/ 5 levels "cronometro figura y tono",..: 1 5 1 5 5 5 5 5 5 5 ...
## $ smfb_estado : Factor w/ 2 levels "bueno","no existe": 2 2 2 2 2 2 2 2 2 1 ...
## $ smfp_verde : int 23 NA 44 NA NA NA NA NA NA NA ...
## $ smfp_rojo : int 32 NA 77 NA NA NA NA NA NA NA ...
## $ smfb_verde : int NA NA NA NA NA NA NA NA NA 31 ...
## $ smfb_ambar : int NA NA NA NA NA NA NA NA NA 3 ...
## $ smfb_rojo : int NA NA NA NA NA NA NA NA NA 81 ...
## $ smfv_verde : int 22 22 30 30 41 41 36 29 29 31 ...
## $ smfv_ambar : int 3 3 3 3 3 3 3 3 3 3 ...
## $ smfv_rojo : int 35 35 56 56 66 66 71 85 85 81 ...
#Fix case
fisicas.df$cod_cebra <- tolower(fisicas.df$cod_cebra)
# Convert pdata int categorical variables to factors
fisicas.df[,c("vel_normada","vel_apreciada","n_carriles")]<-
as.data.frame(lapply(fisicas.df[,c("vel_normada","vel_apreciada","n_carriles")], factor))
# recode some variables
fisicas.df<- within(fisicas.df, {
flujo_v <- revalue(flujo_v, c("medio"="bajo")) #solo dos niveles de flujo
pc_calidad_vis <- revalue(pc_calidad_vis, c("confusa"="baja","6"="media"))
fp_tipo <- revalue(fp_tipo, c("adocreto"="otra","hemorrillado"="otra"))
})
### Dummy variables
fisicas.df<- within(fisicas.df, {
anchocalzada <- factor(ifelse(a_calzada > median(a_calzada, na.rm=T), "ancha", "angosta"))
anchopcebra <- factor(ifelse(pc_ancho > median(pc_ancho, na.rm=T), "ancho", "angosto"))
semfvtiempoverde <- factor(ifelse(smfv_verde > median(smfv_verde, na.rm=T), "largo", "corto"))
tieneparterre <- factor(ifelse(is.na(a_parterre), "no", "si"))
tienesemfpeaton <- factor(ifelse(smfp_tipo!="no existe", "si", "no"))
tienesemfvehi <- factor(ifelse(smfv_estado!="no existe", "si", "no"))
tienepcebra <- factor(ifelse(pc_ubicacion!="ninguno", "si", "no"))
tienesevertical <- factor(ifelse(se_vertical!="no existe", "si", "no"))
tienetrama <- factor(ifelse(pc_trama!="no existe", "si", "no"))
tienefranjaprot <- factor(ifelse(fp_tipo!="no existe", "si", "no"))
#tienedistractor <- factor(ifelse(distractor!="ninguno", "si", "no"))
})
str(fisicas.df)
## 'data.frame': 128 obs. of 42 variables:
## $ cod_cebra : chr "1pa" "1pd" "1ta" "1td" ...
## $ vel_normada : Factor w/ 2 levels "30","50": 2 2 2 2 2 2 2 2 2 2 ...
## $ vel_apreciada : Factor w/ 4 levels "20","30","40",..: 2 2 2 2 3 3 3 4 4 4 ...
## $ flujo_v : Factor w/ 2 levels "bajo","intenso": 2 2 1 1 2 2 1 1 1 1 ...
## $ direccionalidad : Factor w/ 2 levels "doble via","una via": 2 2 2 2 1 1 1 1 1 1 ...
## $ n_carriles : Factor w/ 4 levels "1","2","3","4": 2 2 2 2 4 4 3 4 4 2 ...
## $ a_calzada : num 5.4 5.4 5.4 5.4 7.7 7.7 4.6 15 9.4 10 ...
## $ a_parterre : num NA NA NA NA 2 2 NA NA 2.8 NA ...
## $ tipo_carriles : Factor w/ 5 levels "bahia","ciclovia",..: 3 3 3 3 3 3 3 3 2 3 ...
## $ pc_ubicacion : Factor w/ 5 levels "5","cerca esquina",..: 2 2 2 2 2 2 2 2 3 3 ...
## $ pc_barrera : Factor w/ 3 levels "bordillo","bordillo-rampa",..: 2 2 2 2 1 2 2 1 1 2 ...
## $ pc_rodadura : Factor w/ 5 levels "asfalto y pintura",..: 4 4 4 4 1 1 1 1 1 1 ...
## $ pc_trama : Factor w/ 4 levels "contínua","figurada",..: 2 2 2 2 4 4 4 4 4 4 ...
## $ pc_ancho : num 3.5 3.5 3.4 3.4 3.5 3.5 3.5 4 4 3 ...
## $ pc_franja : num 0.45 0.45 0.45 0.45 0.3 0.3 0.3 0.45 0.5 0.5 ...
## $ fp_tipo : Factor w/ 3 levels "otra","no existe",..: 3 2 3 2 3 3 3 3 3 3 ...
## $ fp_ancho : num 5.4 NA 5.4 NA 7 7 6 6 4.7 10 ...
## $ fp_espesor : num 0.45 NA 0.42 NA 0.3 0.3 0.3 0.45 0.5 0.5 ...
## $ pc_separacion : num 1.5 NA 2 NA 2 2 2.8 3 3 2 ...
## $ pc_calidad_vis : Factor w/ 4 levels "media","alta",..: 1 3 3 3 2 2 2 2 2 2 ...
## $ se_vertical : Factor w/ 4 levels "ciclovía","no existe",..: 4 2 4 2 4 4 4 2 1 4 ...
## $ smfv_estado : Factor w/ 2 levels "bueno","no existe": 1 1 1 1 1 1 1 1 1 1 ...
## $ smfp_tipo : Factor w/ 5 levels "cronometro figura y tono",..: 1 5 1 5 5 5 5 5 5 5 ...
## $ smfb_estado : Factor w/ 2 levels "bueno","no existe": 2 2 2 2 2 2 2 2 2 1 ...
## $ smfp_verde : int 23 NA 44 NA NA NA NA NA NA NA ...
## $ smfp_rojo : int 32 NA 77 NA NA NA NA NA NA NA ...
## $ smfb_verde : int NA NA NA NA NA NA NA NA NA 31 ...
## $ smfb_ambar : int NA NA NA NA NA NA NA NA NA 3 ...
## $ smfb_rojo : int NA NA NA NA NA NA NA NA NA 81 ...
## $ smfv_verde : int 22 22 30 30 41 41 36 29 29 31 ...
## $ smfv_ambar : int 3 3 3 3 3 3 3 3 3 3 ...
## $ smfv_rojo : int 35 35 56 56 66 66 71 85 85 81 ...
## $ tienefranjaprot : Factor w/ 2 levels "no","si": 2 1 2 1 2 2 2 2 2 2 ...
## $ tienetrama : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ tienesevertical : Factor w/ 2 levels "no","si": 2 1 2 1 2 2 2 1 2 2 ...
## $ tienepcebra : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ tienesemfvehi : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ tienesemfpeaton : Factor w/ 2 levels "no","si": 2 1 2 1 1 1 1 1 1 1 ...
## $ tieneparterre : Factor w/ 2 levels "no","si": 1 1 1 1 2 2 1 1 2 1 ...
## $ semfvtiempoverde: Factor w/ 2 levels "corto","largo": 1 1 1 1 1 1 1 1 1 1 ...
## $ anchopcebra : Factor w/ 2 levels "ancho","angosto": 2 2 2 2 2 2 2 1 1 2 ...
## $ anchocalzada : Factor w/ 2 levels "ancha","angosta": 2 2 2 2 2 2 2 1 1 1 ...
Si los datos requieren preprocesamiento y recodificación usar este chunk. Si tiene archivos locales con los datos recodificados, continuar a partir del siguiente Chunk
### fix case
peaton.df$cod_cebra <- tolower(peaton.df$cod_cebra)
### merge with physical (categorical) variables
fcatvars <- NULL
for (i in colnames(fisicas.df)){
if (is.factor(fisicas.df[,i])) fcatvars <- c(fcatvars,i)
}
fcatvars
## [1] "vel_normada" "vel_apreciada" "flujo_v"
## [4] "direccionalidad" "n_carriles" "tipo_carriles"
## [7] "pc_ubicacion" "pc_barrera" "pc_rodadura"
## [10] "pc_trama" "fp_tipo" "pc_calidad_vis"
## [13] "se_vertical" "smfv_estado" "smfp_tipo"
## [16] "smfb_estado" "tienefranjaprot" "tienetrama"
## [19] "tienesevertical" "tienepcebra" "tienesemfvehi"
## [22] "tienesemfpeaton" "tieneparterre" "semfvtiempoverde"
## [25] "anchopcebra" "anchocalzada"
pdata.df <- merge(peaton.df,fisicas.df[c("cod_cebra",fcatvars)], by="cod_cebra", all.x = T)
### pdata dummy variables
pdata.df<- within(pdata.df, {
tienedistractor <- factor(ifelse(distractor!="ninguno", "si", "no"))
tiempocruce <- factor(cut(tiempo, c(5,10,max(tiempo), include.lowest=TRUE)))
})
str(pdata.df)
## 'data.frame': 6564 obs. of 39 variables:
## $ cod_cebra : chr "10pa" "10pa" "10pa" "10pa" ...
## $ cp_id : int 1998 1999 1997 1993 1994 1995 1996 2010 2011 2012 ...
## $ usa : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ grupo : Factor w/ 3 levels "grupo","pareja",..: 3 3 3 3 3 3 3 1 1 1 ...
## $ edad : Factor w/ 4 levels "3ra edad","adulto",..: 1 1 1 1 1 1 1 2 2 2 ...
## $ sexo : Factor w/ 2 levels "Femenino","Masculino": 1 2 1 1 1 1 2 2 2 1 ...
## $ luz : Factor w/ 4 levels "ambar","no exixte",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ actitud : Factor w/ 3 levels "cautelosa","normal",..: 2 3 2 1 1 2 2 3 3 3 ...
## $ interaccion : Factor w/ 3 levels "corporal","normal",..: 2 3 2 3 3 2 2 2 2 2 ...
## $ distractor : Factor w/ 3 levels "audífonos","celular",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ tiempo : num 9.74 7.2 7.24 8.63 7.38 ...
## $ vel_normada : Factor w/ 2 levels "30","50": 2 2 2 2 2 2 2 2 2 2 ...
## $ vel_apreciada : Factor w/ 4 levels "20","30","40",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ flujo_v : Factor w/ 2 levels "bajo","intenso": 2 2 2 2 2 2 2 2 2 2 ...
## $ direccionalidad : Factor w/ 2 levels "doble via","una via": 1 1 1 1 1 1 1 1 1 1 ...
## $ n_carriles : Factor w/ 4 levels "1","2","3","4": 2 2 2 2 2 2 2 2 2 2 ...
## $ tipo_carriles : Factor w/ 5 levels "bahia","ciclovia",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ pc_ubicacion : Factor w/ 5 levels "5","cerca esquina",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ pc_barrera : Factor w/ 3 levels "bordillo","bordillo-rampa",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ pc_rodadura : Factor w/ 5 levels "asfalto y pintura",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ pc_trama : Factor w/ 4 levels "contínua","figurada",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ fp_tipo : Factor w/ 3 levels "otra","no existe",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ pc_calidad_vis : Factor w/ 4 levels "media","alta",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ se_vertical : Factor w/ 4 levels "ciclovía","no existe",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ smfv_estado : Factor w/ 2 levels "bueno","no existe": 1 1 1 1 1 1 1 1 1 1 ...
## $ smfp_tipo : Factor w/ 5 levels "cronometro figura y tono",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ smfb_estado : Factor w/ 2 levels "bueno","no existe": 2 2 2 2 2 2 2 2 2 2 ...
## $ tienefranjaprot : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ tienetrama : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ tienesevertical : Factor w/ 2 levels "no","si": 1 1 1 1 1 1 1 1 1 1 ...
## $ tienepcebra : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ tienesemfvehi : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ tienesemfpeaton : Factor w/ 2 levels "no","si": 2 2 2 2 2 2 2 2 2 2 ...
## $ tieneparterre : Factor w/ 2 levels "no","si": 1 1 1 1 1 1 1 1 1 1 ...
## $ semfvtiempoverde: Factor w/ 2 levels "corto","largo": 2 2 2 2 2 2 2 2 2 2 ...
## $ anchopcebra : Factor w/ 2 levels "ancho","angosto": 1 1 1 1 1 1 1 1 1 1 ...
## $ anchocalzada : Factor w/ 2 levels "ancha","angosta": 1 1 1 1 1 1 1 1 1 1 ...
## $ tiempocruce : Factor w/ 3 levels "(1,5]","(5,10]",..: 2 2 2 2 2 3 2 3 3 3 ...
## $ tienedistractor : Factor w/ 2 levels "no","si": 1 1 1 1 1 1 1 1 1 1 ...
pcatvars <- NULL
for (i in colnames(pdata.df)){
if (is.factor(pdata.df[,i])) pcatvars <- c(pcatvars,i)
}
pcatvars
## [1] "usa" "grupo" "edad"
## [4] "sexo" "luz" "actitud"
## [7] "interaccion" "distractor" "vel_normada"
## [10] "vel_apreciada" "flujo_v" "direccionalidad"
## [13] "n_carriles" "tipo_carriles" "pc_ubicacion"
## [16] "pc_barrera" "pc_rodadura" "pc_trama"
## [19] "fp_tipo" "pc_calidad_vis" "se_vertical"
## [22] "smfv_estado" "smfp_tipo" "smfb_estado"
## [25] "tienefranjaprot" "tienetrama" "tienesevertical"
## [28] "tienepcebra" "tienesemfvehi" "tienesemfpeaton"
## [31] "tieneparterre" "semfvtiempoverde" "anchopcebra"
## [34] "anchocalzada" "tiempocruce" "tienedistractor"
summary(pdata.df)
## cod_cebra cp_id usa grupo edad
## Length:6564 Min. : 1 no:3720 grupo :1394 3ra edad:2401
## Class :character 1st Qu.:1642 si:2844 pareja:1870 adulto :2199
## Mode :character Median :3282 sólo :3300 joven :1545
## Mean :3282 niño : 419
## 3rd Qu.:4923
## Max. :6564
## sexo luz actitud interaccion
## Femenino :3213 ambar : 327 cautelosa:1279 corporal: 10
## Masculino:3351 no exixte: 398 normal :4410 normal :5532
## roja :1956 riesgosa : 875 visual :1022
## verde :3883
##
##
## distractor tiempo vel_normada vel_apreciada
## audífonos: 34 Min. : 0.110 30 : 248 20 : 670
## celular : 50 1st Qu.: 5.370 50 :6264 30 :2519
## ninguno :6480 Median : 7.240 NA's: 52 40 :2660
## Mean : 9.515 50 : 663
## 3rd Qu.: 10.560 NA's: 52
## Max. :101.410
## flujo_v direccionalidad n_carriles tipo_carriles
## bajo :3745 doble via:2653 1 : 984 bahia : 275
## intenso:2767 una via :3859 2 :3373 ciclovia: 71
## NA's : 52 NA's : 52 3 : 167 otro :4694
## 4 :1988 parqueo :1354
## NA's: 52 tranvia : 118
## NA's : 52
## pc_ubicacion pc_barrera pc_rodadura
## 5 : 87 bordillo :2264 asfalto y pintura:1289
## cerca esquina:2339 bordillo-rampa:2473 hs y pintura :2375
## continuo :3355 ninguna :1775 no existe : 702
## desplazado : 117 NA's : 52 piedra otro :1606
## ninguno : 614 piedra y pintura : 540
## NA's : 52 NA's : 52
## pc_trama fp_tipo pc_calidad_vis se_vertical
## contínua : 339 otra : 206 media :1275 ciclovía : 103
## figurada :1129 no existe:3017 alta :1930 no existe:3010
## no existe :1091 pintura :3289 baja :2011 peatonal : 202
## segmentada:3953 NA's : 52 no existe:1296 vehicular:3197
## NA's : 52 NA's : 52 NA's : 52
##
## smfv_estado smfp_tipo smfb_estado
## bueno :5814 cronometro figura y tono: 543 bueno : 101
## no existe: 698 cronómetro y figura : 396 no existe:6411
## NA's : 52 figura y tono :1595 NA's : 52
## figurado : 305
## no existe :3673
## NA's : 52
## tienefranjaprot tienetrama tienesevertical tienepcebra tienesemfvehi
## no :3017 no :1091 no :3010 no : 614 no : 698
## si :3495 si :5421 si :3502 si :5898 si :5814
## NA's: 52 NA's: 52 NA's: 52 NA's: 52 NA's: 52
##
##
##
## tienesemfpeaton tieneparterre semfvtiempoverde anchopcebra
## no :3673 no :4798 corto:2995 ancho :3051
## si :2839 si :1714 largo:2819 angosto:3461
## NA's: 52 NA's: 52 NA's : 750 NA's : 52
##
##
##
## anchocalzada tiempocruce tienedistractor
## ancha :2797 (1,5] :1293 no:6480
## angosta:3715 (5,10] :3459 si: 84
## NA's : 52 (10,101]:1811
## NA's : 1
##
##
### fix case
vehiculo.df$cod_cebra <- tolower(vehiculo.df$cod_cebra)
str(vehiculo.df)
## 'data.frame': 2752 obs. of 7 variables:
## $ cod_cebra : chr "1pa" "1pa" "1pa" "1pa" ...
## $ tipo_vehiculo : Factor w/ 3 levels "bicicleta","carro",..: 2 3 2 2 2 2 2 2 2 3 ...
## $ respeta_franja: Factor w/ 3 levels "no","no existe",..: 3 1 1 1 3 3 3 3 3 1 ...
## $ respeta_paso : Factor w/ 3 levels "no","no existe",..: 3 1 3 3 3 3 3 3 3 3 ...
## $ luz : Factor w/ 4 levels "ambar","no existe",..: 4 3 4 4 4 4 4 4 4 4 ...
## $ actitud : Factor w/ 3 levels "cautelosa","normal",..: 2 3 2 2 2 2 3 3 2 2 ...
## $ pavi_bicicleta: Factor w/ 2 levels "acera","calzada": NA NA NA NA NA NA NA NA NA NA ...
### merge
vdata.df <- merge(vehiculo.df,fisicas.df, by="cod_cebra", all.x = T)
vcatvars <- NULL
for (i in colnames(vdata.df)){
if (is.factor(vdata.df[,i])) vcatvars <- c(vcatvars,i)
}
vcatvars
## [1] "tipo_vehiculo" "respeta_franja" "respeta_paso"
## [4] "luz" "actitud" "pavi_bicicleta"
## [7] "vel_normada" "vel_apreciada" "flujo_v"
## [10] "direccionalidad" "n_carriles" "tipo_carriles"
## [13] "pc_ubicacion" "pc_barrera" "pc_rodadura"
## [16] "pc_trama" "fp_tipo" "pc_calidad_vis"
## [19] "se_vertical" "smfv_estado" "smfp_tipo"
## [22] "smfb_estado" "tienefranjaprot" "tienetrama"
## [25] "tienesevertical" "tienepcebra" "tienesemfvehi"
## [28] "tienesemfpeaton" "tieneparterre" "semfvtiempoverde"
## [31] "anchopcebra" "anchocalzada"
Explorar la distribución de frecuencias de los niveles de cada variable categórica utilizando gráficos de barras
par(mfrow = c(2,4))
for (i in pcatvars) {
plot(pdata.df[,i], main=i,
ylab = "Count",
col="steelblue",
las = 2)
}
Explorar la asociación de cada variabe con la variable “usa” que indica el número de peatones que usaron o no el paso peatonal en cada paso estudiado y con la variable “respeta_paso” si indica que el conductor se detuvo antes del paso cebra.
Para esto se representan las asociaciones en mosaic plots o gráficos de mosaico. Estos gráficos consisten en un conjunto de sectores que muestran la distribución relativa de los datos en una tabla de contingencia de dos variables categóricas. Los tamaños de los sectores varían en función del número de casos en el grupo correspondiente. Además, el gráfico representa con colores y estilos de borde el sentido (positivo / negativo) y el nivel de significancia de la asociación expresado en residuos estandarizados. Por ejemplo, existe una asociación positiva entre usar el paso cebra y caminar en pareja, así como también entre caminar sólo y no usar el paso cebra, pero no existe una asociación significativa entre caminar en grupo y usar o no el paso cebra.
lapply(pcatvars, plot_mosaic, data=pdata.df, var="usa")
## Warning in legend(residuals, gpfun, residuals_type): All residuals are
## zero.
## Warning in abbreviate(labs[[i]], abbreviate_labs[i]): abbreviate used with
## non-ASCII chars
## Warning in abbreviate(labs[[i]], abbreviate_labs[i]): abbreviate used with
## non-ASCII chars
## Warning in abbreviate(labs[[i]], abbreviate_labs[i]): abbreviate used with
## non-ASCII chars
## Warning in abbreviate(labs[[i]], abbreviate_labs[i]): abbreviate used with
## non-ASCII chars
## [[1]]
## usa
## no 3720
## si 2844
##
## [[2]]
## grupo grupo pareja sólo
## usa
## no 741 993 1986
## si 653 877 1314
##
## [[3]]
## edad 3ra edad adulto joven niño
## usa
## no 1356 1363 791 210
## si 1045 836 754 209
##
## [[4]]
## sexo Femenino Masculino
## usa
## no 1793 1927
## si 1420 1424
##
## [[5]]
## luz ambar no exixte roja verde
## usa
## no 147 263 1302 2008
## si 180 135 654 1875
##
## [[6]]
## actitud cautelosa normal riesgosa
## usa
## no 674 2482 564
## si 605 1928 311
##
## [[7]]
## interaccion corporal normal visual
## usa
## no 5 3213 502
## si 5 2319 520
##
## [[8]]
## distractor audífonos celular ninguno
## usa
## no 8 23 3689
## si 26 27 2791
##
## [[9]]
## vel_normada 30 50
## usa
## no 62 3633
## si 186 2631
##
## [[10]]
## vel_apreciada 20 30 40 50
## usa
## no 413 1560 1335 387
## si 257 959 1325 276
##
## [[11]]
## flujo_v bajo intenso
## usa
## no 2167 1528
## si 1578 1239
##
## [[12]]
## direccionalidad doble via una via
## usa
## no 1425 2270
## si 1228 1589
##
## [[13]]
## n_carriles 1 2 3 4
## usa
## no 645 1896 113 1041
## si 339 1477 54 947
##
## [[14]]
## tipo_carriles bahia ciclovia otro parqueo tranvia
## usa
## no 169 49 2533 894 50
## si 106 22 2161 460 68
##
## [[15]]
## pc_ubicacion 5 cerca esquina continuo desplazado ninguno
## usa
## no 70 1335 1868 69 353
## si 17 1004 1487 48 261
##
## [[16]]
## pc_barrera bordillo bordillo-rampa ninguna
## usa
## no 1344 1363 988
## si 920 1110 787
##
## [[17]]
## pc_rodadura asfalto y pintura hs y pintura no existe piedra otro piedra y pintura
## usa
## no 678 1254 410 1044 309
## si 611 1121 292 562 231
##
## [[18]]
## pc_trama contínua figurada no existe segmentada
## usa
## no 199 681 707 2108
## si 140 448 384 1845
##
## [[19]]
## fp_tipo otra no existe pintura
## usa
## no 84 1839 1772
## si 122 1178 1517
##
## [[20]]
## pc_calidad_vis media alta baja no existe
## usa
## no 643 970 1286 796
## si 632 960 725 500
##
## [[21]]
## se_vertical ciclovía no existe peatonal vehicular
## usa
## no 48 1800 30 1817
## si 55 1210 172 1380
##
## [[22]]
## smfv_estado bueno no existe
## usa
## no 3342 353
## si 2472 345
##
## [[23]]
## smfp_tipo cronometro figura y tono cronómetro y figura figura y tono figurado no existe
## usa
## no 268 209 889 147 2182
## si 275 187 706 158 1491
##
## [[24]]
## smfb_estado bueno no existe
## usa
## no 47 3648
## si 54 2763
##
## [[25]]
## tienefranjaprot no si
## usa
## no 1839 1856
## si 1178 1639
##
## [[26]]
## tienetrama no si
## usa
## no 707 2988
## si 384 2433
##
## [[27]]
## tienesevertical no si
## usa
## no 1800 1895
## si 1210 1607
##
## [[28]]
## tienepcebra no si
## usa
## no 353 3342
## si 261 2556
##
## [[29]]
## tienesemfvehi no si
## usa
## no 353 3342
## si 345 2472
##
## [[30]]
## tienesemfpeaton no si
## usa
## no 2182 1513
## si 1491 1326
##
## [[31]]
## tieneparterre no si
## usa
## no 2804 891
## si 1994 823
##
## [[32]]
## semfvtiempoverde corto largo
## usa
## no 1720 1622
## si 1275 1197
##
## [[33]]
## anchopcebra ancho angosto
## usa
## no 1580 2115
## si 1471 1346
##
## [[34]]
## anchocalzada ancha angosta
## usa
## no 1525 2170
## si 1272 1545
##
## [[35]]
## tiempocruce (1,5] (5,10] (10,101]
## usa
## no 798 1861 1061
## si 495 1598 750
##
## [[36]]
## tienedistractor no si
## usa
## no 3689 31
## si 2791 53
vdatasel.df <- vdata.df[vdata.df$respeta_paso!="no existe",]
vdatasel.df$respeta_paso <- factor(vdatasel.df$respeta_paso)
lapply(vcatvars, plot_mosaic, data = vdatasel.df, var="respeta_paso")
## Warning in legend(residuals, gpfun, residuals_type): All residuals are
## zero.
## Warning in abbreviate(labs[[i]], abbreviate_labs[i]): abbreviate used with
## non-ASCII chars
## Warning in abbreviate(labs[[i]], abbreviate_labs[i]): abbreviate used with
## non-ASCII chars
## Warning in abbreviate(labs[[i]], abbreviate_labs[i]): abbreviate used with
## non-ASCII chars
## [[1]]
## tipo_vehiculo bicicleta carro moto
## respeta_paso
## no 30 381 71
## si 18 2009 158
##
## [[2]]
## respeta_franja no no existe si
## respeta_paso
## no 366 116 0
## si 501 211 1473
##
## [[3]]
## respeta_paso
## no 482
## si 2185
##
## [[4]]
## luz ambar no existe roja verde
## respeta_paso
## no 3 93 67 319
## si 2 157 47 1979
##
## [[5]]
## actitud cautelosa normal riesgosa
## respeta_paso
## no 26 264 192
## si 46 1913 226
##
## [[6]]
## pavi_bicicleta acera calzada
## respeta_paso
## no 17 7
## si 11 6
##
## [[7]]
## vel_normada 30 50
## respeta_paso
## no 50 425
## si 56 2115
##
## [[8]]
## vel_apreciada 20 30 40 50
## respeta_paso
## no 21 110 253 91
## si 45 362 1376 388
##
## [[9]]
## flujo_v bajo intenso
## respeta_paso
## no 286 189
## si 1237 934
##
## [[10]]
## direccionalidad doble via una via
## respeta_paso
## no 349 126
## si 1476 695
##
## [[11]]
## n_carriles 1 2 3 4
## respeta_paso
## no 33 160 14 268
## si 101 869 64 1137
##
## [[12]]
## tipo_carriles bahia ciclovia otro parqueo tranvia
## respeta_paso
## no 7 3 409 45 11
## si 10 35 1870 232 24
##
## [[13]]
## pc_ubicacion 5 cerca esquina continuo desplazado ninguno
## respeta_paso
## no 23 238 189 17 8
## si 65 907 1142 42 15
##
## [[14]]
## pc_barrera bordillo bordillo-rampa ninguna
## respeta_paso
## no 225 205 45
## si 967 939 265
##
## [[15]]
## pc_rodadura asfalto y pintura hs y pintura no existe piedra otro piedra y pintura
## respeta_paso
## no 147 276 10 30 12
## si 806 1148 25 119 73
##
## [[16]]
## pc_trama contínua figurada no existe segmentada
## respeta_paso
## no 60 26 12 377
## si 293 64 73 1741
##
## [[17]]
## fp_tipo otra no existe pintura
## respeta_paso
## no 9 148 318
## si 56 320 1795
##
## [[18]]
## pc_calidad_vis media alta baja no existe
## respeta_paso
## no 121 197 142 15
## si 585 941 559 86
##
## [[19]]
## se_vertical ciclovía no existe peatonal vehicular
## respeta_paso
## no 13 171 16 275
## si 63 857 25 1226
##
## [[20]]
## smfv_estado bueno no existe
## respeta_paso
## no 382 93
## si 2014 157
##
## [[21]]
## smfp_tipo cronometro figura y tono cronómetro y figura figura y tono figurado no existe
## respeta_paso
## no 24 39 109 28 275
## si 119 196 551 96 1209
##
## [[22]]
## smfb_estado bueno no existe
## respeta_paso
## no 11 464
## si 52 2119
##
## [[23]]
## tienefranjaprot no si
## respeta_paso
## no 148 327
## si 320 1851
##
## [[24]]
## tienetrama no si
## respeta_paso
## no 12 463
## si 73 2098
##
## [[25]]
## tienesevertical no si
## respeta_paso
## no 171 304
## si 857 1314
##
## [[26]]
## tienepcebra no si
## respeta_paso
## no 8 467
## si 15 2156
##
## [[27]]
## tienesemfvehi no si
## respeta_paso
## no 93 382
## si 157 2014
##
## [[28]]
## tienesemfpeaton no si
## respeta_paso
## no 275 200
## si 1209 962
##
## [[29]]
## tieneparterre no si
## respeta_paso
## no 240 235
## si 1162 1009
##
## [[30]]
## semfvtiempoverde corto largo
## respeta_paso
## no 270 112
## si 1400 614
##
## [[31]]
## anchopcebra ancho angosto
## respeta_paso
## no 295 180
## si 1268 903
##
## [[32]]
## anchocalzada ancha angosta
## respeta_paso
## no 303 172
## si 1434 737