Status Sumarios

Ignacio

17/5/2019

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.1.1       v purrr   0.3.2  
## v tibble  2.1.1       v dplyr   0.8.0.1
## v tidyr   0.8.3       v stringr 1.4.0  
## v readr   1.3.1       v forcats 0.4.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(readxl)

##La digitalización y despapelización de los Sumarios tramitados por la procuración general

Los Sumarios administrativos de la Ciudad de Buenos Aires son, entre otras cosas, una importantísima herramienta de gestión de recursos humanos, en tanto configuran el único incentivo laboral negativo legal y posible para los trabajadores de la Ciudad. Desgraciadamente la tramitación en Expediente Electrónico (SADE) no fue una solución apropiada para los mismos, y para suplir las falencias del sistema, tramitan de manera duplicada en papel impreso.

Para poder establecer políticas de gestión apropiadas, se desarrolló una aplicación especialmente avocada a la tramitación de Sumarios. A pesar de sus numerosos problemas técnicos, se encuentra en producción hace poco más de un año y utilizaremos los datos que otorga para, por primera vez, poder contestar la pregunta ¿Cuanto tardan los sumarios administrativos en la Ciudad de Buenos Aires?

A pesar de la escazes de tamaño de los datos relevados, estos permiten los primeros acercamientos para empezar a establecer cual es la inforación que puede llegar a ser relevante para el decisor, evidenciar problemáticas y descubrir limitaciones que pueden llevar a una evolución.

Lo primero son las cantidades: Cantidad de sumarios abiertos vs cantidad de sumarios finalizados. Cantidad de sumarios por Dirección. Cantidad de abogados por Departamento.

Después vemos tiempos. Tiempos en preinstrucción, tiempos en instrucción, tiempos en dictamen, tiempos en posdictamen.

Datos <- read_excel("C:/Users/PG-Usuario/Documents/Reporte Sumarios para R.xlsx")
dfDatos <- as.data.frame(Datos)
colnames(dfDatos) <- gsub(" ", "_", colnames(Datos))
names(dfDatos)
##  [1] "Expediente"               "Sumario"                 
##  [3] "Regimen"                  "Etapa_actual"            
##  [5] "Fecha_Apertura"           "Fecha_Inicio_Instrucción"
##  [7] "Abogado_Instructor"       "Fecha_Cierre_Instrucción"
##  [9] "Fecha_Inicio_Dictamen"    "Abogado_Dictaminante"    
## [11] "Fecha_Cierre_Dictamen"    "Fecha_Cierre_Sumario"    
## [13] "Fecha_Reingreso"          "Salio_exterior_?"        
## [15] "Resolución"               "Fecha_Resolución"        
## [17] "Ministerio_Origen"        "Ministerio_Hecho"        
## [19] "Reparticion_Hecho"        "Regimen_Externo_?"       
## [21] "Resolucion_Cierre"        "Se_aplicó_?"             
## [23] "Tipo_Hecho"               "Fecha_Hecho"

Lo primero es tratar los datos para cambiar el nombre de las columnas sacando espacios y poniendo guion bajo. Luego seleccionar solamente las columnas Sumario, Fecha de Apertura y Fecha de Cierre de Sumario, y filtrar según fecha de cierre (igual a NA o no) para obtener cuales son los sumarios abiertos cuales son los sumarios cerrados.

Sumarios_abiertos <- dfDatos %>% 
  select(Sumario , Fecha_Apertura , Fecha_Cierre_Sumario) %>% 
  filter(is.na(Fecha_Cierre_Sumario))
Sumarios_cerrados <- dfDatos %>% 
  select(Sumario , Fecha_Apertura , Fecha_Cierre_Sumario) %>% 
  filter(!is.na(Fecha_Cierre_Sumario))

Después voy a querer ver los sumarios por dirección:

ggdata_Sumarios_por_Regimen<- dfDatos %>% 
  filter(!is.na(Regimen)) %>% 
  group_by(Regimen) %>% 
  summarise(casos = n())

ggplot(ggdata_Sumarios_por_Regimen, aes(x = Regimen, y = casos)) +
  geom_col()

El dato, obviamente, hay que compararlo contra los recursos humanos:

Recursos_humanos_para_R <- read_excel("C:/Users/PG-Usuario/Documents/Recursos humanos para R.xlsx")
ggdata_Bogas_por_Regimen <- Recursos_humanos_para_R %>% 
  filter(!is.na(Regimen)) %>%
  filter(Perfil == "Abogado Instructor" | Perfil == "Abogado Dictaminante") %>% 
  group_by(Regimen) %>% 
  summarise(casos = n())

ggplot(data = ggdata_Bogas_por_Regimen, aes(x = Regimen, y = casos)) +
  geom_col()

Si ponemos typeof(dfDatos$Fecha_Apertura) directo en la consola, vemos que R está tratando los datos de las columnas de fechas como “integer” y no como fechas. Para que los tomes como fechas hay que transformarlos y que typeof de “double”. Para transformar las fechas de excel a las fechas de R tenemos que hacer:

