library(dplyr)
library(tidyr)
library(stringr)
library(lubridate)
library(here)
library(ggplot2)
library(readr)
library(DT)
library(hrbrthemes)

options(scipen = 999)
theme_set(theme_minimal())
contratos <- read_csv(here::here("data/transporte_escolar_2016/contratos.csv"))
empenhos <- read_csv(here::here("data/transporte_escolar_2016/empenhos.csv"))
licitacoes <- read_csv(here::here("data/transporte_escolar_2016/licitacoes.csv"))
fornecedores <- read_csv(here::here("data/transporte_escolar_2016/fornecedores.csv"))
unidades_gestoras <- read_csv(here::here("data/transporte_escolar_2016/unidades_gestoras.csv"))
pagamentos <- read_csv(here::here("data/transporte_escolar_2016/pagamentos.csv"))
educacao.municipios <- read_csv(here::here("data/transporte_escolar_2016/dados_educacao_municipios.csv"))
licitacoes <- licitacoes %>%
  mutate(
    grupo_licitacao = case_when(
      str_starts(de_Obs, "LOCACAO|LOCACOES|FRETAMENTO DE VEICULO TIPO VAN PARA O TRANSPORTE DE ALUNOS") ~ "Locação",
      str_starts(de_Obs, "CONTRATACAO|CONTRATACOES|A CONTRATACAO|PRESTACAO|EXECUCAO") ~ "Contratação",
      str_starts(de_Obs, "AQUISICAO") ~ "Aquisição",
      TRUE ~ "Não atribuído"
    ),
    dt_MesAno = str_sub(dt_MesAno, end = 2)
  )

Perguntas

Quantas licitações de transporte escolar foram realizadas em 2016?

total.licitacoes <- licitacoes %>% nrow()

Existem, ao todo, 103 licitações relacionada ao transporte escolar no ano de 2016. Mas, do que se tratam essas licitações?

Analisando a descrição das licitações, é possível dividi-las em 4 grupos: Locação, Contratação, Aquisição e Prestação/Execução.

  1. Locação: neste grupo estão as licitações relacionadas as locações de veículos para transporte dos estudantes.
  2. Contratação: aqui as licitações são referentes a:
  • contratação de veículo para o tranporte dos estudantes;
  • contratação de serviços para o tranporte escolar;
  • contratação de empresa para a locação ou prestação de serviços para o transporte escolar;
  • contratação de pesssoa física ou hurídica para locação de transporte ou execução de serviços relacionados ao transporte escolar.
  1. Aquisição: as licitações desse grupo são relacionadao à aquisição de veículos para o transporte escolar.
licitacoes %>%
  count(grupo_licitacao) %>%
  mutate(porcentagem = n / sum(n)) %>%
  select(-n) %>%
  datatable(
    rownames = FALSE,
    class = "cell-border stripe",
    colnames = c("Título", "Porcentagem")
  ) %>%
  formatPercentage("porcentagem", 2)

Que modalidade de licitação é mais comum na alocação de transporte escolar?

licitacoes %>%
  count(tp_Licitacao, de_TipoLicitacao) %>%
  ggplot(aes(
    x = reorder(de_TipoLicitacao, n),
    y = n
  )) +
  geom_bar(
    stat = "identity",
    width = .5,
    color = "white",
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Quantidade de licitações de cada modalidade",
    x = NULL,
    y = "Licitações"
  ) +
  coord_flip() +
  theme_ipsum()

A modalidade mais comum de licitação é o Pregão Presencial.

Quantas propostas uma licitação de transporte escolar costuma receber?

licitacoes %>%
  ggplot(aes(x = nu_Propostas)) +
  geom_bar(
    stat = "count",
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Quantidade de licitações que receberam o mesmo número \nde propostas.",
    x = "Propostas",
    y = "Licitações"
  ) +
  guides(color = guide_legend("Tipo de licitação")) +
  scale_x_continuous(breaks = seq(0, 30, 1)) +
  theme_ipsum()

Pelo gráfico é possível perceber que a maioria das licitações selecionadas costumam receber apenas 1 proposta.

