En este documento se presenta un analisis en el sector de la contratacion publica en el pais.
library(readr)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.6.3
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(lubridate)
## Warning: package 'lubridate' was built under R version 3.6.3
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:dplyr':
##
## intersect, setdiff, union
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
Provee <- read_csv("Provee.csv")
## Parsed with column specification:
## cols(
## `Nombre Grupo` = col_character(),
## `NIT Grupo` = col_character(),
## `Tipo Empresa Grupo` = col_character(),
## `Ubicación Grupo` = col_character(),
## `Fecha Creación Grupo` = col_character(),
## `Nombre Participante` = col_character(),
## `NIT Participante` = col_character(),
## `Tipo Empresa Participante` = col_character(),
## `Ubicación Participante` = col_character(),
## `Fecha Creación Participante` = col_character(),
## Participacion = col_double(),
## `Es Lider del Grupo` = col_logical()
## )
attach(Provee)
head(Provee)
## # A tibble: 6 x 12
## `Nombre Grupo` `NIT Grupo` `Tipo Empresa G~ `Ubicación Grup~
## <chr> <chr> <chr> <chr>
## 1 CONS GAB No Definido Consorcio Colombia, Distr~
## 2 UNION TEMPORA~ No Definido Unión Temporal Colombia, Distr~
## 3 CONSORCIO ESI~ No Definido Consorcio Colombia, Distr~
## 4 CONSORCIO GAN~ No Definido Consorcio Colombia, Tolim~
## 5 CONSORCIO INT~ No Definido Consorcio Colombia, Distr~
## 6 CONSORCIO DEL~ No Definido Consorcio Colombia, Distr~
## # ... with 8 more variables: `Fecha Creación Grupo` <chr>, `Nombre
## # Participante` <chr>, `NIT Participante` <chr>, `Tipo Empresa
## # Participante` <chr>, `Ubicación Participante` <chr>, `Fecha Creación
## # Participante` <chr>, Participacion <dbl>, `Es Lider del Grupo` <lgl>
Cuenta con un numero total de 118.708 proveedores las cuales constan de 12 variables, a estas se les hara diferentes analisis.
Compromisos <- read_csv("Compromisos.csv",
col_types = cols(`Fecha Registro Item` = col_skip(),
`Fecha de Consulta SIIF` = col_skip(),
`Valor a Liberar` = col_skip()))
attach(Compromisos)
head(Compromisos)
## # A tibble: 6 x 11
## `Identificador ~ `ID Contrato` `Referencia Con~ `Saldo de compr~
## <chr> <chr> <chr> <dbl>
## 1 CO1.SIIFC.43237~ CO1.PCCNTR.9~ 005-009-2019 3000000
## 2 CO1.SIIFC.42971~ CO1.PCCNTR.3~ 057-00-J-EMAVI-~ 30000000
## 3 CO1.SIIFC.41773~ CO1.PCCNTR.7~ CVP-CTO-271-2019 37389000
## 4 CO1.SIIFC.42968~ CO1.PCCNTR.8~ 687 9000000
## 5 CO1.SIIFC.42581~ CO1.PCCNTR.7~ 1549-2019 10350000
## 6 CO1.SIIFC.43109~ CO1.PCCNTR.6~ JEP-198-2018 16000000
## # ... with 7 more variables: `Saldo de compromisos AVF` <dbl>, `Ultima
## # consulta al SIIF` <chr>, `Identificador Item` <chr>, `Tipo de
## # Compromiso` <dbl>, `Código Item` <chr>, `Saldo total
## # comprometido` <dbl>, `Estado Compromiso` <chr>
En este caso podemos ver que existen 454.601 Compromisos que constan de 11 variables.
En ambos casos se descargaron de los datos abiertos de https://www.datos.gov.co/ donde se pueden encontrar en este caso se encuentran los registros hastas la echa 12 de mayo de 2020
provpor <- Provee %>%
group_by(`Es Lider del Grupo`) %>%
count() %>%
ungroup() %>%
mutate(percentage=`n`/sum(`n`) * 100)
ggplot(data=provpor, aes(x=`Es Lider del Grupo`, y=percentage)) +
geom_bar(stat="identity", position="stack")
En este caso presentamos los porcentajes de los respectivos provedores que son lideres o no del grupo en este caso el numero de proveedores donde el 56.76% no es lider del grupo mientras que el 43.24% si lo es
provpor
## # A tibble: 2 x 3
## `Es Lider del Grupo` n percentage
## <lgl> <int> <dbl>
## 1 FALSE 67384 56.8
## 2 TRUE 51324 43.2
Ahora presentaremos la participacion de cada proveedor en sus respectivos proyectos.
ggplot(data = Provee, mapping = aes(x = Participacion)) +
geom_histogram(aes(y =..density..),
bins = 9,
position = 'identity') +
stat_function(fun = dnorm,
args = list(mean = mean(Provee$Participacion),
sd = sd(Provee$Participacion)))
Como podemos notar, la distribucion de los datos se asemeja a una normal con parametros media 43.69% y una desviacion estandar de 20.17% lo que significa que los proveedores en promedio tienen una participacion del 43.69%.
Provee$`Fecha Creación Grupo`<- as.Date(Provee$`Fecha Creación Grupo`, "%m/%d/%Y")
comprovee <- Provee %>%
group_by(`Fecha Creación Grupo`) %>% count()
comprovee <- comprovee %>%
group_by(year(`Fecha Creación Grupo`), month(`Fecha Creación Grupo`)) %>% summarise(n=sum(n))
Cantidad=ts(comprovee$n,start=c(2015,6),frequency=12)
plot(Cantidad, main="Cantidad de nuevos de Grupos", xlab="Mes")
La creacion de grupos nuevos de una manera descriptiva encontramos que inicio en Junio del 2015 hasta la fecha del proyecto, donde notamos que el numero de grupos encuentra un aumento en tendencia a partir del año 2018 y donde no podemos encontrar el comportamiento de la serie dado que estos son pocos meses para encontrar una correlacion temporal. y por tanto no podemos decir si ha habido un cambio a causa del COVID-19 pero comparando el año 2019 con el 2020 encontramos que los meses de febrero a mayo tienen una diferencia significativa.
Provee$`Fecha Creación Participante` <- as.Date(Provee$`Fecha Creación Participante`, "%m/%d/%Y")
comprovee1 <- Provee %>%
group_by(`Fecha Creación Participante`) %>% count()
comprovee1 <- comprovee1 %>%
group_by(year(`Fecha Creación Participante`), month(`Fecha Creación Participante`)) %>% summarise(n=sum(n))
Cantidad1=ts(comprovee1$n,start=c(2015,6),frequency=12)
plot(Cantidad1, main="Cantidad de nuevos participantes", xlab="Mes")
Los nuevos participantes de una manera descriptiva encontramos que inicio en Febrero del 2015 hasta la fecha del proyecto, pero la cantidad de participacion se ve dismininuida desde el año 2019 donde los ultimos meses sobre todo los de 2020 se encuentran en las mas baja de los ultimos años.
compropar <- Compromisos %>%
group_by(`Ultima consulta al SIIF`) %>%
count() %>%
ungroup() %>%
mutate(percentage=`n`/sum(`n`) * 100)
ggplot(data=compropar, aes(x=`Ultima consulta al SIIF`, y=percentage)) +
geom_bar(stat="identity", position="stack")
En este caso podemos ver que la mayoria de consultas SIF han sido Fallidas con un 54.00%, el Exito tiene un 39.73%, mientras que el Error 3.84% y por ultimo No Definido con 2.42%.
compropar
## # A tibble: 4 x 3
## `Ultima consulta al SIIF` n percentage
## <chr> <int> <dbl>
## 1 Error 17472 3.84
## 2 Exito 180598 39.7
## 3 Fallido 245496 54.0
## 4 No Definido 11035 2.43
compropar1 <- Compromisos %>%
group_by(`Tipo de Compromiso`) %>%
count() %>%
ungroup() %>%
mutate(percentage=`n`/sum(`n`) * 100)
ggplot(data=compropar1, aes(x=`Tipo de Compromiso`, y=percentage)) +
geom_bar(stat="identity", position="stack")
Aqui podemos notar que la mayoria de compromisos que tenemos son de tipo 0 teniendo un 97.6% mientras que las de tipo 1 son 2.4%.
compropar1
## # A tibble: 2 x 3
## `Tipo de Compromiso` n percentage
## <dbl> <int> <dbl>
## 1 0 443693 97.6
## 2 1 10908 2.40
compropar2 <- Compromisos %>%
group_by(`Estado Compromiso`) %>%
count() %>%
ungroup() %>%
mutate(percentage=`n`/sum(`n`) * 100)
ggplot(data=compropar2, aes(x=`Estado Compromiso`, y=percentage)) +
geom_bar(stat="identity", position="stack")
Aqui podemos ver la mayoria de compromisos no han iniciado con un 58.35%, los generado tienen un 33.68%, con obligacion tiene un 7.95% y cancelados que son un 0.01%.