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
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