Importando bibliotecas e lendo o arquivo

#Evitando notação científica
options(scipen = 999)

pacotes <-
  c(
    "ggplot2",
    "dplyr",
    "scales",
    "plotly",
    "gridExtra",
    "kableExtra",
    "DescTools",
    "lubridate",
    "ggQC",
    "Hmisc",
    "e1071",
    "kableExtra",
    "gtsummary",
    "igraph",
    "ggnetwork",
    "intergraph",
    "ITNr",
    "esquisse",
    "leaflet",
    "flexdashboard",
    "htmlwidgets"
  )

#Para instalar os pacotes
#install.packages(pacotes)

#Carregando pacotes
lapply(pacotes, require, character.only = TRUE)
## Loading required package: ggplot2
## Loading required package: 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
## Loading required package: scales
## Loading required package: plotly
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
## Loading required package: gridExtra
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
## Loading required package: kableExtra
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
## Loading required package: DescTools
## Loading required package: lubridate
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
## Loading required package: ggQC
## Loading required package: Hmisc
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:DescTools':
## 
##     %nin%, Label, Mean, Quantile
## The following object is masked from 'package:plotly':
## 
##     subplot
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## The following objects are masked from 'package:base':
## 
##     format.pval, units
## Loading required package: e1071
## 
## Attaching package: 'e1071'
## The following object is masked from 'package:Hmisc':
## 
##     impute
## Loading required package: gtsummary
## Loading required package: igraph
## 
## Attaching package: 'igraph'
## The following objects are masked from 'package:lubridate':
## 
##     %--%, union
## The following object is masked from 'package:DescTools':
## 
##     %c%
## The following object is masked from 'package:plotly':
## 
##     groups
## The following objects are masked from 'package:dplyr':
## 
##     as_data_frame, groups, union
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## The following object is masked from 'package:base':
## 
##     union
## Loading required package: ggnetwork
## Loading required package: intergraph
## Loading required package: ITNr
## Loading required package: network
## network: Classes for Relational Data
## Version 1.16.1 created on 2020-10-06.
## copyright (c) 2005, Carter T. Butts, University of California-Irvine
##                     Mark S. Handcock, University of California -- Los Angeles
##                     David R. Hunter, Penn State University
##                     Martina Morris, University of Washington
##                     Skye Bender-deMoll, University of Washington
##  For citation information, type citation("network").
##  Type help("network-package") to get started.
## 
## Attaching package: 'network'
## The following objects are masked from 'package:igraph':
## 
##     %c%, %s%, add.edges, add.vertices, delete.edges, delete.vertices,
##     get.edge.attribute, get.edges, get.vertex.attribute, is.bipartite,
##     is.directed, list.edge.attributes, list.vertex.attributes,
##     set.edge.attribute, set.vertex.attribute
## The following object is masked from 'package:Hmisc':
## 
##     is.discrete
## The following object is masked from 'package:DescTools':
## 
##     %c%
## Loading required package: esquisse
## Loading required package: leaflet
## Loading required package: flexdashboard
## Loading required package: htmlwidgets
## [[1]]
## [1] TRUE
## 
## [[2]]
## [1] TRUE
## 
## [[3]]
## [1] TRUE
## 
## [[4]]
## [1] TRUE
## 
## [[5]]
## [1] TRUE
## 
## [[6]]
## [1] TRUE
## 
## [[7]]
## [1] TRUE
## 
## [[8]]
## [1] TRUE
## 
## [[9]]
## [1] TRUE
## 
## [[10]]
## [1] TRUE
## 
## [[11]]
## [1] TRUE
## 
## [[12]]
## [1] TRUE
## 
## [[13]]
## [1] TRUE
## 
## [[14]]
## [1] TRUE
## 
## [[15]]
## [1] TRUE
## 
## [[16]]
## [1] TRUE
## 
## [[17]]
## [1] TRUE
## 
## [[18]]
## [1] TRUE
## 
## [[19]]
## [1] TRUE
## 
## [[20]]
## [1] TRUE
## 
## [[21]]
## [1] TRUE
#Apontando o diretório que iremos trabalhar
setwd("C:\\Users\\teste\\Desktop\\Workshops\\Rio Info")