Qual o tipo de licitação que mais recebe propostas?

licitacoes %>%
  group_by(de_TipoLicitacao) %>%
  summarise(total_propostas = sum(nu_Propostas)) %>%
  ggplot(aes(x = reorder(de_TipoLicitacao, total_propostas), y = total_propostas)) +
  geom_bar(
    stat = "identity",
    width = .5,
    color = "white",
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Total de propostas por modalidade de licitação",
    x = "",
    y = "Propostas"
  ) +
  coord_flip() +
  theme_ipsum()

A modalidade Pregão Presencial é a que mais recebe propostas.### Existe relação entre o número de propostas e o valor de uma licitação?

licitacoes %>%
  ggplot(aes(
    x = nu_Propostas,
    y = vl_Licitacao / 1000
  )) +
  geom_jitter(colour = "dodgerblue4") +
  scale_y_log10() +
  labs(
    title = "Relação entre a quantidade de propostas e o valor de \numa licitação",
    x = "Propostas",
    y = "Valor (em milhares)"
  ) +
  theme_ipsum()

Observa-se que, para o ano de 2016, o quantidade de propostas aumenta de acordo com o valor da licitação. Esta associação pode ser medida também pela correlação linear entre as duas variáveis.

cor <- cor(licitacoes %>% pull(nu_Propostas), licitacoes %>% pull(vl_Licitacao))

A correlação entre as duas variáveis é de 0.46, o que indica uma associação linear não muito forte porém significativa.

Em geral, qual o valor médio de uma licitação? Esse valor varia entre cada modalidade?

A média e mediana serão utilizadas para representar o valor geral de um conjunto de licitações pois ambas são medidas de tendência central. A principal diferença entre a média e a mediana é que, ao contrário da média, a mediana não é afetada por valores extremos, pois representa o valor que separa a metade menor e maior de um conjunto de dados.

licitacoes %>%
  group_by(tp_Licitacao, de_TipoLicitacao) %>%
  mutate(
    media = mean(vl_Licitacao),
    mediana = median(vl_Licitacao)
  ) %>%
  ungroup() %>%
  gather(
    key = "medida", value = "valor",
    media, mediana
  ) %>%
  ggplot(aes(
    x = reorder(de_TipoLicitacao, valor),
    y = valor / 1000,
    fill = medida
  )) +
  geom_col(
    width = .5,
    color = "white",
    position = position_dodge()
  ) +
  scale_fill_manual(values = c("royalblue3", "royalblue4")) +
  labs(
    title = "Média e Mediana dos valores de licitações.",
    x = "",
    y = "Valor (em milhares)"
  ) +
  coord_flip() +
  theme_ipsum()

Para as modalidades Convite e Concorrência não há diferença entre a média e a mediana. Em outras modalidades observamos que há uma diferença entre esses valores, inclusive na modalidade mais comum, que é o Pregão Presencial. Detectadas estas diferenças, é interessante observar a distruibuição dos valores de licitações para cada modalidade.

licitacoes %>%
  group_by(as.factor(tp_Licitacao)) %>%
  mutate(
    media = mean(vl_Licitacao) / 1000,
    mediana = median(vl_Licitacao) / 1000
  ) %>%
  ggplot(aes(
    x = de_TipoLicitacao,
    y = vl_Licitacao / 1000,
    colour = as.factor(tp_Licitacao)
  )) +
  geom_count() +
  geom_point(aes(y = mediana), size = 3.5, color = "black", shape = 124) +
  labs(
    title = "Distribuição dos valores de licitações.",
    x = "Modalidade",
    y = "Valor (em milhares)"
  ) +
  guides(
    color = FALSE,
    size = FALSE
  ) +
  scale_y_log10() +
  coord_flip() +
  scale_color_ipsum() +
  theme_ipsum()

