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.

0: Configuración y preparación

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/")

Cargar datos originales

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)

Useful functions

Preprocesamiento

Preprocesar variables físicas

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 ...

Preprocesar comportamiento peatonal

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                  
##                                                
## 

Preprocesar comportamiento vehiculos

### 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 comportamiento peatonal y de conductores

Distribucion de frecuencias

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)
}

Asociación entre el comportamiento del peatón (usa o no el paso cebra) y las variables demográficas y físicas

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.

Peatones

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

Conductores

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