Capítulo 2 Indicadores radares/frota

2.1 Bibliotecas

Para realizar o cálculo dos indicadores foram utilizados as seguintes bibliotecas:

library(tidyverse)
library(readxl)
# devtools::install_github("jotasaraiva/fleetbr")
library(fleetbr)

Note que tem uma parte do script que está depois de um #, caso vocẽ não tenha instalado em sua máquina a base de dados sobre a frota de veículos no Brasil basta retirar o # e rodar o script. Eu não vou entrar em detalhes técnicos nesse documento, como por exemplo o que significa cada indicador e sua função, pois isto é apresentado no relatório em si.

2.2 Pré processamento

Além dessa base de dados, será necessário também a base sobre os radares, que será importado pelo arquivo .csv, como é demonstrado pelo script abaixo:

radares <- read_xlsx("/home/silvana/Downloads/INDICADORES_RADARES_VELOCIDADE_UF (indicador velocidade, infrações, mortalidade)).xlsx", sheet = 2)

Note que o parâmetro sheet = 2 indica que queremos apenas os dados da segunda aba da planilha identificada. Posterior a isso é filtrado ambas bases de dados para apenas as tuplas que contenham a classe indicada pelo estudo.
Na base dos Radares é filtrado apenas os radares que sejam do tipo fixo, e na base da frota, a frota relativa ao mês de dezembro do ano de 2023 e o modal seja o total de todos. Também é feito um rename da coluna uf da base de dados da frota, para que as duas bases possuam uma coluna que contenha os mesmos valores (no caso as siglas de cada unidade da federação) para depois utilizar as funções de join(união).

radares <- radares %>% 
  filter(TipoMedidor == "Fixo")


frota_2023_TOTAL <- fleetbr %>% 
  filter(ano == "2023",
         mes == "12",
         modal == "TOTAL")

frota_2023_TOTAL_renomeada <- rename(frota_2023_TOTAL, SiglaUf = uf)

2.3 Cálculo dos indicadores e Data Frame final

2.3.1 I1 ao I9

Todos os indicadores possuem um script semelhante entre si, mudando apenas os filtros que levam cada um, sendo apenas o I4 que possuem um código diferente dentre eles, segue abaixo o script para a construção de todos indicadores:

# i1 (aprovados+reparados)/frota ####

aprov_repari1 <- radares %>% 
  filter(UltimoResultado != "Reprovado") %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade = n())

i1 <- right_join(frota_2023_TOTAL_renomeada, aprov_repari1, by = "SiglaUf")
i1 <- i1 %>% 
  mutate(i1 = (quantidade/frota)*10^4)
# i2 (urb aprov + urb repar / frota) ####

aprov_repari2 <- radares %>% 
  filter(UltimoResultado != "Reprovado",
         Tipo == "Via Urbana") %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade = n())

i2 <- right_join(frota_2023_TOTAL_renomeada, aprov_repari2, by = "SiglaUf")
i2 <- i2 %>% 
  mutate(i2 = (quantidade/frota)*10^4)

# i3 (rod aprov + rod repar / frota) ####

aprov_repari3 <- radares %>% 
  filter(UltimoResultado != "Reprovado",
         Tipo == "Rodovia") %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade = n())


i3 <- right_join(frota_2023_TOTAL_renomeada, aprov_repari3, by = "SiglaUf")
i3 <- i3 %>% 
  mutate(i3 = (quantidade/frota)*10^4)

# i4 (aprovados/(aprovados+reparados)) ####

aprov <- radares %>% 
  filter(UltimoResultado == "Aprovado") %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade_aprov = n())


i4 <- inner_join(aprov, aprov_repari1, by = "SiglaUf")
i4 <- i4 %>% 
  mutate(i4 = quantidade_aprov/quantidade)

# i5 (aprovados+reparados)/frota com v = 40 km/h ####
aprov_repari5 <- radares %>% 
  filter(UltimoResultado != "Reprovado",
         VelocidadeNominal == "40") %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade = n())


i5 <- right_join(frota_2023_TOTAL_renomeada, aprov_repari5, by = "SiglaUf")
i5 <- i5 %>% 
  mutate(i5 = (quantidade/frota)*10^4)