#Carregando os dados
dados = read.csv("datatran2020.csv", h = T, sep = ";")

#Verificando as 6 primeiras linhas

head(dados) %>% kbl %>% kable_material_dark(full_width = F)
id data_inversa dia_semana horario uf br km municipio causa_acidente tipo_acidente classificacao_acidente fase_dia sentido_via condicao_metereologica tipo_pista tracado_via uso_solo pessoas mortos feridos_leves feridos_graves ilesos ignorados feridos veiculos latitude longitude regional delegacia uop
260031 01/01/2020 quarta-feira 01:00:00 TO 153 678,1 GURUPI Animais na Pista Atropelamento de Animal Com Vítimas Feridas Plena Noite Crescente Nublado Simples Reta Não 5 0 0 5 0 0 5 1 -11,77460203 -49,10744996 SR-TO UOP01/TO
260036 01/01/2020 quarta-feira 01:00:00 RJ 116 178 NOVA IGUACU Falta de Atenção do Pedestre Atropelamento de Pedestre Com Vítimas Fatais Plena Noite Decrescente Céu Claro Dupla Reta Sim 2 1 0 0 1 0 0 1 -22,75223028 -43,4379103 SR-RJ DEL5/1 UOP02/RJ
260037 01/01/2020 quarta-feira 01:52:00 SC 101 206,9 SAO JOSE Ingestão de Álcool Colisão lateral Com Vítimas Feridas Plena Noite Crescente Nublado Simples Reta Sim 2 0 1 0 1 0 1 2 -27,59193546 -48,61824557 SR-SC DEL8/1 UOP01/SC
260038 01/01/2020 quarta-feira 01:15:00 RO 364 236 CACOAL Velocidade Incompatível Saída de leito carroçável Com Vítimas Feridas Plena Noite Decrescente Nublado Simples Reta Sim 1 0 0 1 0 0 1 1 -11,44624577 -61,43761218 SR-RO DEL21/2 UOP02/RO
260039 01/01/2020 quarta-feira 01:30:00 PR 153 360 REBOUCAS Ingestão de Álcool Capotamento Com Vítimas Feridas Plena Noite Crescente Garoa/Chuvisco Simples Curva Não 6 0 2 4 0 0 6 1 -25,67503796 -50,75089805 SR-PR DEL7/3 UOP04/PR
260040 01/01/2020 quarta-feira 00:40:00 RO 319 64 PORTO VELHO Ingestão de Álcool Colisão transversal Sem Vítimas Plena Noite Decrescente Céu Claro Dupla Reta Sim 2 0 0 0 2 0 0 2 -8,76751908 -63,88427496 SR-RO DEL21/1 UOP01/RO

Análise exploratória

Verificando dados faltantes e transformado a variável data_inversa no formato de data

#Verificando Missing
PlotMiss(dados, main = "Valores faltantes no Banco")

#Lubridate para ajeitar as datas
dados = dados %>% mutate(data_nova = dmy(dados$data_inversa))

#As 10 primeiras linhas com a variável transformada
dados$data_nova[1:10]
##  [1] "2020-01-01" "2020-01-01" "2020-01-01" "2020-01-01" "2020-01-01"
##  [6] "2020-01-01" "2020-01-01" "2020-01-01" "2020-01-01" "2020-01-01"

Resumo estatístico geral do banco