dfDatos <- dfDatos %>%
  mutate_at(vars(Fecha_Apertura, Fecha_Cierre_Sumario, Fecha_Inicio_Instrucción, Fecha_Cierre_Instrucción, Fecha_Inicio_Dictamen, Fecha_Cierre_Dictamen, Fecha_Reingreso, Fecha_Resolución, Fecha_Hecho), as.Date, format = "%d/%m/%Y")
  #as.Date(Fecha_Apertura , format = "%d/%m/%Y") %>% 
  #as.Date(Fecha_Cierre_Sumario , format = "%d/%m/%Y") %>%
  #as.Date(Fecha_Inicio_Instrucción , format = "%d/%m/%Y") %>% 
  #as.Date(Fecha_Cierre_Instrucción , format = "%d/%m/%Y") %>% 
  #as.Date(Fecha_Inicio_Dictamen , format = "%d/%m/%Y") %>% 
  #as.Date(Fecha_Cierre_Dictamen , format = "%d/%m/%Y") %>% 
  #as.Date(Fecha_Resolución , format = "%d/%m/%Y") %>% 
  #as.Date(Fecha_Hecho, format = "%d/%m/%Y")

Ahora que tenemos todas las columnas de fecha como fecha, agregamos la columna que nos dice cual es el plazo de cierre del sumario, restando la Fecha de cierre de la fecha de apertura.

dfDatos <- mutate(dfDatos, Plazo_Sumario = Fecha_Cierre_Sumario - Fecha_Apertura)

Vamos a ver cual es el plazo promedio para el trámite de un sumario:

dfDatos %>% 
  filter(!is.na(Fecha_Cierre_Sumario)) %>% 
  summarise(mean(Plazo_Sumario))
##   mean(Plazo_Sumario)
## 1       178.8214 days

Y ahora vamos a ver cual es el plazo promedio para cada tipo de hecho que tenemos registrado donde hubo un cierre:

dfDatos %>% 
  filter(!is.na(Fecha_Cierre_Sumario)) %>% 
  filter(!is.na(Tipo_Hecho)) %>% 
  group_by(Tipo_Hecho) %>% 
  summarise(mean(Plazo_Sumario))
## # A tibble: 6 x 2
##   Tipo_Hecho             `mean(Plazo_Sumario)`
##   <chr>                  <time>               
## 1 Hurto                  177.1875 days        
## 2 Irregularidades Varias 242.0000 days        
## 3 Ley 1225               176.0000 days        
## 4 Otros                  198.3333 days        
## 5 Sustraccion De Bienes  142.3333 days        
## 6 Varios                 137.0000 days

Pero debido a las múltiples fallas del software con el que estamos trabajando, lo cierto es que hay muchos más sumarios cerrados que los registrados por el sistema. Vamos a ver cuanto tiempo promedio hay entre el cierre de dictamen de un sumario, y el efectivo cierre del sumario, y si la diferencia entre la fecha de hoy y el cierre de dictamen es mayor al promedio, el usuario asignado es RRUGIERO (Director General) presumir que ese sumario se cerró. Pero como tenemos algunos valores outliers, primero vamos a hacer un boxplot para detectarlos y sacarlos de nuestra presunción:

ggPresuncion <- dfDatos %>%
  filter(!is.na(Fecha_Cierre_Sumario)) %>% 
  mutate(Plazo_Diferencia_Cierre_Dictamen = Fecha_Cierre_Sumario - Fecha_Cierre_Dictamen) %>% 
  select(Plazo_Diferencia_Cierre_Dictamen)

ggplot(as.data.frame(ggPresuncion), aes(y = Plazo_Diferencia_Cierre_Dictamen))+
  geom_boxplot()+
  scale_y_continuous(breaks =seq(0,60,2))

Ahora que sabemos que si está por encima de 12 días, o por debajo de 1 es un outlier, vamos a calcular cual es el promedio de los que están efectivamente dentro de la “box” del boxplot.

Ahora si, entonces, vamos a calcular cuanto tiempo tarda en cerrar un sumario promedio, diciéndole a R que si pasaron >12 días del cierre del dictamen, me lo considere cerrado.

dfDatos %>% 
  mutate(Plazo_Presunto_Sumario = Fecha_Cierre_Dictamen - Fecha_Apertura + 12) %>% 
  filter(!is.na(Plazo_Presunto_Sumario)) %>% 
  summarise(mean(Plazo_Presunto_Sumario))
##   mean(Plazo_Presunto_Sumario)
## 1                 172.519 days

Con este resultado, tenemos por primera vez en la historia del Gobierno de la Ciudad de Buenos Aires datos sobre Sumarios administrativos. Aplausos por favor.

Es solo un primer paso, y me queda el trabajo práctico incompleto. A continuación, tendría que buscar cuales son los tipos de faltas que tardan más en ser resueltas, buscar qué pasa con los Sumarios que se cierran sin resolución (de Archivo) por falta de elementos de investigación. También existe una tabla con las personas asociadas a sumarios, ya sea como abogados defensores, testigos o imputados. También conseguir la ubicación de las reparticiones contenidas en la tabla de la que se alimenta el software para poder visualizar en un mapa donde es que se producen los hechos que ocasionan un sumario, y verlo por densidad, ya que vamos, presumiblemente, a tener puntos calientes en los hospitales, escuelas y ministerios grandes. La columna repartición del hecho contiene el dato que me dice en qué lugar sucedió el hecho. Si obtenemos cuales son los valores únicos que encontramos en dicha columna, le podemos pedir a la USIG la ubicación de dichas reparticiones. Luego hacemos un join_left, y ya tenemos los sumarios geolocalizdos y listos para mapear. Sería interesante ver si se pueden utilizar los datos geolocalizados como parte de la investigación de sumarios. Ejemplifico: Muchos Sumarios cerrados por falta de elementos investigativos de hurtos en escuelas de una misma zona pueden ser elementos para buscar qué personas se desempeñan en esas mismas escuelas e intentar achicar la lista de posibles sospechosos.

Con toda esta información se pueden buscar maneras de gestionar mejor los sumarios administrativos como herramienta de recursos humanos de la Ciudad.