# i6 (aprovados+reparados)/frota com v = 50 km/h ####
aprov_repari6 <- radares %>% 
  filter(UltimoResultado != "Reprovado",
         VelocidadeNominal == "50") %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade = n())


i6 <- right_join(frota_2023_TOTAL_renomeada, aprov_repari6, by = "SiglaUf")
i6 <- i6 %>% 
  mutate(i6 = (quantidade/frota)*10^4)

# i7 (aprovados+reparados)/frota com v = 60 km/h ####
aprov_repari7 <- radares %>% 
  filter(UltimoResultado != "Reprovado",
         VelocidadeNominal == "60") %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade = n())


i7 <- right_join(frota_2023_TOTAL_renomeada, aprov_repari7, by = "SiglaUf")
i7 <- i7 %>% 
  mutate(i7 = (quantidade/frota)*10^4)

# i8 (aprovados+reparados)/frota com v = 70 km/h ####
aprov_repari8 <- radares %>% 
  filter(UltimoResultado != "Reprovado",
         VelocidadeNominal == "70") %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade = n())


i8 <- right_join(frota_2023_TOTAL_renomeada, aprov_repari8, by = "SiglaUf")
i8 <- i8 %>% 
  mutate(i8 = (quantidade/frota)*10^4)

# i9 (aprovados+reparados)/frota com v >= 80 km/h ####
aprov_repari9 <- radares %>% 
  filter(UltimoResultado != "Reprovado",
         VelocidadeNominal >= 80) %>% 
  group_by(SiglaUf) %>% 
  summarise(quantidade = n())


i9 <- right_join(frota_2023_TOTAL_renomeada, aprov_repari9, by = "SiglaUf")
i9 <- i9 %>% 
  mutate(i9 = (quantidade/frota)*10^4)

2.3.2 Geração do Data Frame

Para fazer o Data Frame com todos os indicadores juntos, foi primeiramente feito um seleção de cada indicador, de forma a selecionar apenas as colunas que representavam a sigla da unidade da federação e o valor do indicador.

I1 <- i1[,c(1,7)]
I2 <- i2[,c(1,7)]
I3 <- i3[,c(1,7)]
I4 <- i4[,c(1,4)]
I5 <- i5[,c(1,7)]
I6 <- i6[,c(1,7)]
I7 <- i7[,c(1,7)]
I8 <- i8[,c(1,7)]
I9 <- i9[,c(1,7)]

Com isso foi feito uma lista de todos esses indicadores para que então seja utilizado a função reduce() de forma a não haver nove colunas com as siglas das UF e para que cada tupla represente apenas uma UF e todos os seus respectivos indicadores. E feito uma alteração para que onde tivesse NAseja trocado pelo valor 0.

ind_rad <- list(I1,I2,I3,I4,I5,I6,I7,I8,I9)
Indicador_radares <- reduce(ind_rad, full_join, by = "SiglaUf")
Indicador_radares[is.na(Indicador_radares)] <- 0
Indicador_radares
## # A tibble: 27 × 10
##    SiglaUf    i1    i2     i3    i4      i5     i6     i7      i8     i9
##    <chr>   <dbl> <dbl>  <dbl> <dbl>   <dbl>  <dbl>  <dbl>   <dbl>  <dbl>
##  1 AC      0.428 0.371 0.0571 1     0.228   0.171  0      0.0285  0     
##  2 AL      1.08  0     1.08   0.941 0.0274  0.740  0.292  0       0.0183
##  3 AM      0.115 0     0.115  0.846 0.00885 0      0.0619 0       0.0442
##  4 AP      1.44  1.32  0.124  0.943 0.247   0      1.20   0       0     
##  5 BA      1.73  0.773 0.953  0.963 0.494   0.393  0.580  0.0879  0.141 
##  6 CE      3.75  1.39  2.36   0.863 0.567   0.682  2.30   0       0.200 
##  7 DF      7.50  1.58  5.92   0.965 1.55    1.16   3.62   0.202   0.922 
##  8 ES      1.69  0.110 1.58   0.947 0.246   0.0509 1.23   0.00424 0.157 
##  9 GO      4.60  2.00  2.60   0.911 1.11    0.681  1.97   0.108   0.679 
## 10 MA      0.844 0.502 0.342  0.839 0.159   0.206  0.309  0       0.0188
## # ℹ 17 more rows