#resumo estatístico geral do banco
#summary(dados)
describe(dados)
## dados 
## 
##  31  Variables      45368  Observations
## --------------------------------------------------------------------------------
## id 
##        n  missing distinct 
##    45368        0    45368 
## 
## lowest : 260031 260036 260037 260038 260039, highest: 313957 313977 314035 314039 314162
## --------------------------------------------------------------------------------
## data_inversa 
##        n  missing distinct 
##    45368        0      274 
## 
## lowest : 01/01/2020 01/02/2020 01/03/2020 01/04/2020 01/05/2020
## highest: 31/01/2020 31/03/2020 31/05/2020 31/07/2020 31/08/2020
## --------------------------------------------------------------------------------
## dia_semana 
##        n  missing distinct 
##    45368        0        7 
## 
## lowest : domingo       quarta-feira  quinta-feira  sábado        segunda-feira
## highest: quinta-feira  sábado        segunda-feira sexta-feira   terça-feira  
##                                                                   
## Value            domingo  quarta-feira  quinta-feira        sábado
## Frequency           7436          5923          5772          7476
## Proportion         0.164         0.131         0.127         0.165
##                                                     
## Value      segunda-feira   sexta-feira   terça-feira
## Frequency           6092          7043          5626
## Proportion         0.134         0.155         0.124
## --------------------------------------------------------------------------------
## horario 
##        n  missing distinct 
##    45368        0     1170 
## 
## lowest : 00:00:00 00:01:00 00:02:00 00:03:00 00:04:00
## highest: 23:55:00 23:56:00 23:57:00 23:58:00 23:59:00
## --------------------------------------------------------------------------------
## uf 
##        n  missing distinct 
##    45368        0       27 
## 
## lowest : AC AL AM AP BA, highest: RS SC SE SP TO
## --------------------------------------------------------------------------------
## br 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    45253      115      113    0.992      213    147.2       40       70 
##      .25      .50      .75      .90      .95 
##      101      163      324      386      467 
## 
## lowest :  10  20  30  40  50, highest: 485 487 488 493 495
## --------------------------------------------------------------------------------
## km 
##        n  missing distinct 
##    45253      115     7187 
## 
## lowest : 0     0,1   0,2   0,3   0,4  , highest: 997   998   998,9 999   999,8
## --------------------------------------------------------------------------------
## municipio 
##        n  missing distinct 
##    45368        0     1724 
## 
## lowest : ABADIA DE GOIAS ABADIANIA       ABARE           ABEL FIGUEIREDO ABRE CAMPO     
## highest: XAPURI          XAXIM           XEXEU           XINGUARA        ZE DOCA        
## --------------------------------------------------------------------------------
## causa_acidente 
##        n  missing distinct 
##    45368        0       24 
## 
## lowest : Agressão Externa                              Animais na Pista                              Avarias e/ou desgaste excessivo no pneu       Carga excessiva e/ou mal acondicionada        Condutor Dormindo                            
## highest: Pista Escorregadia                            Restrição de Visibilidade                     Sinalização da via insuficiente ou inadequada Ultrapassagem Indevida                        Velocidade Incompatível                      
## --------------------------------------------------------------------------------
## tipo_acidente 
##        n  missing distinct 
##    45368        0       16 
## 
## lowest : Atropelamento de Animal         Atropelamento de Pedestre       Capotamento                     Colisão com objeto em movimento Colisão com objeto estático    
## highest: Engavetamento                   Incêndio                        Queda de ocupante de veículo    Saída de leito carroçável       Tombamento                     
## --------------------------------------------------------------------------------
## classificacao_acidente 
##        n  missing distinct 
##    45368        0        3 
##                                                                       
## Value       Com Vítimas Fatais Com Vítimas Feridas         Sem Vítimas
## Frequency                 3158               33792                8418
## Proportion               0.070               0.745               0.186
## --------------------------------------------------------------------------------
## fase_dia 
##        n  missing distinct 
##    45368        0        4 
##                                                           
## Value        Amanhecer   Anoitecer Plena Noite   Pleno dia
## Frequency         2033        2600       16430       24305
## Proportion       0.045       0.057       0.362       0.536
## --------------------------------------------------------------------------------
## sentido_via 
##        n  missing distinct 
##    45368        0        3 
##                                                     
## Value          Crescente   Decrescente Não Informado
## Frequency          23997         21256           115
## Proportion         0.529         0.469         0.003
## --------------------------------------------------------------------------------
## condicao_metereologica 
##        n  missing distinct 
##    45368        0       10 
## 
## lowest : Céu Claro        Chuva            Garoa/Chuvisco   Granizo          Ignorado        
## highest: Neve             Nevoeiro/Neblina Nublado          Sol              Vento           
## 
## Céu Claro (27597, 0.608), Chuva (4627, 0.102), Garoa/Chuvisco (1468, 0.032),
## Granizo (1, 0.000), Ignorado (543, 0.012), Neve (1, 0.000), Nevoeiro/Neblina
## (390, 0.009), Nublado (7252, 0.160), Sol (3394, 0.075), Vento (95, 0.002)
## --------------------------------------------------------------------------------
## tipo_pista 
##        n  missing distinct 
##    45368        0        3 
##                                      
## Value         Dupla Múltipla  Simples
## Frequency     18643     3605    23120
## Proportion    0.411    0.079    0.510
## --------------------------------------------------------------------------------
## tracado_via 
##        n  missing distinct 
##    45368        0       10 
## 
## lowest : Curva                 Desvio Temporário     Interseção de vias    Não Informado         Ponte                
## highest: Reta                  Retorno Regulamentado Rotatória             Túnel                 Viaduto              
## 
## Curva (7047, 0.155), Desvio Temporário (1331, 0.029), Interseção de vias (2083,
## 0.046), Não Informado (5429, 0.120), Ponte (219, 0.005), Reta (27391, 0.604),
## Retorno Regulamentado (560, 0.012), Rotatória (919, 0.020), Túnel (57, 0.001),
## Viaduto (332, 0.007)
## --------------------------------------------------------------------------------
## uso_solo 
##        n  missing distinct 
##    45368        0        2 
##                       
## Value        Não   Sim
## Frequency  25209 20159
## Proportion 0.556 0.444
## --------------------------------------------------------------------------------
## pessoas 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    45368        0       42      0.9    2.301    1.353        1        1 
##      .25      .50      .75      .90      .95 
##        1        2        3        4        5 
## 
## lowest :  1  2  3  4  5, highest: 47 50 54 61 73
## --------------------------------------------------------------------------------
## mortos 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    45368        0       10    0.194  0.08105   0.1523        0        0 
##      .25      .50      .75      .90      .95 
##        0        0        0        0        1 
## 
## lowest :  0  1  2  3  4, highest:  5  7  8 11 12
##                                                                       
## Value          0     1     2     3     4     5     7     8    11    12
## Frequency  42210  2797   263    65    24     5     1     1     1     1
## Proportion 0.930 0.062 0.006 0.001 0.001 0.000 0.000 0.000 0.000 0.000
## --------------------------------------------------------------------------------
## feridos_leves 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    45368        0       29    0.846   0.8517   0.8886        0        0 
##      .25      .50      .75      .90      .95 
##        0        1        1        2        2 
## 
## lowest :  0  1  2  3  4, highest: 26 28 31 38 42
## --------------------------------------------------------------------------------
## feridos_graves 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    45368        0       13    0.508    0.261   0.4283        0        0 
##      .25      .50      .75      .90      .95 
##        0        0        0        1        1 
## 
## lowest :  0  1  2  3  4, highest:  8 10 11 13 17
##                                                                             
## Value          0     1     2     3     4     5     6     7     8    10    11
## Frequency  35674  8153  1195   223    69    25    12     6     4     3     2
## Proportion 0.786 0.180 0.026 0.005 0.002 0.001 0.000 0.000 0.000 0.000 0.000
##                       
## Value         13    17
## Frequency      1     1
## Proportion 0.000 0.000
## --------------------------------------------------------------------------------
## ilesos 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    45368        0       33    0.871    0.951    1.068        0        0 
##      .25      .50      .75      .90      .95 
##        0        1        1        2        3 
## 
## lowest :  0  1  2  3  4, highest: 44 45 47 48 73
## --------------------------------------------------------------------------------
## ignorados 
##        n  missing distinct     Info     Mean      Gmd 
##    45368        0        8    0.352   0.1561   0.2749 
## 
## lowest :  0  1  2  3  4, highest:  3  4  5  6 11
##                                                           
## Value          0     1     2     3     4     5     6    11
## Frequency  39222  5403   609    95    29     6     3     1
## Proportion 0.865 0.119 0.013 0.002 0.001 0.000 0.000 0.000
## --------------------------------------------------------------------------------
## feridos 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    45368        0       30     0.82    1.113   0.9312        0        0 
##      .25      .50      .75      .90      .95 
##        1        1        1        2        3 
## 
## lowest :  0  1  2  3  4, highest: 30 31 33 39 44
## --------------------------------------------------------------------------------
## veiculos 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##    45368        0       12    0.799    1.627   0.6828        1        1 
##      .25      .50      .75      .90      .95 
##        1        2        2        2        3 
## 
## lowest :  1  2  3  4  5, highest:  8  9 11 12 23
##                                                                             
## Value          1     2     3     4     5     6     7     8     9    11    12
## Frequency  21352 20851  2367   522   174    66    22     4     6     1     2
## Proportion 0.471 0.460 0.052 0.012 0.004 0.001 0.000 0.000 0.000 0.000 0.000
##                 
## Value         23
## Frequency      1
## Proportion 0.000
## --------------------------------------------------------------------------------
## latitude 
##        n  missing distinct 
##    45368        0    26216 
## 
## lowest : -0,140902   -0,27615917 -0,328278   -0,346287   -0,570667  
## highest: 4,135076    4,157695    4,172797    4,278084    4,442535   
## --------------------------------------------------------------------------------
## longitude 
##        n  missing distinct 
##    45368        0    26195 
## 
## lowest : -34,79318082 -34,8284     -34,8287     -34,8295     -34,82954806
## highest: -68,80635045 -69,01799904 -69,03977    -69,98334291 -70,52181091
## --------------------------------------------------------------------------------
## regional 
##        n  missing distinct 
##    45368        0       27 
## 
## lowest : SR-AC SR-AL SR-AM SR-AP SR-BA, highest: SR-RS SR-SC SR-SE SR-SP SR-TO
## --------------------------------------------------------------------------------
## delegacia 
##        n  missing distinct 
##    45368        0      182 
## 
## lowest : BA        DEL 10/10 DEL01     DEL03     DEL04    
## highest: UOP04/TO  UOP05     UOP05/TO  UOP06     UOP06/DF 
## --------------------------------------------------------------------------------
## uop 
##        n  missing distinct 
##    44969      399      107 
## 
## lowest : AC       DEL01    DEL02    DEL03    DEL04   
## highest: UOP06/SC UOP07/PR UOP07/SC UOP08/PR UOP08/SC
## --------------------------------------------------------------------------------
## data_nova 
##          n    missing   distinct       Info       Mean        Gmd        .05 
##      45368          0        274          1 2020-05-17      94.94 2020-01-13 
##        .10        .25        .50        .75        .90        .95 
## 2020-01-26 2020-03-02 2020-05-22 2020-07-31 2020-09-06 2020-09-18 
## 
## lowest : 2020-01-01 2020-01-02 2020-01-03 2020-01-04 2020-01-05
## highest: 2020-09-26 2020-09-27 2020-09-28 2020-09-29 2020-09-30
## --------------------------------------------------------------------------------

