A continuación realizamos un estudio de estadistica descriptiva a la base de datos de accidentes de tránsito del 2015 a nivel nacional provisto por el INEC
Para integrar R con Markdown se utiliza un chunk (pedazo de código), aquí colocaremos todos el código R tal cual sería para demostrar el experimiento realizado, la ventaja esta en que se detalla tanto el tratamiento de datos como el experimento en si: utilizar un algoritmo, simulación, etc.
El chunk acepta algunos parámetros en los cuales indicaremos si se debe mostrar el código, si se quiere mostrar el resultado, si se desea mostrar los mensajes de consola de R, warnings, etc.
accidentes2015 <- read.csv('./2015_AccidentesTránsitoBDD.csv')
summary(accidentes2015)
## PROVINCIA CAUSA MES
## PICHINCHA :15754 IMPERIC. E IMPRUD. CONDUCTOR:16612 Diciembre: 3446
## GUAYAS : 6799 NO RESP. SEÑALES DE TRÁNSITO: 6279 Mayo : 3096
## TUNGURAHUA: 1735 EXCESO VELOCIDAD : 3777 Octubre : 3039
## IMBABURA : 1526 MAL REBASA. INVADIR CARRIL : 3066 Marzo : 3023
## AZUAY : 1373 EMBRIAGUEZ O DROGA : 2490 Noviembre: 3001
## LOS RÍOS : 1250 IMPRUDENCIA DEL PEATÓN : 1696 Abril : 2967
## (Other) : 7269 (Other) : 1786 (Other) :17134
## CLASE ZONA
## CHOQUES :15976 RURAL :10517
## ATROPELLOS : 5140 URBANA:25189
## ESTRELLAMIENTOS : 4624
## PÉRDIDA DE PISTA: 3471
## ROZAMIENTOS : 2597
## OTROS : 2034
## (Other) : 1864
## CANTON NUM_FALLECIDO
## DISTRITO METROPOLITANO DE QUITO:15099 Min. : 0.00000
## GUAYAQUIL : 4142 1st Qu.: 0.00000
## AMBATO : 1514 Median : 0.00000
## IBARRA : 1292 Mean : 0.05988
## CUENCA : 1153 3rd Qu.: 0.00000
## SANTO DOMINGO : 957 Max. :10.00000
## (Other) :11549
## NUM_LESIONADO TOTAL_VICTIMAS
## Min. : 0.0000 Min. : 0.0000
## 1st Qu.: 0.0000 1st Qu.: 0.0000
## Median : 0.0000 Median : 1.0000
## Mean : 0.7067 Mean : 0.7666
## 3rd Qu.: 1.0000 3rd Qu.: 1.0000
## Max. :34.0000 Max. :35.0000
##
Causas más comunes de accidentes que dejan personas fallecidas.
library(highcharter)
## Highcharts (www.highcharts.com) is a Highsoft software product which is
## not free for commercial and Governmental use
causas <- aggregate(NUM_FALLECIDO ~ CAUSA, accidentes2015, sum)
hchart(causas, "column", hcaes(x = CAUSA, y = NUM_FALLECIDO))
Las provincias de Guayas y Pichincha son las que tienen mayor número de accidentes
library(highcharter)
provincias <- aggregate(NUM_FALLECIDO ~ PROVINCIA, accidentes2015, sum)
provincias <- provincias[order(-provincias$NUM_FALLECIDO),]
highchart() %>%
hc_title(text="Número de fallecidos por provincia")%>%
hc_chart(type="bar") %>%
hc_xAxis(categories = provincias$PROVINCIA) %>%
hc_add_series(provincias$NUM_FALLECIDO, name="Provincias")
Distribución de victimas por causa del accidente
hcboxplot(x=accidentes2015$TOTAL_VICTIMAS, var=accidentes2015$CAUSA)
La funcion highchart inicializa el gráfico, con %>% vamos agregando las opciones que queremos visualizar, series, categorias, colores, etc.
library(reshape)
#agregamos número de lesionados por mes y por zona
zonas <- aggregate(NUM_LESIONADO ~ MES + ZONA, accidentes2015, sum )
#pivoteamos mes a filas, zonas a columnas
zonas <- cast(zonas, MES ~ ZONA, sum)
#ordenamos los meses
mes.nombre <- c("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre")
zonas$MES = factor(zonas$MES, levels = mes.nombre)
zonas = zonas[order(zonas$MES),]
# guardamos el gráfico en el objeto hc para poder modificarlo luego
hc <- highchart() %>%
# hc_xAxis detallamos las opciones para el eje x, la variable a enviar debe ser una categórica
hc_xAxis(categories = zonas$MES) %>%
# una serie es una variable numérica continua, en este caso agregaremos 2
hc_add_series(name = "Urbano", data = zonas$URBANA) %>%
hc_add_series(name = "Rural", data = zonas$RURAL)
# para graficar solamente ejecutamos el objeto hc
hc
La función hc_chart permite agregar opciones generales como colores, aspecto y leyendas
hc %>%
# borderColor: color del borde del recuadro
hc_chart(borderColor = '#EBBA95',
# borderRadius para redondear las esquinas del recuardo
borderRadius = 10,
# borderWidth el espesor de la línea
borderWidth = 2,
# backgroundColor solido se envia un color, en gradiente un conjunto de colores
backgroundColor = list(
linearGradient = c(0, 0, 500, 500),
stops = list(
list(0, 'rgb(255, 255, 255)'),
list(1, 'rgb(200, 200, 255)')
)))
Para cambiar el tipo de gráfico utilizamos la funcion hc_chart indicando el nuevo tipo.
hc <- hc %>%
hc_chart(type = 'column')
hc
Volvemos al gráfico de líneas
hc <- hc_chart(hc, type = "line")
hc
Colores, con hc_colors podemos embellecer nuestros gráficos
library("viridisLite")
cols <- viridis(2)
cols <- substr(cols, 0, 7)
cols
## [1] "#440154" "#FDE725"
hc %>%
hc_colors(cols)
cols <- rainbow(2)
cols
## [1] "#FF0000FF" "#00FFFFFF"
hc %>%
hc_colors(cols)
Ejes, lineas de grilla, mover el eje.
hc_xAxis y hc_yAxis
hc %>%
hc_xAxis(title = list(text = "Meses"),
#poner el eje en el lado opuesto
opposite = TRUE,
#agregar una línea constante
plotLines = list(
list(label = list(text = "Constante"),
color = "#FF0000",
width = 2,
value = 5.5))) %>%
hc_yAxis(title = list(text = "Número de afectados"),
opposite = TRUE,
minorTickInterval = "auto",
minorGridLineDashStyle = "LongDashDotDot",
#mostrar la primera etiqueta
showFirstLabel = FALSE,
#mostrar la ultima etiqueta
showLastLabel = FALSE,
#agregar una banda de área
plotBands = list(
list(from = 1400, to = JS("Infinity"), color = "rgba(100, 0, 0, 0.1)",
label = list(text = "Ãrea"))))
Eliminando series
hc %>%
hc_rm_series(name = "Rural")
Agregando color al área
hc %>%
hc_add_series(name = "Rural", data = zonas$RURAL, type="area")
Varios tipos de gráficos
hc %>%
hc_add_series(name = "Rural", data = zonas$RURAL, type="bar")
library(plotly)
plot_ly(accidentes2015, x=accidentes2015$TOTAL_VICTIMAS ,color=accidentes2015$CAUSA, type='box')
accidentes2015<-accidentes2015[order(-accidentes2015$TOTAL_VICTIMAS),]
plot_ly(accidentes2015, x = accidentes2015$CAUSA, y = accidentes2015$NUM_LESIONADO, type = 'bar', name = 'Lesionados') %>%
add_trace(y = accidentes2015$NUM_FALLECIDO, name = 'Fallecidos') %>%
layout(yaxis = list(title = 'Count'), barmode = 'stack')