Esto es un analisis hecho por un aprendiz recnico del sena con el objetivo de aumentar sus habilidades usando RStudios, se esperan errores y mejoras en el proceso, continuacion se mostraran diversas conclusiones y analisis de los datos
ComparendosSe estara trabajando con una tabla excel suministrada por el instructor, dichos datos con muy escasos, se esta manejando datos del año 2010 en los meses de mayo y abril, lamento mucho si los analisis son muy vagos esto se debe a la poca variedad de datos y al nivel de conocimiento.
importamos librerias que vamos a usar, “tidyverse” es especial ya que contiene muchas librerias dentro de ellas, en el codigo se anotaran los usos que les dare a las librerias exepto la anterior mencionada.
tambien vamos aproceder a añadir y reemplazar columnas ya que hay informacion erronea, desconozco como comvertir una serie de numeros a fecha.
options(repos = "[https://cloud.r-project.org](https://cloud.r-project.org)")
#librerias
install.packages("tidyverse")
install.packages("readxl")
install.packages("ggplot2")
install.packages("scales")
library(tidyverse)#esta libreria contiene mas librerias dentro
library(readxl)#libreria para leer excel
library(ggplot2)#ayuda para los graficos
library(scales)#hace ver los numeros grandes mucho mas faciles de ver
Tabla <- read_excel("C:/Users/User/Desktop/Informe/Comparendos.xlsx")#leer tabla excel base
#reemplazamos valores repetidos en VALOR A PAGAR de acuerdo al tipo de multa
Tabla <- Tabla %>%
mutate(VALOR_A_PAGAR = case_when
(`COD. INFRACCION` == 64 | `COD. INFRACCION` == 67 ~ 257500,
`COD. INFRACCION` == 76 | `COD. INFRACCION` == 77 ~ 515000,
TRUE ~ NA))#aqui corregimos los valores de pago por infraccion
Tabla <- Tabla %>%
mutate(`EJECUTADO` =
case_when(`EJECUTADO` == "AGROZOOCRIA LTDA." ~ "AGROZOOCRIA LTDA",
`EJECUTADO` == "AMBIENTE & DISEÑO Y CIA S.EN C" ~ "AMBIENTE & DISEÑO Y CIA SEN C",
`EJECUTADO` == "CONSULTORES DEL DESARROLLO S.A" ~ "CONSULTORES DEL DESARROLLO SA",
`EJECUTADO` == "43 ELECTRO AUTOMATISM" ~ "43 ELECTRO AUTOMATISM",`EJECUTADO` == "MONTACARGAS IBA?EZ LTDA" ~ "MONTACARGAS IBAÑEZ LTDA",
`EJECUTADO` == "AGROZOOCRIA LTDA." ~ "AGROZOOCRIA LTDA",
`EJECUTADO` == "PROYECTARCO S.A." ~ "PROYECTARCO SA",
`EJECUTADO` == "TRANSPORTES BESIMOR & CIA LTDA" ~ "TRANSPORTES BESIMOR Y CIA LTDA",
TRUE ~ `EJECUTADO`))%>%#aca corrigio algunos nombres de empresas
mutate(NOM_INFRACCION = case_when(
`COD. INFRACCION` == 64 ~ "max velocidad maxima",
`COD. INFRACCION` == 67 ~ "pasa paso peatonal",
`COD. INFRACCION` == 76 ~ "sentido contrario",
`COD. INFRACCION` == 77 ~ "pasar luz roja/amarilla",
TRUE ~ NA
))#y por aca le añadimos nombre a cada codigo de infraacion en una nueva columna-Vehiculos y Años mas frecuentesquiero empezar con la frecuencia con la que los vehiculos cometieron accidentes, por lo general las motos son las que mas violan estos permisos, tenia la idea en que las motos tendian un numero alto
vehiculos <- Tabla %>%
group_by(`TIPO DE VEHICULO`,SEXO) %>% summarise(Cantidad = n()) %>% pivot_wider(names_from = SEXO, values_from = Cantidad)#pivot me vuelve los sexos como columnas en ves de valores
#agrupo por vehiculos y sexo y el summarise suma la cantidad de veces que aparecen
knitr::kable(vehiculos, align = "lcccc")#le añado su flow, la libreria multible cuenta con esto para embellecer las tablas, el alig es para ordenar las columnas, las l son left, c center y r right, se pone en orden igual a las columnas| TIPO DE VEHICULO | CÉDULA NUEVA | EMPRESA | HOMBRE | MUJER |
|---|---|---|---|---|
| CARRO | 81 | 455 | 526 | 876 |
| MOTO | 7 | 17 | 89 | 69 |
como se puede observar, el resultado va contra mis pronosticos, este resultado y los siguientes apoyan una teoria que no puedo confirmar por la falta de datos, estos resultados pueden ser debidos a que las motos no conducen muy a menudo por las calles en las que se encuentran los medidores de infracciones, las motos son mas vistas en lugares mas rurales como barrios o ciudades.
si estos datos fueron sacados por un oficiales de transito tambien me atrevo a decir que los oficiales de transito tiran parar a aquellos que puedan contener mas dinero para asi atreverce a la probabilidad de un doborno porparte del conductor, me gustaria recalcar que son teorias, estoy tratando de tocar el tema de sobre la mediocridad de los sueldos y situaciones precarias en colombia.
#a menudo voy a estar creando tablas porcentajes por separado para mantener un orden, estas son usadas especialmente para crear los graficos pie
vehiculos_pocentaje <- Tabla %>% #uso la tabla central directamente
group_by(SEXO) %>% #agrupo por sexo
summarise(n = n()) %>%#sumo la cantidad de veces que aparece
mutate(porcentaje = n / sum(n)) %>% # devido el valor anterior por la cantidad de registros de comparendos
mutate(etiqueta = paste0(round(porcentaje * 100), "%"))#este se usa para ponerlo de valor en el grafico, es solo una etiqueta, para que se entieda a las personas
ggplot(vehiculos_pocentaje, aes(x = "", y = n, fill = as.factor(SEXO))) +
#elojo de factor las columnas que estan agrupadas osea sexo, la x es vacia ya que por lo general no se esa este en graficos pie
geom_bar(width = 1, stat = "identity") +
geom_text(aes(label = etiqueta), #los valores que van a estar escritos en cada columna por etiquetas creadas
position = position_stack(vjust = 0.5)) +#modifica la posicion del texto
coord_polar(theta = "y", start = 0) +#convierte las columnas en un grafico pie
theme_void() +
labs(title = "cantidad de sexos comparendos",fill = "SEXO") # titulo del grafico y de contenido del grafico #se repite proceso
carros_pocentaje <- Tabla %>%
filter(`TIPO DE VEHICULO` == "CARRO") %>%# necesito solo los sexos de personas que manejan carros
group_by(SEXO) %>%
summarise(n = n()) %>%
mutate(porcentaje = n / sum(n)) %>%
mutate(etiqueta = paste0(round(porcentaje * 100), "%"))
ggplot(carros_pocentaje, aes(x = "", y = n, fill = as.factor(SEXO))) +
geom_bar(width = 1, stat = "identity") +
geom_text(aes(label = etiqueta),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y", start = 0) +
theme_void() +
labs(title = "cantidad de carros por sexo comparendos",fill = "SEXO")#se repite proceso
motos_pocentaje <- Tabla %>%
filter(`TIPO DE VEHICULO` == "MOTO") %>%
group_by(SEXO) %>%
summarise(n = n()) %>%
mutate(porcentaje = n / sum(n)) %>%
mutate(etiqueta = paste0(round(porcentaje * 100), "%"))
ggplot(motos_pocentaje, aes(x = "", y = n, fill = as.factor(SEXO))) +
geom_bar(width = 1, stat = "identity") +
geom_text(aes(label = etiqueta),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y", start = 0) +
theme_void() +
labs(title = "cantidad de motos por sexo comparendos",fill = "SEXO")En anteriores analisis que hice acerca de comparendos encontraba el mismo resultado, las mujeres cometian mayor cantidad de infracciones, las mujeres se encontraron en mayor cantidad con carros y en hombres en mayor cantidad con motos, los datos que la mujer haya cometido una cantidad grande de infracciones es o porque no tienen tanta soltura con el aprendizaje al manejar un carro o porque era un blanco mas apetecible para los policias de transito, ademas la mayoria de mujeres prefieren un carro en vez de moto, esto es muy comun de encontrar debido a los peligros que se expone el cuerpo del conductor de una moto
#infracciones por mes
años <- Tabla %>% group_by(`NOMBRE DEL MES`) %>% summarise(`NUMINFRACCIONES` = n())
knitr::kable(años, align = "llc")| NOMBRE DEL MES | NUMINFRACCIONES |
|---|---|
| Abril | 712 |
| Mayo | 1408 |
#se repite proceso
porcentaje_meses <- Tabla %>%
group_by(`NOMBRE DEL MES`) %>%
summarise(Cantidad_total = n()) %>%
mutate(porcentaje = Cantidad_total / sum(Cantidad_total)) %>%
mutate(etiqueta = paste0(round(porcentaje * 100), "%"))
ggplot(porcentaje_meses,
aes(x = "", y = Cantidad_total, fill = `NOMBRE DEL MES`)) +
geom_bar(width = 1, stat = "identity") +
geom_text(aes(label = etiqueta),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y", start = 0) +
theme_void() +
labs(
title = "Distribución de Comparendos por Mes",
fill = "Meses"
)En realidad no tengo mucho que añadir, estos datos son del 2010, no cuento con la informacion de los lugares en que se cometieron estas infracciones, mayo tiene el doble que abril en infracciones
-Comparendos por Genero y Empresas#comparendos por sexo en diferentes meses
pagos <- Tabla %>%
group_by(`NOMBRE DEL MES`,`SEXO`) %>%
summarise(TOTAL = sum(`VALOR_A_PAGAR`)) %>% #sumo valor a pagar para que me de los precios de las infracciones
pivot_wider(names_from = SEXO, values_from = TOTAL)
knitr::kable(pagos, align = "lcccc")| NOMBRE DEL MES | CÉDULA NUEVA | EMPRESA | HOMBRE | MUJER |
|---|---|---|---|---|
| Abril | 12102500 | 56907500 | 68752500 | 81112500 |
| Mayo | 15192500 | 87292500 | 116647500 | 208060000 |
#creo tablas diferentes porque quiero ver los sexos por meses separados
abril_pagos <- Tabla %>%
filter(`NOMBRE DEL MES` == "Abril") %>%
group_by(SEXO)%>%
summarise(TOTAL = sum(VALOR_A_PAGAR))
#grafico de columnas
ggplot(abril_pagos,
aes(x= SEXO,
y= `TOTAL`)) + #x y son valores en plano carteciano, valores como yo quiero que se reflegen en mi grafico
scale_y_continuous(labels = comma) + #lo uso para simplificar valores que se mostraban muy complejos al publico
geom_col(fill = "lightgreen", color = "black") +#colores del grafico
theme_classic() +
labs(x = "Sexo",#nombre de x
y = "Pagos por comparendo",#nombre de y
title = "Total pagos de comparendo por sexo en ABRIL") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_text(aes(label = comma(`TOTAL`)), vjust = -0.5, size = 3)#aca ajusto los valores y las columnas del grafico#se repite el proceso
mayo_pagos <- Tabla %>%
filter(`NOMBRE DEL MES` == "Mayo") %>%
group_by(SEXO)%>%
summarise(TOTAL = sum(VALOR_A_PAGAR))
ggplot(mayo_pagos,
aes(x= SEXO,
y= `TOTAL`)) +
scale_y_continuous(labels = comma) +
geom_col(fill = "lightgreen", color = "black") +
theme_classic() +
labs(x = "Sexo",
y = "Pagos por comparendo",
title = "Total pagos de comparendo por sexo en MAYO") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_text(aes(label = comma(`TOTAL`)), vjust = -0.5, size = 3)Este calculo fue hecho para detectar alguna anomalia en los datos, suele pasar que a pesar de que un genero colecte una gran cantidad de numero de infracciones, otro genero tenga un numero alto de gastos, se puede deber a que el costo de las otras infracciones son altas a diferencia de las cometidas por el genero con mayor numero de infracciones, este no es el caso, los datos son al nivel de el mes y el genero en cantidad y gastos.
A continuacion analizaremos las empresas y comparendos
#empresas y gastos de ellas
empresas_altos <- Tabla %>%
filter(`SEXO` == "EMPRESA") %>%#me da solo las empresas
group_by(`EJECUTADO`,`NOMBRE DEL MES`) %>%#me da el nombre y el mes
summarise(TOTAL = sum(`VALOR_A_PAGAR`)) %>%
pivot_wider(names_from = `NOMBRE DEL MES`, values_from = (TOTAL), values_fill = 0)%>%
mutate(`TOTAL` = Abril + Mayo)%>%#uso mutate en las tablas me crea o me modifica una columna de mi tabla
arrange(desc(TOTAL))%>%#me la da en forma decendente
head(10)#me da los 10 primeros
knitr::kable(empresas_altos, align = "lccc")| EJECUTADO | Abril | Mayo | TOTAL |
|---|---|---|---|
| LEASING DE CREDITO SA | 13647500 | 21630000 | 35277500 |
| TRANSPORTES MST Y CIA S. EN C | 4377500 | 9527500 | 13905000 |
| FINANCIERA INTERNACIONAL S.A | 2060000 | 8497500 | 10557500 |
| GMAC FINANCIERA DE COLOMBI | 3347500 | 2832500 | 6180000 |
| UINON FAMILIAR CHARRIS S.EN C | 1030000 | 3090000 | 4120000 |
| BENEMOTORS S.A. | 1545000 | 1030000 | 2575000 |
| FRANCISCO COLLAVINI CIA LTDA. | 2060000 | 515000 | 2575000 |
| COOTRANSCO LTDA | 0 | 2317500 | 2317500 |
| TRANSURBAR LTDA | 1545000 | 772500 | 2317500 |
| TRANSPORTES SAN CARLOS LTDA | 1030000 | 772500 | 1802500 |
#repito el proceso
empresas_bajos <- Tabla %>%
filter(`SEXO` == "EMPRESA") %>%
group_by(`EJECUTADO`,`NOMBRE DEL MES`) %>%
summarise(TOTAL = sum(`VALOR_A_PAGAR`)) %>%
pivot_wider(names_from = `NOMBRE DEL MES`, values_from = TOTAL, values_fill = 0)%>%#valies fill me cambia los valores en NA por 0
mutate(`TOTAL` = Abril + Mayo)%>%
arrange(desc(TOTAL))%>%
tail(10)#me da los 10 ultimos
knitr::kable(empresas_bajos, align = "lccc")| EJECUTADO | Abril | Mayo | TOTAL |
|---|---|---|---|
| PRODUCTOS JULIAO Y CIA. LTDA | 257500 | 0 | 257500 |
| PROMOTORA KOSMOS SA | 0 | 257500 | 257500 |
| PROQUIMICOS S.A. | 0 | 257500 | 257500 |
| RAMIREZ GARNICA & CIA. S. EN | 257500 | 0 | 257500 |
| RAMOS GOMEZ S EN C | 0 | 257500 | 257500 |
| SOCDE ACUED ALCANT Y ASEO DE | 257500 | 0 | 257500 |
| TECNIJURIDICA LTDA | 0 | 257500 | 257500 |
| TRANSPORTE AUTO TAXI EJECUTIVO | 0 | 257500 | 257500 |
| TRANSPORTES JICARIBE LTDA | 257500 | 0 | 257500 |
| TRANSPORTES SERVI ESPECIALES Y | 0 | 257500 | 257500 |
#se repite el proceso
ggplot(empresas_altos,
aes(x= reorder(`EJECUTADO`, desc(`TOTAL`)),
y= `TOTAL`)) +
scale_y_continuous(labels = comma) +
geom_col(fill = "lightgreen", color = "black") +
theme_classic() +
labs(x = "Empresas",
y = "Pagos por comparendo",
title = "top 10 Empresa pagos altos en los dos Meses") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_text(aes(label = comma(`TOTAL`)), vjust = -0.5, size = 3)ggplot(empresas_bajos,
aes(x= reorder(`EJECUTADO`, desc(`TOTAL`)),
y= `TOTAL`)) +
scale_y_continuous(labels = comma) +
geom_col(fill = "lightblue", color = "black") +
theme_classic() +
labs(x = "Empresas",
y = "Pagos por comparendo",
title = "top 10 Empresa pagos bajos en los dos Meses") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_text(aes(label = comma(`TOTAL`)), vjust = -0.5, size = 3)Las 10 empresas con mas gastos destacan empresas financieras y empresa de cootransco, LEASIND DE CREDITO SA en muy frecuente y ha generado grandes gastos, en las 10 menore no muestran diferencias, son muy uniformes, como mucho solo han cometido una infraccion, es probable que seqan mas de las 10 menores empresas las cuales sigan estando uniformes
-Infracciones mas frecuente#se repite proceso
tipo_comparendo <- Tabla %>%
group_by(`AÑO`, `NOMBRE DEL MES`, SEXO, `NOM_INFRACCION`)%>%
summarise(CANTIDAD = n())%>%
pivot_wider(names_from = `NOM_INFRACCION`, values_from = CANTIDAD, values_fill = 0)
knitr::kable(tipo_comparendo, align = "lllcccc")| AÑO | NOMBRE DEL MES | SEXO | max velocidad maxima | pasa paso peatonal | pasar luz roja/amarilla | sentido contrario |
|---|---|---|---|---|---|---|
| 2010 | Abril | CÉDULA NUEVA | 26 | 1 | 10 | 0 |
| 2010 | Abril | EMPRESA | 151 | 10 | 30 | 0 |
| 2010 | Abril | HOMBRE | 172 | 13 | 38 | 3 |
| 2010 | Abril | MUJER | 182 | 19 | 56 | 1 |
| 2010 | Mayo | CÉDULA NUEVA | 43 | 0 | 8 | 0 |
| 2010 | Mayo | EMPRESA | 202 | 21 | 58 | 0 |
| 2010 | Mayo | HOMBRE | 315 | 10 | 64 | 0 |
| 2010 | Mayo | MUJER | 535 | 31 | 121 | 0 |
#se repite proceso
infraccion_pocentaje <- Tabla %>%
group_by(NOM_INFRACCION) %>%
summarise(n = n()) %>%
mutate(porcentaje = n / sum(n)) %>%
mutate(etiqueta = paste0(round(porcentaje * 100), "%"))
ggplot(infraccion_pocentaje, aes(x = "", y = n, fill = as.factor(NOM_INFRACCION))) +
geom_bar(width = 1, stat = "identity") +
geom_text(aes(label = etiqueta),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y", start = 0) +
theme_void() +
labs(title = "Distribución de Comparendos por infraccon",fill = "NOMBRE DE INFRACCION")el 0% no significa que no hay infracciones cometidas, es solo que numero de estas es muy pequeño en comparacion al total y ni aun asi al dividir en 100 muestra los decimales, a continuacion una imagen de los datos del 0%
el tipo de infraccion de pasar la luz roja confira que estos datos tambien pueden provenir de lugares mas adentro de la ciudad o que son datos tomados por policias de trancito, es muy comun encontrar el exceso de velocidad es uno de los mas cometidos, y pasar la luz roja o amarilla en colombia, este tipo de comparendos en 2010 se basan acerca de la desesperacion en las calles por encia de la seguridad de los demas conductores y el conductor.
los datos importantes que podemos obtener de estos son que las mujeres en carro y los hombres en moto cometen muchas infracciones y las infracciones son basadas en la prisa, los datos que se puedan deducir de la informacion van de posibles extorciones, inrresponsabilidad del conductor con la velocidad, empresa que es muy comun en cometer infracciones y empresas que se matienen muy uniforme, como ultimo y no menos importante la precariedad y los sucesos del pais SI se materializan en la calle, la falta de datos me obliga solo a usar datos globales de colombia pero en sectores si puede afectar
-POLITICA DATA BASE OF AMERICA
-BASE DE DATOS COMPARENDOS