Análise das variáveis qualitativas

Acidentes por tipo de pista

#tabela da quantidade de acidentes por tipo de pista
dados_horario = dados %>% select(horario, tipo_pista) %>%
  group_by(tipo_pista) %>%
  summarise(quantidade = n()) %>%
  arrange(desc(quantidade))

#Transformando o tipo de pista em fator
dados_horario$tipo_pista_fator = factor(dados_horario$tipo_pista,
                                        levels = c("Simples",
                                                   "Dupla",
                                                   "Múltipla"))


#Gráfico de Pareto dos acidentes por tipo de pista
ggplot2::ggplot(dados_horario, aes(x = tipo_pista_fator, y = quantidade)) +
  ggQC::stat_pareto(
    point.color = "red",
    point.size = 3,
    line.color = "black",
    bars.fill = c("blue", "orange")
  ) +
  #scale_y_continuous(breaks =c(23.00,100,180,858) ,labels = scales::dollar_format(prefix="R$",big.mark = ","))+
  #scale_x_continuous(breaks = seq(0,6,1))+
  theme(axis.text.x = element_text(
    angle = 90,
    hjust = 1,
    vjust = 0.5
  ))

### Acidentes por Horários

#tabela da quantidade de acidentes por Horários
dados_horario = dados %>% select(horario, tipo_pista) %>%
  group_by(horario) %>%
  summarise(quantidade = n()) %>%
  arrange(desc(quantidade)) %>%
  top_n(5)