No gráfico acima, a linha preta representa a mediana, e o tamanho do ponto a quantidade de licitações com aquele valor. A partir deste gráfico, podemos ver que não existe diferença entre a média e mediana das licitações das modalidades de Concorrência e Convite, pois só há uma observação de cada. Para as outras, podemos ver que esta diferença se dá ao fato dos valores das licitações serem distruibuídos em um grande intervalo, não se concentrando em uma mesma faixa. Dessa forma, é interessante verificar à que se referem essas licitações que causam esta diferença. Vejamos mais detalhes sobre as de valor mais alto.

licitacoes.caras <- licitacoes %>%
  top_n(10, wt = vl_Licitacao)

licitacoes.caras %>%
  ggplot(aes(
    x = reorder(nu_Licitacao, vl_Licitacao),
    y = vl_Licitacao / 1000
  )) +
  geom_col(
    width = .5,
    position = "dodge",
    color = "white",
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Licitações de valores mais altos.",
    x = "",
    y = "Valor (em milhares)"
  ) +
  coord_flip() +
  theme_ipsum()

A que se referem as licitações mais caras?

licitacoes.caras %>%
  select(
    nu_Licitacao,
    vl_Licitacao,
    grupo_licitacao
  ) %>%
  datatable(
    rownames = FALSE,
    class = "cell-border stripe",
    colnames = c("Licitação", "Valor", "Descrição")
  ) %>%
  formatCurrency("vl_Licitacao",
    currency = "R$ ",
    digits = 2,
    interval = 0
  ) 

As 10 licitações com maior valor são sobre licitações de Locação, Contratação e Aquisição.

Existem fornecedores que dominam a distribuição de transporte escolar?

fornecedores %>%
  count(nu_CPFCNPJ, no_Fornecedor) %>%
  top_n(10, wt = n) %>%
  ggplot(aes(x = reorder(str_to_upper(no_Fornecedor), n), y = n)) +
  geom_col(
    width = .5,
    color = "white",
    fill = "royalblue4"
  ) +
  labs(
    title = "Fornedores de serviço relacionados à \nTransporte Escolar",
    x = "",
    y = "Total de ocorrências"
  ) +
  coord_flip() +
  theme_ipsum()

O fornecedor com maior ocorrências na distribuição de transporte escolar é ALUYLSON PESSOA DOS SANTOS-ME. Apesar disso, vemos que a diferença entre ele e os outros é muito pequena para considerar que ele domine a distribuição.

Quantos fornecedores competiram em média nas licitações de transporte escolar em 2016?

medidas <- fornecedores %>%
  count(nu_CPFCNPJ, no_Fornecedor, nu_Licitacao) %>%
  summarise(media = round(mean(n), 2), mediana = round(median(n), 2))

media.fornecedores <- medidas %>% pull(media)
mediana.fornecedores <- medidas %>% pull(mediana)

A média de fornecedores por licitação de transporte escolar é de 1.04, e a mediana é 1. Vemos que, no geral, a concorrência das licitações é baixa.

Quais fornecedores mais receberam empenhos de transporte escolar em 2016?

fornecedores %>%
  inner_join(empenhos %>% select(cd_UGestora, nu_Licitacao, vl_Empenho),
    by = c("cd_UGestora", "nu_Licitacao")
  ) %>%
  group_by(nu_CPFCNPJ, no_Fornecedor) %>%
  summarise(total = sum(vl_Empenho)) %>%
  ungroup() %>%
  top_n(10, wt = total) %>%
  ggplot(aes(
    x = reorder(no_Fornecedor, total),
    y = total / 1000
  )) +
  geom_bar(
    stat = "identity",
    width = .5,
    color = "white",
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Valor dos empenhos de transporte \n escolar recebido por fornecedor.",
    x = "Fornecedor",
    y = "Valor recebido (em milhares)"
  ) +
  theme(axis.text.y = element_text(size = 7.5)) +
  scale_y_log10() +
  coord_flip() +
  theme_ipsum()

ALUYLSON PESSOA DOS SANTOS - ME foi o fornecedor com maior valor recebido, dentre os empenhos de transporte escolar em 2016, com total aproximado de R$1.84 mi.

Quantos são os fornecedores de transporte escolar de cada município em 2016?