## Selecting by quantidade
#Transformando o horario em fator
dados_horario$horario_fator = factor(
  dados_horario$horario,
  levels = c("19:00:00",
             "18:30:00",
             "18:00:00",
             "17:00:00",
             "20:00:00")
)

#Gráfico de Pareto dos acidentes por horário
ggplot2::ggplot(dados_horario, aes(x = horario_fator, y = quantidade)) +
  ggQC::stat_pareto(
    point.color = "red",
    point.size = 3,
    line.color = "black",
    bars.fill = c("blue", "orange")
  ) +
  #scale_y_continuous(breaks =c(23.00,100,180,858) ,labels = scales::dollar_format(prefix="R$",big.mark = ","))+
  #scale_x_continuous(breaks = seq(0,6,1))+
  theme(axis.text.x = element_text(
    angle = 90,
    hjust = 1,
    vjust = 0.5
  ))

Acidentes por Tipo de pista e horário

#tabela de acidentes por tipo_pista e horáro
dados_horario = dados %>% select(horario, tipo_pista) %>%
  group_by(tipo_pista, horario) %>%
  summarise(quantidade = n()) %>%
  arrange(desc(quantidade)) %>%
  head(5)
## `summarise()` has grouped output by 'tipo_pista'. You can override using the `.groups` argument.
#tabela da quantidade de acidentes por classificação
dados_class_acidente = dados %>% select(classificacao_acidente) %>%
  group_by(classificacao_acidente) %>%
  summarise(quantidade = n()) %>%
  arrange(desc(quantidade)) #%>%
#head(5)

#Gráfico de pizza interativo do número de acidentes por classificação
grafico_pizza = plot_ly(
  dados_class_acidente,
  labels = ~ classificacao_acidente,
  values = ~ quantidade,
  type = 'pie'
) %>%
  layout(title = 'Gráfico de pizza do número de assidentes por classificação (%) ')

grafico_pizza
## Warning: `arrange_()` was deprecated in dplyr 0.7.0.
## Please use `arrange()` instead.
## See vignette('programming') for more help

Acidentes por Fase do Dia

#tabela da quantidade de acidentes por fase_dia
dados_fase_dia = dados %>% select(fase_dia) %>%
  group_by(fase_dia) %>%
  summarise(quantidade = n()) %>%
  arrange(desc(quantidade)) #%>%
#head(5)

#Gráfico de pizza interativo do número de acidentes por fase do dia
pizza = plot_ly(
  dados_fase_dia,
  labels = ~ fase_dia,
  values = ~ quantidade,
  type = 'pie'
) %>%
  layout(title = 'Gráfico de pizza interativo do número de acidentes por fase do dia (%) ')

pizza

Acidentes por Condição Metereológica

#tabela da quantidade de acidentes por condição metereológica
dados_cond_meteorologica = dados %>% select(condicao_metereologica) %>%
  group_by(condicao_metereologica) %>%
  summarise(quantidade = n()) %>%
  arrange(desc(quantidade)) #%>%
#head(5)

dados_cond_meteorologica$condicao_metereologica_fator = factor(
  dados_cond_meteorologica$condicao_metereologica,
  levels = c(
    "Céu Claro",
    "Nublado",
    "Chuva",
    "Sol",
    "Garoa/Chuvisco",
    "Ignorado",
    "Nevoeiro/Neblina",
    "Vento",
    "Granizo",
    "Neve"
  )
)

grafico_barras_cond_meteorologica = ggplot(
  data = dados_cond_meteorologica,
  aes(x = condicao_metereologica_fator, y = quantidade, fill = condicao_metereologica_fator)
) +
  geom_bar(stat = "identity",
           position = position_dodge(),
           colour = "black") +
  ggtitle("Total de acidentes por condição meteorológica") +
  xlab("Condição meteorológica") + ylab("Total de acidentes") +
  theme(axis.text.x = element_text(
    angle = -90,
    vjust = 0.5,
    hjust = 1
  ))

ggplotly(grafico_barras_cond_meteorologica)

Acidentes por UF

#tabela da quantidade de acidentes total por UF
dados_uf = dados %>% select(uf) %>%
  group_by(uf) %>%
  summarise(quantidade = n()) %>%
  arrange(desc(quantidade)) %>%
  head(10)