fornecedores_municipios <- fornecedores %>%
  inner_join(unidades_gestoras %>% select(cd_UGestora, cd_Municipio, de_Municipio),
    by = "cd_UGestora"
  )

fornecedores_municipios %>%
  group_by(de_Municipio) %>%
  summarise(total = n_distinct(nu_CPFCNPJ)) %>%
  top_n(10, wt = total) %>%
  ggplot(aes(
    x = reorder(de_Municipio, total),
    y = total
  )) +
  geom_bar(
    stat = "identity",
    width = .5,
    color = "white",
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Quantidades de fornecedores por municípios em 2016",
    x = "Município",
    y = "Quantidade de fornecedores"
  ) +
  scale_y_continuous(breaks = seq(0, 30, 2)) +
  coord_flip() +
  theme_ipsum()

Dos municípios contidos na base, o município de Salgado de São Félix possui a maior quantidade de fornecedores. A quantidade de fornecedores varia de 1 a 30.

municipios.fornecedores <- fornecedores_municipios %>%
  select(de_Municipio) %>%
  n_distinct(.)

porc.municipios <- round((municipios.fornecedores / 223) * 100, 2)

A quantidade de municípios que possui algum fornecedor de transporte escolar é 57, representando 25.56% dos 223 municípios da Paraíba.

Quais municípios mais realizaram licitações de transporte escolar em 2016?

licitacoes_municipios <- licitacoes %>%
  inner_join(unidades_gestoras %>% select(cd_UGestora, cd_Municipio, de_Municipio),
    by = "cd_UGestora"
  )

licitacoes_municipios %>%
  count(de_Municipio) %>%
  top_n(5, wt = n) %>%
  ggplot(aes(
    x = reorder(de_Municipio, n),
    y = n
  )) +
  geom_bar(
    stat = "identity",
    width = .5,
    color = "white",
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Municípios que mais realizaram licitações de transporte \nescolar em 2016",
    x = "Município",
    y = "Quantidade de licitações"
  ) +
  scale_y_continuous(breaks = seq(0, 9, 1)) +
  coord_flip() +
  theme_ipsum()

Dentre os municípios que mais realizaram licitações, o que mais se destacou foi Água Branca, com uma grande diferença em relação aos demais.

licitacoes.municipio <- licitacoes_municipios %>%
  select(de_Municipio) %>%
  n_distinct(.)

porc.licitacoes <- round((licitacoes.municipio / 100) * 100, 2)

A quantidade de municípios que fizeram alguma licitação de transporte escolar em 2016 é 74, representando aproximadamente 74% dos 223 municípios da Paraíba. O que significa que 149 municípios não fizeram nenhuma licitação ou não possuem dados.

Quantas licitações de transporte escolar foram realizadas por mês em 2016?

licitacoes %>%
  count(dt_MesAno) %>%
  ggplot(aes(
    x = dt_MesAno,
    y = n
  )) +
  geom_bar(
    stat = "identity",
    width = .5,
    color = "white",
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Número de licitações de transporte escolar por mês em 2016",
    x = "Mês",
    y = "Licitações"
  ) +
  theme_ipsum()

O mês de maio foi o que teve maior número de licitações de transporte escolar, seguido de junho e julho, respectivamente. Vemos que em janeiro não houve nenhuma licitação.

Quais municípios mais realizaram licitações de transporte escolar em maio, junho e julho de 2016?

licitacoes_municipios %>%
  filter(dt_MesAno %in% c("05", "06", "07")) %>%
  count(de_Municipio) %>%
  top_n(10, wt = n) %>%
  ggplot(aes(
    x = reorder(de_Municipio, n),
    y = n
  )) +
  geom_bar(
    stat = "identity",
    width = .5,
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Municípios que mais realizaram licitações de \ntransporte escolar",
    subtitle = "Dados referentes aos meses de maio, junho e julho de 2016",
    x = "Municípios",
    y = "Quantidade de licitações"
  ) +
  scale_y_continuous(breaks = seq(0, 7, 1)) +
  coord_flip() +
  theme_ipsum()