dados_uf$uf_fator = factor(dados_uf$uf,
                           levels = c("MG",
                                      "SC",
                                      "PR",
                                      "RS",
                                      "RJ",
                                      "SP",
                                      "BA",
                                      "GO",
                                      "PE",
                                      "ES"
                                      #"MT",
                                      #"RO",
                                      #"CE",
                                      #"MS",
                                      #"PB",
                                      #"RN",
                                      #"PI",
                                      #"MA",
                                      #"DF",
                                      #"PA",
                                      #"AL",
                                      #"TO",
                                      #"SE",
                                      #"AC",
                                      #"RR",
                                      #"AM",
                                      #"AP")
                                      )
)
                                      
grafico_barras_uf = ggplot(data=dados_uf, aes(x=uf_fator, y=quantidade, fill=uf_fator)) +
  geom_bar(stat="identity", position=position_dodge(), colour="black") +
  ggtitle("Top 10 Total de acidentes por UF") + 
  xlab("UF") + ylab("Total de acidentes") +
  theme(axis.text.x = element_text(angle = -90, vjust = 0.5, hjust=1))

ggplotly(grafico_barras_uf)

Tabela de Estatísticas resumo dos acidentes

#Transformando latitute e longitude
dados = dados %>%  mutate (latitude_numero=as.numeric(scan(text = dados$latitude,dec = ",",sep = ".")))
dados = dados %>%  mutate (longitude_numero=as.numeric(scan(text = dados$longitude,dec = ",",sep = ".")))

#Análise das variáveis quantitativas
dados_agregados_uf_bignum =  dados %>%
  select(uf,pessoas,mortos,feridos_leves,feridos_graves,ilesos
  ) %>%
  group_by(uf) %>% 
  summarise(
    quantidade_acidentes = sum(pessoas),
    quantidade_acidentes_semvitimas=sum(ilesos)/quantidade_acidentes,
    quantidade_acidentes_comvitimasferidas=sum(feridos_leves+feridos_graves)/quantidade_acidentes,
    quantidade_acidentes_comvitimasfatais=sum(mortos)/quantidade_acidentes
    
    
  ) %>%
  arrange(desc(quantidade_acidentes)) %>% 
  kbl %>% 
  kable_material_dark(full_width = F)

dados_agregados_uf_bignum
uf quantidade_acidentes quantidade_acidentes_semvitimas quantidade_acidentes_comvitimasferidas quantidade_acidentes_comvitimasfatais
MG 13911 0.3781899 0.5228956 0.0366616
SC 11756 0.4138312 0.5070602 0.0227118
PR 11455 0.4320384 0.4640768 0.0346574
RS 7160 0.4459497 0.4758380 0.0231844
RJ 6860 0.4406706 0.4747813 0.0295918
SP 6359 0.4411071 0.4584054 0.0264192
BA 6052 0.3987112 0.4887640 0.0560145
GO 5599 0.4172174 0.4806215 0.0341132
PE 4230 0.3912530 0.4477541 0.0541371
ES 3995 0.3782228 0.5211514 0.0230288
MT 3471 0.4295592 0.4707577 0.0466724
RO 2571 0.4465189 0.4651886 0.0206145
CE 2505 0.3964072 0.4858283 0.0439122
MS 2410 0.4049793 0.4829876 0.0360996
PB 2190 0.3689498 0.4972603 0.0296804
RN 2050 0.4102439 0.4790244 0.0336585
MA 1934 0.3898656 0.4596691 0.0775595
PA 1832 0.4290393 0.4383188 0.0485808
PI 1817 0.4067144 0.4628509 0.0555861
DF 1775 0.4816901 0.4422535 0.0180282
AL 1030 0.3932039 0.4757282 0.0553398
TO 1016 0.3966535 0.4734252 0.0610236
SE 981 0.3914373 0.4689093 0.0326198
AC 454 0.3964758 0.4823789 0.0176211
RR 429 0.3892774 0.4592075 0.0559441
AM 287 0.3972125 0.4982578 0.0348432
AP 254 0.3582677 0.5275591 0.0157480

Mortos por fase do dia