Água Branca continua sendo como o município com maior número de licitações de transporte escolar, seguido por Monteiro.

Quais os municípios que empenharam mais dinheiro com transporte escolar em 2016?

empenhos %>%
  left_join(unidades_gestoras %>% select(cd_UGestora, cd_Municipio, de_Municipio),
    by = "cd_UGestora"
  ) %>%
  group_by(cd_Municipio, de_Municipio) %>%
  summarise(total = sum(vl_Empenho)) %>%
  ungroup() %>%
  top_n(10, wt = total) %>%
  ggplot(aes(
    x = reorder(de_Municipio, total),
    y = total / 1000
  )) +
  geom_bar(
    stat = "identity",
    width = .5,
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Municípios que empenharam mais dinheiro em 2016",
    x = "Municípios",
    y = "Total empenhado (em milhares)"
  ) +
  scale_y_log10() +
  coord_flip() +
  theme_ipsum()

media.empenhos <- round(empenhos %>% pull(vl_Empenho) %>% mean(.), 2)
mediana.empenhos <- round(empenhos %>% pull(vl_Empenho) %>% median(.), 2)

A média geral do valor empenhado para contratos, em 2016, foi de R$ 4646.93 e a mediana foi de R$ 2091.43. Não há uma distribuição igualitária entre os valores empenhados pelos municípios do estado, alguns municípios gastam muito mais que os outros. Monteiro e Sousa foram os municípios que empenharam mais dinheiro em comparação aos demais.

Quais os municípios que mais gastaram com pagamentos em 2016?

pagamentos.municipio <- pagamentos %>%
  left_join(unidades_gestoras %>% select(cd_UGestora, de_Municipio),
    by = c("cd_UGestora")
  )  %>%
  na.omit() %>%
  group_by(de_Municipio) %>%
  summarise(total = sum(vl_Pagamento)) %>%
  ungroup() 

pagamentos.municipio %>%
  top_n(10, wt = total) %>%
  ggplot(aes(
    x = reorder(de_Municipio, total),
    y = total / 1000
  )) +
  geom_bar(
    stat = "identity",
    width = .5,
    fill = "dodgerblue4"
  ) +
  labs(
    title = "Municípios que gastaram mais com pagamentos",
    subtitle = "Dados referentes à pagamentos realizados em 2016",
    x = "Municípios",
    y = "Total pago (em milhares)"
  ) +
  scale_y_log10() +
  coord_flip() +
  theme_ipsum()

O município de Sousa é um dos municípios que mais gastaram com pagamentos relacionados à licitações em 2016, o que faz sentido considerando que este município também está entre os que mais empenharam e mais licitaram em 2016.

Quais os municípios que mais gastaram por aluno com transporte escolar em 2016?

gasto_municipio_aluno <- pagamentos.municipio %>%
  left_join(educacao.municipios,
    by = "de_Municipio"
  ) %>%
  mutate(
    total_matriculados = vl_Matriculas_Fundamental + vl_Matriculas_Medio + vl_Matriculas_Pre_Escolar,
    gasto_por_aluno = total / total_matriculados
  )

gasto_municipio_aluno %>%
  select(de_Municipio, gasto_por_aluno) %>%
  top_n(10, wt = gasto_por_aluno) %>%
  ggplot(aes(
    x = de_Municipio,
    y = gasto_por_aluno
  )) +
  geom_segment(aes(
    x = reorder(de_Municipio, gasto_por_aluno),
    xend = reorder(de_Municipio, gasto_por_aluno),
    y = 0,
    yend = gasto_por_aluno
  ),
  colour = "dodgerblue4"
  ) +
  geom_point(
    size = 2,
    colour = "dodgerblue4"
  ) +
  labs(
    title = "Municípios que mais gastaram com transporte \nescolar por aluno.",
    caption = "Estimativa realizada com base em dados sobre alunos matriculados em 2015",
    x = "Municípios",
    y = "Total gasto"
  ) +
  coord_flip() +
  theme_ipsum()

O total gasto por aluno por município varia de aproximadamente R$ 150.00 à R$ 300,00.