#Tabulação cruzada
table(dados$mortos, dados$fase_dia)
##     
##      Amanhecer Anoitecer Plena Noite Pleno dia
##   0       1819      2439       14797     23155
##   1        190       141        1458      1008
##   2         15        18         129       101
##   3          8         1          34        22
##   4          0         1           6        17
##   5          1         0           2         2
##   7          0         0           1         0
##   8          0         0           1         0
##   11         0         0           1         0
##   12         0         0           1         0
#Tabulação cruzada proporção
prop.table(table(dados$mortos, dados$fase_dia))
##     
##          Amanhecer     Anoitecer   Plena Noite     Pleno dia
##   0  0.04009433962 0.05376035972 0.32615499912 0.51038176688
##   1  0.00418797390 0.00310791747 0.03213718921 0.02221830365
##   2  0.00033062952 0.00039675542 0.00284341386 0.00222623876
##   3  0.00017633574 0.00002204197 0.00074942691 0.00048492329
##   4  0.00000000000 0.00002204197 0.00013225181 0.00037471345
##   5  0.00002204197 0.00000000000 0.00004408394 0.00004408394
##   7  0.00000000000 0.00000000000 0.00002204197 0.00000000000
##   8  0.00000000000 0.00000000000 0.00002204197 0.00000000000
##   11 0.00000000000 0.00000000000 0.00002204197 0.00000000000
##   12 0.00000000000 0.00000000000 0.00002204197 0.00000000000
#Tabulação mais personalizada
dados %>% 
  tbl_cross(row = mortos,
            col = fase_dia,
            percent = "row") %>% 
  bold_labels()
## Warning: The `.dots` argument of `group_by()` is deprecated as of dplyr 1.0.0.
Characteristic fase_dia Total
Amanhecer Anoitecer Plena Noite Pleno dia
mortos
0 1,819 (4.3%) 2,439 (5.8%) 14,797 (35%) 23,155 (55%) 42,210 (100%)
1 190 (6.8%) 141 (5.0%) 1,458 (52%) 1,008 (36%) 2,797 (100%)
2 15 (5.7%) 18 (6.8%) 129 (49%) 101 (38%) 263 (100%)
3 8 (12%) 1 (1.5%) 34 (52%) 22 (34%) 65 (100%)
4 0 (0%) 1 (4.2%) 6 (25%) 17 (71%) 24 (100%)
5 1 (20%) 0 (0%) 2 (40%) 2 (40%) 5 (100%)
7 0 (0%) 0 (0%) 1 (100%) 0 (0%) 1 (100%)
8 0 (0%) 0 (0%) 1 (100%) 0 (0%) 1 (100%)
11 0 (0%) 0 (0%) 1 (100%) 0 (0%) 1 (100%)
12 0 (0%) 0 (0%) 1 (100%) 0 (0%) 1 (100%)
Total 2,033 (4.5%) 2,600 (5.7%) 16,430 (36%) 24,305 (54%) 45,368 (100%)

Grafo Classificacao acidente vs condicao climática

#Grafo

dados = dados %>% filter(condicao_metereologica!="Ignorado")

adj_autor_temas=table(dados$classificacao_acidente,dados$condicao_metereologica)
net_autores_temas <- graph_from_incidence_matrix(adj_autor_temas)
net2=asNetwork(net_autores_temas)

df2=data.frame(table(dados$series))
df3=data.frame(dados$Profile.Name)

net2 %v% "Series" = dados$classificacao_acidente

n<-ggnetwork(net2)

df3=data.frame(table(cbind(dados$classificacao_acidente,dados$condicao_metereologica)))

n_merge=merge(n,df3, by.x=names(n)[5],by.y=names(df3)[1])

ggplotly(
  ggplot(n_merge, aes(x = x, y = y, xend = xend, yend = yend)) +
    geom_edges(color = "grey50") +
    geom_nodes(aes(color = vertex.names, size=Freq)) +
    geom_nodetext(aes(color = Series, label = vertex.names),
                  fontface = "bold",size=3) +
    theme_blank()
)

Mapa dos acidentes por região e município

dados_teste=head(dados,500)


m <- leaflet() %>%
  addTiles() %>%  
  addMarkers(lng=dados_teste$longitude_numero, lat=dados_teste$latitude_numero, 
             popup=dados_teste$municipio)
  
m