Análise de Acidentes de Trânsito em Recife (2020-2024)
Introdução
1.1 Declaração do problema e relevância
Os acidentes de trânsito representam um dos principais problemas urbanos nas grandes cidades brasileiras. Além de gerar impactos diretos na saúde pública, eles causam prejuízos econômicos, sobrecarga nos serviços de emergência e reduzem a qualidade de vida da população. Na cidade do Recife, em particular, a alta densidade populacional, o aumento do número de veículos e a infraestrutura viária limitada contribuem para um cenário de recorrentes acidentes, muitos deles com vítimas.
O presente estudo busca analisar o comportamento e a evolução dos acidentes de trânsito registrados em Recife ao longo dos últimos anos (2020 a 2024). O objetivo é compreender quando, onde e sob quais condições esses eventos ocorrem com maior frequência, identificando padrões temporais, geográficos e contextuais que possam auxiliar na formulação de políticas públicas de prevenção e melhoria da segurança viária.
Este tema é de grande interesse não apenas para pesquisadores e gestores públicos, mas também para toda a sociedade, uma vez que compreender os fatores associados aos acidentes permite reduzir riscos, salvar vidas e otimizar os investimentos em mobilidade urbana e infraestrutura. Assim, o projeto se propõe a transformar dados abertos em conhecimento útil para apoiar decisões baseadas em evidências.
1.2 Dados utilizados e metodologia empregada
Para abordar o problema proposto, este estudo utiliza conjuntos de dados públicos disponibilizados pela Prefeitura do Recife, referentes aos acidentes de trânsito registrados entre os anos de 2020 e 2024. Cada base contém informações detalhadas sobre data, hora, bairro, tipo de acidente, condições da via, presença de vítimas e características do local. Esses dados foram obtidos em formato CSV e serão combinados em um único conjunto para possibilitar análises temporais e comparativas entre os anos.
A metodologia empregada envolve diversas etapas de tratamento e preparação dos dados, incluindo: - Padronização dos nomes das variáveis e correção de codificação de caracteres; - Conversão de variáveis de data e hora para formatos adequados de análise temporal; - Tratamento de valores ausentes e inconsistências; - Criação de novas variáveis derivadas, como dia da semana, turno do dia e ano do registro; - Junção dos datasets anuais em um único conjunto consolidado.
Após a limpeza e organização dos dados, será conduzida uma
análise exploratória com foco em identificar padrões
espaciais e temporais dos acidentes, bem como possíveis fatores
relacionados à gravidade das ocorrências. Serão utilizados pacotes da
linguagem R, principalmente tidyverse,
lubridate, ggplot2 e leaflet,
para manipulação, visualização e construção de mapas interativos.
Essa abordagem permitirá compreender a distribuição dos acidentes no tempo e no espaço, identificar áreas de maior risco e gerar informações que possam subsidiar ações preventivas e políticas públicas de mobilidade e segurança viária.
1.3 Abordagem proposta e técnicas adotadas
A abordagem proposta neste projeto combina técnicas de análise exploratória de dados com visualização estatística e espacial, buscando identificar padrões que expliquem o comportamento dos acidentes de trânsito em Recife entre 2020 e 2024.
Inicialmente, serão aplicadas técnicas de análise descritiva para sumarizar as informações principais, como número total de acidentes por ano, distribuição por bairros e horários, tipos de ocorrência e gravidade. A partir disso, serão construídos gráficos temporais e comparativos para identificar variações sazonais, horários críticos e tendências de crescimento ou redução ao longo dos anos.
Em seguida, serão utilizadas ferramentas de análise
espacial, com o uso de pacotes como leaflet e
sf, para gerar mapas de calor e visualizar a concentração
geográfica dos acidentes. Essa etapa permitirá identificar
bairros ou regiões mais afetadas, auxiliando na
interpretação espacial do problema.
Também serão criadas novas variáveis derivadas, como dia da semana, turno do dia e taxa de acidentes com vítimas, de modo a permitir a comparação entre diferentes contextos e tipos de via. Além disso, as condições da pista, a sinalização e o tipo de pavimento serão cruzados com a gravidade das ocorrências, possibilitando observar relações entre infraestrutura e severidade dos acidentes.
Por fim, os resultados serão apresentados por meio de gráficos interativos, tabelas resumidas e mapas temáticos, acompanhados de interpretações claras que relacionem os achados aos desafios de segurança viária da cidade. Essa abordagem exploratória visa transformar os dados em insights úteis para gestores públicos e cidadãos, promovendo uma análise baseada em evidências sobre o trânsito recifense.
1.4 Aplicações e público-alvo da análise
Os resultados obtidos a partir desta análise poderão beneficiar diferentes públicos e instituições envolvidas com mobilidade e segurança viária.
Para os gestores públicos, as informações extraídas podem subsidiar a tomada de decisões baseadas em evidências, como o planejamento de intervenções em cruzamentos perigosos, revisão de limites de velocidade e melhoria da sinalização em áreas críticas. A identificação de padrões temporais e espaciais também pode orientar ações preventivas em períodos e locais de maior risco.
Para os órgãos de trânsito e forças de segurança, a análise possibilita uma compreensão mais clara dos fatores associados aos acidentes com vítimas, contribuindo para campanhas educativas mais direcionadas e estratégias de fiscalização mais eficientes.
Já para os cidadãos e pesquisadores, o estudo oferece uma visão acessível sobre a dinâmica dos acidentes em Recife, estimulando a conscientização sobre comportamentos de risco e promovendo o uso de dados abertos como instrumento de participação social.
Assim, a análise proposta não apenas busca compreender os dados, mas também transformá-los em conhecimento aplicável, capaz de auxiliar na redução de acidentes, preservação de vidas e melhoria da mobilidade urbana.
Pacotes necessários
2.1 Pacotes utilizados
Antes de iniciar a análise, é necessário carregar os pacotes que serão utilizados ao longo do projeto. Estes pacotes fornecem funções para manipulação, visualização e tratamento dos dados, além de ferramentas de formatação para a publicação do relatório.
# Manipulação e limpeza de dados
library(tidyverse) # Conjunto de pacotes (dplyr, tidyr, readr, ggplot2 etc.)
library(janitor) # Limpeza de nomes de colunas e inspeção de dados
library(lubridate) # Manipulação de datas e horários
library(readr) # Leitura do CSV
# Visualização e gráficos
library(ggplot2) # Criação de gráficos estatísticos
library(plotly) # Gráficos interativos
library(leaflet) # Mapas interativos (visualização espacial)
library(sf) # Manipulação de dados espaciais (shapefiles e coordenadas)
# Análise descritiva
library(skimr) # Sumários estatísticos rápidos
library(knitr) # Formatação de tabelas para o relatório
# Publicação e formatação
library(rmdformats) # Estilização do markdown2.2 Finalidade dos pacotes
tidyverse: Conjunto central de pacotes para ciência de dados no R. Inclui o dplyr (manipulação), tidyr (organização), readr (importação) e ggplot2 (visualização).
janitor: Facilita a limpeza dos nomes das variáveis e a remoção de dados redundantes.
lubridate: Simplifica o tratamento e extração de componentes de datas e horários.
readr: Pacote projetado para ler de forma rápida e flexível dados retangulares como arquivos CSV
ggplot2: Utilizado para criar gráficos estáticos e visualizações exploratórias.
plotly: Permite transformar gráficos em versões interativas.
leaflet: Cria mapas de calor e visualizações geográficas dos acidentes por bairro.
sf: Manipula dados espaciais (como polígonos de bairros e coordenadas geográficas).
skimr: Gera estatísticas descritivas resumidas e detalhadas.
knitr: Gera tabelas organizadas e integradas ao R Markdown.
rmdformats: Responsável por estilizar o relatório final.
Preparação dos dados
3.1 Fonte original dos dados
Os dados utilizados neste projeto foram obtidos por meio do
Portal de Dados Abertos da Prefeitura do Recife,
disponível em:
http://dados.recife.pe.gov.br/dataset/acidentes-de-transito-com-e-sem-vitimas/
Especificamente, foi utilizada a base denominada “Acidentes de Trânsito – Recife”, que contém registros oficiais de ocorrências atendidas pelos órgãos municipais de trânsito e segurança pública. Cada registro corresponde a um acidente ocorrido em vias do município e inclui informações sobre data, hora, local (bairro e endereço), tipo de ocorrência, condições da via, sinalização, presença de vítimas, e outros atributos relacionados.
O conjunto de dados é atualizado periodicamente pela Prefeitura e reflete informações coletadas no momento das ocorrências, com o objetivo de monitorar a segurança viária, planejar intervenções urbanas e embasar políticas públicas de mobilidade.
Para este projeto, foram considerados os arquivos correspondentes aos anos de 2020, 2021, 2022, 2023 e 2024, disponibilizados em formato CSV. Cada arquivo foi baixado individualmente e posteriormente consolidado em um único conjunto de dados unificado, totalizando milhares de registros.
Esses dados são públicos, abertos e gratuitos, atendendo às diretrizes da Lei de Acesso à Informação (Lei nº 12.527/2011) e da Política Nacional de Dados Abertos.
3.2 Descrição dos dados originais
Os dados originais são provenientes de arquivos CSV disponibilizados no Portal de Dados Abertos da Prefeitura do Recife, contendo registros detalhados de acidentes de trânsito ocorridos na cidade entre os anos de 2020 e 2024.
Cada arquivo anual possui mais de 5.000 registros e aproximadamente 38 variáveis. As colunas representam informações sobre tempo, localização, natureza da ocorrência, situação do atendimento, condições da via e presença de vítimas.
A seguir estão algumas das principais variáveis do conjunto de dados:
| Variável | Descrição |
|---|---|
data |
Data em que o acidente ocorreu. |
hora |
Horário exato do registro da ocorrência. |
bairro |
Bairro onde o acidente aconteceu. |
natureza |
Tipo de ocorrência (ex.: com vítima, sem vítima). |
situacao |
Situação do registro (finalizado, em andamento etc.). |
endereco |
Endereço ou via principal onde ocorreu o acidente. |
condicao_via |
Estado da pista no momento (seca, molhada, irregular etc.). |
iluminacao |
Condição de iluminação no local (boa, precária, inexistente). |
sinalizacao |
Presença de sinalização de trânsito adequada. |
tipo_pavimento |
Tipo de pavimento da via (asfalto, paralelepípedo etc.). |
velocidade_max_via |
Limite de velocidade da via. |
feridos_leves, feridos_graves,
mortos |
Número de vítimas por tipo de gravidade. |
complemento |
Campo textual com informações adicionais (ex.: referências locais). |
Os arquivos apresentam variações nos nomes das colunas entre anos e diferenças na formatação dos dados, exigindo padronização prévia.
Alguns campos contêm valores ausentes (
NA) ou inconsistências de preenchimento, especialmente nas variáveis relacionadas à sinalização, condição da via e velocidade máxima. Além disso, há diferenças de codificação de caracteres, o que faz com que alguns acentos e símbolos apareçam incorretos (ex.: “COM VÃTIMA” em vez de “COM VÍTIMA”), tornando necessária a correção de encoding para UTF-8.
O propósito original dos dados é o monitoramento da segurança viária municipal, permitindo que a Prefeitura e órgãos de trânsito acompanhem a frequência, gravidade e distribuição dos acidentes em tempo e espaço. Entretanto, na forma bruta, o dataset não está pronto para análise direta, sendo necessária uma etapa de tratamento e limpeza para padronizar variáveis e eliminar ruídos antes da exploração estatística e visual.
Um exemplo de amostra dos dados originais pode ser visualizado abaixo:
# Importação correta do dataset
library(readr)
dados_2024 <- read_delim(
"acidentes2024.csv",
delim = ";", # delimitador correto
locale = locale(encoding = "UTF-8"), # corrige acentuação
trim_ws = TRUE, # remove espaços extras,
show_col_types = FALSE
)
# Visualiza as primeiras linhas
head(dados_2024, 5)## # A tibble: 5 × 38
## Protocolo data hora natureza situacao bairro endereco numero
## <dbl> <date> <time> <chr> <chr> <chr> <chr> <chr>
## 1 2929720 2024-01-01 06:05 COM VÍTIMA FINALIZADA VASCO DA GA… AV NORT… <NA>
## 2 2929730 2024-01-01 09:14 COM VÍTIMA FINALIZADA VASCO DA GA… RUA VAS… 1353
## 3 2929740 2024-01-01 10:31 COM VÍTIMA FINALIZADA VASCO DA GA… RUA ALT… 290
## 4 2929800 2024-01-01 04:11 COM VÍTIMA FINALIZADA ARRUDA AV PROF… <NA>
## 5 2929850 2024-01-01 06:53 COM VÍTIMA FINALIZADA BOA VIAGEM AV CONS… 1672
## # ℹ 30 more variables: detalhe_endereco_acidente <chr>, complemento <chr>,
## # bairro_cruzamento <chr>, num_semaforo <dbl>, sentido_via <chr>, tipo <chr>,
## # auto <chr>, moto <chr>, ciclom <chr>, ciclista <chr>, pedestre <chr>,
## # onibus <chr>, caminhao <chr>, viatura <chr>, outros <chr>, vitimas <chr>,
## # vitimasfatais <chr>, acidente_verificado <lgl>, tempo_clima <lgl>,
## # situacao_semaforo <lgl>, sinalizacao <lgl>, condicao_via <lgl>,
## # conservacao_via <lgl>, ponto_controle <lgl>, situacao_placa <lgl>, …
3.3 Etapas de limpeza e padronização dos dados
A etapa de limpeza é fundamental para garantir que todos os arquivos anuais (2020–2024) estejam no mesmo padrão antes de serem unidos. Durante a inspeção inicial, foi possível observar que alguns anos apresentam:
- diferenças nos nomes das colunas
- diferenças nos tipos das variáveis (por exemplo
autoenum_semaforovêm como número em alguns anos e texto em outros) - formatações distintas de datas e horários
- arquivos contendo colunas que não existem em outros anos
- números registrados com vírgula no lugar de ponto (ex.:
"2,0")
Essas inconsistências impedem a união dos dados com
bind_rows() e, portanto, precisam ser padronizadas
previamente.
A seguir, apresenta-se o processo completo de preparação desses arquivos.
3.3.1 Importação dos arquivos e padronização de nomes
Todos os arquivos foram importados em uma lista, com nomes de colunas
padronizados por clean_names().
arquivos <- c(
"acidentes_2020-novo.csv",
"acidentes2021.csv",
"acidentes2022.csv",
"acidentes2023.csv",
"acidentes2024.csv"
)
# Colunas que variam entre anos e precisam ser padronizadas como texto
colunas_texto_fixas <- c(
"num_semaforo",
"auto", "moto", "ciclom", "ciclista", "pedestre",
"onibus", "caminhao", "viatura", "outros",
"vitimas", "vitimasfatais"
)
lista_dados <- lapply(
arquivos,
function(arquivo) {
# Leitura
df <- read_delim(
arquivo,
delim = ";",
locale = locale(encoding = "UTF-8"),
trim_ws = TRUE,
show_col_types = FALSE
) |>
clean_names()
# Garante colunas fixas
for (col in colunas_texto_fixas) {
if (!col %in% names(df)) {
df[[col]] <- NA_character_
}
}
df |>
mutate(
data = ymd(as.character(data)),
hora = parse_time(
as.character(hora),
locale = locale(time_format = "%H:%M:%S")
),
across(all_of(colunas_texto_fixas), as.character),
across(where(is.character), ~ str_squish(toupper(.x)))
)
}
)3.3.2 União dos datasets (2020–2024)
Após padronizar tipos e normalizar nomes, é possível unir sem erro:
dados_brutos <- bind_rows(lista_dados)
# Verificar se existem registros fora do período de interesse (após 31/12/2024)
registros_fora_periodo <- dados_brutos |>
filter(data > as.Date("2024-12-31"))
n_fora <- nrow(registros_fora_periodo)
# Remover registros com data posterior a 31/12/2024 (dataset de 2024 veio com inconsistência)
dados_brutos <- dados_brutos |>
filter(data <= as.Date("2024-12-31"))3.3.3 Conversão de colunas numéricas que estavam como texto
Algumas variáveis numéricas vinham como “2,0” ou “174,0”. Aqui fazemos a conversão definitiva:
dados_brutos <- dados_brutos |>
mutate(
# Transforma "S/N" em NA antes de converter para evitar o warning
across(all_of(colunas_texto_fixas), ~ na_if(.x, "S/N")),
# Conversão numérica (agora sem o aviso para "S/N")
across(
all_of(colunas_texto_fixas),
~ parse_number(.x, locale = locale(decimal_mark = ","))
)
)3.3.4 Criação de novas variáveis úteis para a análise
Foram criadas variáveis derivadas essenciais para análise temporal:
dados_brutos <- dados_brutos |>
mutate(
ano = year(data),
mes = month(data, label = TRUE, locale = "pt_BR"),
dia_semana = wday(data, label = TRUE, locale = "pt_BR"),
turno = case_when(
hour(hora) >= 5 & hour(hora) < 12 ~ "MANHÃ",
hour(hora) >= 12 & hour(hora) < 18 ~ "TARDE",
hour(hora) >= 18 & hour(hora) < 24 ~ "NOITE",
TRUE ~ "MADRUGADA"
)
)3.3.5 Justificativa das etapas aplicadas
clean_names() → padroniza nomes para evitar erros por diferença de acentuação ou capitalização.
as.character(data/hora) → muitos anos traziam hora como hms, outros como texto.
parse_time() + dmy() → unifica o formato de datas e horários para permitir extração de componentes.
Forçar colunas para character → evita falhas no bind_rows() por tipos diferentes.
parse_number() → converte textos numéricos que usam vírgula como separador decimal.
Criação de ano, mês, dia, turno → variáveis essenciais para análises temporais pedidas no projeto.
str_squish() + toupper() → remove espaços extras e normaliza categorias (ex.: “Boa Viagem”, “boa viagem”, “BOA_VIAGEM” → “BOA VIAGEM”).
3.3.6 Resultado final da preparação
Neste ponto, todos os anos foram unificados em um único dataset limpo:
Datas e horários padronizados
Variáveis categóricas normalizadas
Colunas numéricas convertidas corretamente
Tipos uniformes para permitir análises multianuais
Ajuste de inconsistência na base de 2024 (as últimas linhas do dataset apresentavam datas de 2025)
3.4 Apresentação do dataset final
Após todas as etapas de importação, limpeza, padronização e conversão de tipos descritas anteriormente, o conjunto de dados final encontra-se consolidado e pronto para análise.
Apresentamos abaixo uma visão condensada da estrutura dos dados processados. O dataset unificado contém registros de 2020 a 2024, com as colunas padronizadas e novas variáveis temporais criadas.
# Verifica a estrutura dos dados de forma condensada (tipos e primeiras observações)
glimpse(dados_brutos)## Rows: 18,452
## Columns: 44
## $ data <date> 2020-01-01, 2020-01-01, 2020-01-01, 2020-01…
## $ hora <time> 00:39:00, 01:04:00, 02:16:00, 02:22:00, 03:…
## $ natureza_acidente <chr> "SEM VÍTIMA", "SEM VÍTIMA", "SEM VÍTIMA", "S…
## $ situacao <chr> "CANCELADA", "FINALIZADA", "FINALIZADA", "FI…
## $ bairro <chr> "ÁGUA FRIA", "CORDEIRO", "AREIAS", "BOA VIAG…
## $ endereco <chr> "RUA SAO SEBASTIAO", "AV CAXANGA", "AV RECIF…
## $ numero <chr> "1687", "1444", NA, NA, NA, NA, NA, NA, "232…
## $ detalhe_endereco_acidente <chr> NA, "AV GENERAL SAN MARTIN", NA, NA, NA, NA,…
## $ complemento <chr> "EM FRENTE A IGREJA UNIVERSAL", NA, "LADO OP…
## $ bairro_cruzamento <chr> "ÁGUA FRIA", "CORDEIRO", "AREIAS", "BOA VIAG…
## $ num_semaforo <dbl> NA, 80, 494, NA, 672, NA, 138, NA, NA, NA, N…
## $ sentido_via <chr> NA, "SUBURBIO", "SUBURBIO", "CIDADE", "SUBUR…
## $ tipo <chr> "COLISÃO", "ABALROAMENTO LONGITUDINAL", "CHO…
## $ descricao <chr> "COLISÃO ENTRE DOIS AUTOS S/V", "COLISÃO ENT…
## $ auto <dbl> 2, 2, 2, 2, 2, 2, 1, NA, 1, 1, 2, 2, 2, 1, 1…
## $ moto <dbl> NA, NA, NA, NA, NA, NA, NA, 1, NA, NA, NA, N…
## $ ciclom <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ ciclista <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ pedestre <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ onibus <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ caminhao <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, 1, NA, N…
## $ viatura <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ outros <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ vitimas <dbl> 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1,…
## $ vitimasfatais <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ acidente_verificado <chr> NA, "CRUZAMENTO", "LONGO DA VIA", "LONGO DA …
## $ tempo_clima <chr> NA, "BOM", "BOM", "BOM", "BOM", "BOM", "BOM"…
## $ situacao_semaforo <chr> NA, "SEM DEFEITO", "SEM DEFEITO", "SEM DEFEI…
## $ sinalizacao <chr> NA, "PERFEITO ESTADO", "PERFEITO ESTADO", "P…
## $ condicao_via <chr> NA, "SECA", "SECA", "SECA", "SECA", "SECA", …
## $ conservacao_via <chr> NA, "PERFEITO ESTADO", "PERFEITO ESTADO", "P…
## $ ponto_controle <chr> NA, "FAIXA DE PEDESTRE", "FAIXA DE PEDESTRE"…
## $ situacao_placa <chr> NA, NA, "NÃO HÁ PLACAS", "R-6A", "NÃO HÁ PLA…
## $ velocidade_max_via <chr> NA, "60 KM/H", NA, NA, NA, NA, NA, "60 KM/H"…
## $ mao_direcao <chr> NA, "DUPLA", "DUPLA", "ÚNICA", "ÚNICA", "DUP…
## $ divisao_via1 <chr> NA, "CANTEIRO CENTRAL", "CANTEIRO CENTRAL", …
## $ divisao_via2 <chr> NA, NA, NA, NA, "FAIXA SECCIONADA", NA, NA, …
## $ divisao_via3 <chr> NA, NA, NA, NA, "CANTEIRO CENTRAL", NA, NA, …
## $ protocolo <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ natureza <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ ano <dbl> 2020, 2020, 2020, 2020, 2020, 2020, 2020, 20…
## $ mes <ord> Jan, Jan, Jan, Jan, Jan, Jan, Jan, Jan, Jan,…
## $ dia_semana <ord> Qua, Qua, Qua, Qua, Qua, Qua, Qua, Qua, Qua,…
## $ turno <chr> "MADRUGADA", "MADRUGADA", "MADRUGADA", "MADR…
## # A tibble: 10 × 44
## data hora natureza_acidente situacao bairro endereco numero
## <date> <time> <chr> <chr> <chr> <chr> <chr>
## 1 2020-01-01 00:39 SEM VÍTIMA CANCELADA ÁGUA FRIA RUA SAO… 1687
## 2 2020-01-01 01:04 SEM VÍTIMA FINALIZADA CORDEIRO AV CAXA… 1444
## 3 2020-01-01 02:16 SEM VÍTIMA FINALIZADA AREIAS AV RECI… <NA>
## 4 2020-01-01 02:22 SEM VÍTIMA FINALIZADA BOA VIAGEM AV BOA … <NA>
## 5 2020-01-01 03:33 SEM VÍTIMA FINALIZADA PAISSANDU AV GOVE… <NA>
## 6 2020-01-01 04:18 SEM VÍTIMA FINALIZADA BARRO AV DR J… <NA>
## 7 2020-01-01 04:47 SEM VÍTIMA FINALIZADA PINA AV CONS… <NA>
## 8 2020-01-01 09:06 COM VÍTIMA FINALIZADA PINA AVENIDA… <NA>
## 9 2020-01-01 10:07 COM VÍTIMA FINALIZADA MADALENA EST DOS… 2328
## 10 2020-01-01 12:09 SEM VÍTIMA FINALIZADA NOVA DESCOBER… RUA NOV… 1335
## # ℹ 37 more variables: detalhe_endereco_acidente <chr>, complemento <chr>,
## # bairro_cruzamento <chr>, num_semaforo <dbl>, sentido_via <chr>, tipo <chr>,
## # descricao <chr>, auto <dbl>, moto <dbl>, ciclom <dbl>, ciclista <dbl>,
## # pedestre <dbl>, onibus <dbl>, caminhao <dbl>, viatura <dbl>, outros <dbl>,
## # vitimas <dbl>, vitimasfatais <dbl>, acidente_verificado <chr>,
## # tempo_clima <chr>, situacao_semaforo <chr>, sinalizacao <chr>,
## # condicao_via <chr>, conservacao_via <chr>, ponto_controle <chr>, …
3.5 Resumo estatístico e qualidade dos dados
Para compreender a distribuição e a qualidade das variáveis após a
limpeza, utilizamos a função skim(), que fornece um sumário
estatístico completo. Esta análise permite verificar a existência de
valores ausentes (n_missing), a amplitude temporal dos
registros e a distribuição das variáveis numéricas (média, desvio
padrão, mínimos e máximos).
| Name | dados_brutos |
| Number of rows | 18452 |
| Number of columns | 44 |
| _______________________ | |
| Column type frequency: | |
| character | 26 |
| Date | 1 |
| difftime | 1 |
| factor | 2 |
| numeric | 14 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| natureza_acidente | 11981 | 0.35 | 6 | 12 | 0 | 4 | 0 |
| situacao | 1 | 1.00 | 8 | 23 | 0 | 9 | 0 |
| bairro | 68 | 1.00 | 1 | 20 | 0 | 121 | 0 |
| endereco | 47 | 1.00 | 5 | 46 | 0 | 1687 | 0 |
| numero | 9039 | 0.51 | 1 | 23 | 0 | 3670 | 0 |
| detalhe_endereco_acidente | 13469 | 0.27 | 1 | 55 | 0 | 1375 | 0 |
| complemento | 1411 | 0.92 | 2 | 365 | 0 | 15226 | 0 |
| bairro_cruzamento | 69 | 1.00 | 1 | 20 | 0 | 121 | 0 |
| sentido_via | 11607 | 0.37 | 1 | 32 | 0 | 106 | 0 |
| tipo | 316 | 0.98 | 5 | 25 | 0 | 31 | 0 |
| descricao | 14464 | 0.22 | 4 | 351 | 0 | 1905 | 0 |
| acidente_verificado | 11285 | 0.39 | 5 | 13 | 0 | 8 | 0 |
| tempo_clima | 11168 | 0.39 | 3 | 7 | 0 | 3 | 0 |
| situacao_semaforo | 11257 | 0.39 | 9 | 12 | 0 | 5 | 0 |
| sinalizacao | 11308 | 0.39 | 8 | 15 | 0 | 4 | 0 |
| condicao_via | 11192 | 0.39 | 4 | 7 | 0 | 4 | 0 |
| conservacao_via | 11283 | 0.39 | 6 | 15 | 0 | 4 | 0 |
| ponto_controle | 11604 | 0.37 | 6 | 17 | 0 | 5 | 0 |
| situacao_placa | 11751 | 0.36 | 3 | 25 | 0 | 30 | 0 |
| velocidade_max_via | 15934 | 0.14 | 3 | 7 | 0 | 16 | 0 |
| mao_direcao | 11346 | 0.39 | 5 | 7 | 0 | 3 | 0 |
| divisao_via1 | 11513 | 0.38 | 5 | 16 | 0 | 8 | 0 |
| divisao_via2 | 17701 | 0.04 | 5 | 16 | 0 | 7 | 0 |
| divisao_via3 | 18323 | 0.01 | 5 | 16 | 0 | 7 | 0 |
| natureza | 6472 | 0.65 | 10 | 12 | 0 | 3 | 0 |
| turno | 0 | 1.00 | 5 | 9 | 0 | 4 | 0 |
Variable type: Date
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| data | 0 | 1 | 2020-01-01 | 2024-12-28 | 2023-01-13 | 1803 |
Variable type: difftime
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| hora | 2669 | 0.86 | 0 secs | 86100 secs | 09:20:00 | 1511 |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| mes | 0 | 1 | TRUE | 12 | Jan: 2003, Fev: 1875, Nov: 1653, Set: 1570 |
| dia_semana | 0 | 1 | TRUE | 7 | Seg: 3001, Ter: 2974, Sex: 2912, Qua: 2819 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| num_semaforo | 15536 | 0.16 | 1.419280e+03 | 2362.49 | 0 | 200 | 478 | 1950 | 68610 | ▇▁▁▁▁ |
| auto | 608 | 0.97 | 8.400000e-01 | 0.76 | 0 | 0 | 1 | 1 | 9 | ▇▂▁▁▁ |
| moto | 2400 | 0.87 | 7.800000e-01 | 0.53 | 0 | 0 | 1 | 1 | 4 | ▃▇▁▁▁ |
| ciclom | 4073 | 0.78 | 1.000000e-02 | 0.07 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
| ciclista | 3940 | 0.79 | 5.000000e-02 | 0.22 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
| pedestre | 3937 | 0.79 | 7.000000e-02 | 0.27 | 0 | 0 | 0 | 0 | 5 | ▇▁▁▁▁ |
| onibus | 3601 | 0.80 | 9.000000e-02 | 0.29 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
| caminhao | 3797 | 0.79 | 6.000000e-02 | 0.24 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
| viatura | 4020 | 0.78 | 5.000000e-02 | 0.24 | 0 | 0 | 0 | 0 | 11 | ▇▁▁▁▁ |
| outros | 4032 | 0.78 | 1.000000e-02 | 0.23 | 0 | 0 | 0 | 0 | 24 | ▇▁▁▁▁ |
| vitimas | 14 | 1.00 | 8.400000e-01 | 0.60 | 0 | 0 | 1 | 1 | 11 | ▇▁▁▁▁ |
| vitimasfatais | 4071 | 0.78 | 1.000000e-02 | 0.11 | 0 | 0 | 0 | 0 | 6 | ▇▁▁▁▁ |
| protocolo | 6472 | 0.65 | 1.869535e+09 | 535829291.18 | 2929720 | 2022250730 | 2023206510 | 2024160702 | 2024358320 | ▁▁▁▁▇ |
| ano | 0 | 1.00 | 2.022220e+03 | 1.53 | 2020 | 2021 | 2023 | 2024 | 2024 | ▆▃▅▆▇ |
Análise do sumário:
Com base na tabela acima, destacam-se os seguintes pontos sobre o conjunto de dados consolidado:
Dimensão Temporal: A variável data confirma que o dataset cobre todo o período esperado, com registros iniciando em janeiro de 2020 e terminando em dezembro de 2024 (conforme observado nas colunas min e max da seção Date).
Completude dos Dados: A coluna n_missing indica o volume de dados ausentes. Variáveis críticas para a identificação do acidente (como data e hora) possuem preenchimento robusto, enquanto colunas específicas (como num_semaforo ou detalhes de sinalizacao) podem apresentar taxas mais altas de valores nulos, o que é esperado dado que nem todo acidente ocorre próximo a um semáforo.
Variáveis Numéricas: As colunas de veículos (auto, moto, onibus) e vítimas (vitimas, vitimasfatais) estão corretamente formatadas como numéricas. Os histogramas inline permitem observar rapidamente que a maioria dos acidentes envolve poucos veículos e poucas vítimas (distribuição concentrada à esquerda), mas existem outliers com múltiplos envolvidos que serão investigados na análise exploratória.
Variáveis Categóricas: As variáveis de texto (como bairro e natureza) estão padronizadas em caixa alta, evitando a duplicação de categorias por erro de digitação.
Este panorama confirma que os dados estão consistentes e aptos para a etapa de visualização e aprofundamento.
Análise exploratória dos dados
Nesta seção, buscamos responder às perguntas centrais do estudo: quando, onde e como os acidentes ocorrem com maior frequência e gravidade em Recife. Através de visualizações gráficas, investigamos padrões temporais, comportamentais e espaciais.
Evolução temporal e sazonalidade
Para compreender o comportamento dos acidentes ao longo do
tempo, avaliamos a distribuição mensal e anual das ocorrências. Essa
análise permite identificar tendências, padrões sazonais e possíveis
impactos de eventos externos, como mudanças climáticas, fluxos de
circulação ou períodos de férias. Ao observar a evolução temporal, é
possível antecipar períodos críticos, reforçar campanhas preventivas e
alinhar ações de mobilidade urbana com a demanda real.
# Agrupa acidentes por Mês para ver a tendência
acidentes_temporal <- dados_brutos |>
mutate(data_mes = floor_date(data, "month")) |>
count(data_mes)
# Visualização da linha do tempo (ajustada para silenciar o aviso)
ggplot(acidentes_temporal, aes(x = data_mes, y = n)) +
geom_line(color = "#2c3e50", linewidth = 1) +
geom_smooth(method = "loess", formula = y ~ x, color = "red", se = FALSE, linetype = "dashed") +
scale_x_date(date_breaks = "6 months", date_labels = "%b/%y") +
labs(
title = "Evolução Mensal de Acidentes (2020-2024)",
subtitle = "Linha azul: total mensal | Linha vermelha: tendência suavizada",
x = "Data",
y = "Total de Ocorrências"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))Análise: Observando a série histórica, é possível notar inicialmente um pico anormal de acidentes no início de 2020, antes de abril. Essa elevação não reflete um fenômeno real do trânsito, mas sim uma inconsistência da própria base de dados, que inicia o ano de forma incompleta e concentra registros de maneira irregular nas primeiras semanas de março. A partir de abril, quando os dados se estabilizam, é possível interpretar os padrões com maior fidelidade.
Com a estabilização dos registros, observa-se claramente o impacto das restrições de circulação durante a pandemia de COVID-19, que reduziram drasticamente o volume de acidentes ao longo de 2020. Nos anos subsequentes (2021–2024), a curva de tendência (linha vermelha) demonstra uma retomada gradativa e consistente do número de ocorrências, estabilizando-se em um patamar mais elevado. Esse comportamento reforça a necessidade de políticas contínuas de segurança viária, especialmente em um contexto de retorno ao fluxo normal de veículos nas vias urbanas.
Horários críticos
Para identificar em quais momentos do dia os acidentes se
concentram, analisamos a distribuição horária das ocorrências. Esse
levantamento permite reconhecer padrões de mobilidade urbana ao longo do
dia e revelar períodos de maior exposição ao risco, como horários de
deslocamento para trabalho e estudo. Ao observar a variação ao longo das
24 horas, é possível orientar ações de fiscalização, campanhas
educativas e ajustes operacionais no trânsito com base nos intervalos de
maior demanda viária.
dados_brutos |>
mutate(hora_num = hour(hora)) |>
filter(!is.na(hora_num)) |>
ggplot(aes(x = hora_num)) +
geom_histogram(binwidth = 1, fill = "#34495e") +
labs(
title = "Distribuição Horária dos Acidentes",
x = "Hora do Dia",
y = "Número de Acidentes"
) +
theme_minimal()Análise: O histograma mostra que a maior parte dos acidentes ocorre nas primeiras horas da manhã, com um pico claro entre 7h e 10h. Esse período coincide com o deslocamento diário para trabalho e estudo, quando o volume de veículos é alto e o trânsito fica mais congestionado, aumentando a probabilidade de colisões.
Após o meio-dia, o número de acidentes diminui progressivamente e atinge os menores valores durante a noite e madrugada, quando a circulação é menos intensa. Assim, o gráfico reforça que o risco está mais associado ao fluxo elevado de veículos do que aos horários tradicionalmente considerados perigosos, como o período noturno.
Matriz de Risco: Dias e Horários Críticos
Para identificar os momentos de maior risco, cruzamos as
variáveis de dia da semana e turno. Esse “mapa de calor” ajuda a
direcionar a fiscalização para os horários de pico real.
# Prepara dados para o heatmap
heatmap_dados <- dados_brutos |>
filter(!is.na(turno), !is.na(dia_semana)) |>
count(dia_semana, turno) |>
# Ordena visualmente os turnos
mutate(turno = factor(turno, levels = c("MADRUGADA", "NOITE", "TARDE", "MANHÃ")))
# Visualização de Mapa de Calor
ggplot(heatmap_dados, aes(x = dia_semana, y = turno, fill = n)) +
geom_tile(color = "white") +
geom_text(aes(label = n), color = "black", size = 3) +
scale_fill_gradient(low = "#e0f7fa", high = "#006064", name = "Qtd.") +
labs(
title = "Concentração de Acidentes: Dia da Semana x Turno",
subtitle = "Intensidade da cor indica maior volume de registros",
x = "",
y = ""
) +
theme_minimal()Análise: A matriz evidencia que os dias úteis (segunda a sexta-feira) concentram a maior parte dos acidentes, com destaque para o turno da manhã, que apresenta os maiores números em todos os dias da semana. Esse padrão é compatível com os horários de deslocamento para trabalho, escolas e universidades, quando o volume de veículos e pedestres é significativamente maior. O turno da tarde também mantém valores elevados e relativamente estáveis ao longo da semana, reforçando a associação entre mobilidade urbana diária e aumento do risco de acidentes.
Nos finais de semana, observa-se uma redução geral no volume de ocorrências, embora ainda haja concentração relevante na manhã de sábado e domingo, possivelmente relacionada a atividades de lazer e deslocamentos recreativos. Já a madrugada, embora tenha números menores, registra quantidades expressivas em todos os dias, especialmente de sexta para sábado, o que pode estar associado a fatores como consumo de álcool, menor fiscalização e direção em vias mais vazias, que favorecem comportamentos de risco. Esses padrões reforçam a necessidade de políticas e campanhas focadas em momentos específicos do dia, não apenas em dias isolados da semana.
Gravidade por dia da semana
Para além do volume de acidentes, é essencial entender
quando os acidentes são mais graves, isto é, quando resultam em maior
número de vítimas. Por isso, calculamos a severidade média por dia da
semana, dividindo o total de vítimas pelo número de ocorrências em cada
dia. Essa medida permite identificar padrões que não aparecem apenas
pela contagem bruta de acidentes, revelando se determinados dias
concentram colisões mais sérias e onde políticas de prevenção ou reforço
da fiscalização podem ser mais eficazes.
gravidade_dias <- dados_brutos |>
group_by(dia_semana) |>
summarise(
acidentes = n(),
total_vitimas = sum(vitimas, na.rm = TRUE),
severidade_media = total_vitimas / acidentes
)
knitr::kable(gravidade_dias, caption = "Severidade média por dia da semana")| dia_semana | acidentes | total_vitimas | severidade_media |
|---|---|---|---|
| Dom | 1696 | 1437 | 0.8472877 |
| Seg | 3001 | 2523 | 0.8407198 |
| Ter | 2974 | 2511 | 0.8443174 |
| Qua | 2819 | 2352 | 0.8343384 |
| Qui | 2771 | 2327 | 0.8397690 |
| Sex | 2912 | 2425 | 0.8327610 |
| Sáb | 2279 | 1975 | 0.8666082 |
Análise: A tabela revela que a severidade média dos acidentes é relativamente estável ao longo da semana, variando apenas entre 0,83 e 0,87 vítima por acidente. No entanto, dois padrões chamam atenção:
Finais de semana (Domingo e Sábado) apresentam as maiores severidades — 0,847 e 0,866, respectivamente — indicando que, embora ocorram menos acidentes nesses dias, quando acontecem tendem a ser mais graves. Isso sugere relação com fatores como maior velocidade nas vias e comportamento de risco típico do lazer noturno.
Os dias úteis mantêm severidade mais baixa e homogênea, oscilando entre 0,83 e 0,84, reforçando que a maior parte das colisões diárias de trânsito está ligada ao fluxo intenso e não necessariamente à gravidade.
Em resumo: o volume de acidentes é maior durante a semana, mas a gravidade é mais elevada nos fins de semana, o que reforça a necessidade de estratégias de fiscalização específicas para esses períodos.
Fator de Gravidade: Motos vs. Carros
Embora o volume total de acidentes seja importante, a
gravidade é o que define o impacto na saúde pública. Abaixo, comparamos
a “taxa de vítimas” (média de feridos por acidente) entre diferentes
tipos de veículos envolvidos.
# Cria categorização simplificada dos veículos
analise_veiculos <- dados_brutos |>
mutate(
tipo_veiculo = case_when(
moto > 0 ~ "Envolve Motocicleta",
onibus > 0 ~ "Envolve Ônibus",
ciclom > 0 | ciclista > 0 ~ "Ciclista/Ciclomotor",
auto > 0 ~ "Apenas Automóvel",
TRUE ~ "Outros"
)
) |>
group_by(tipo_veiculo) |>
summarise(
total_acidentes = n(),
total_vitimas = sum(vitimas, na.rm = TRUE),
taxa_vitimas = round(total_vitimas / total_acidentes, 2)
) |>
filter(total_acidentes > 100) |> # Filtra categorias muito pequenas
arrange(desc(taxa_vitimas))
# Gráfico de barras comparativo
ggplot(analise_veiculos, aes(x = reorder(tipo_veiculo, taxa_vitimas), y = taxa_vitimas)) +
geom_col(aes(fill = tipo_veiculo), show.legend = FALSE) +
geom_text(aes(label = taxa_vitimas), hjust = -0.2, size = 3.5) +
scale_fill_brewer(palette = "Set2") +
coord_flip() +
ylim(0, 1.5) +
labs(
title = "Índice de Severidade por Tipo de Veículo",
subtitle = "Média de vítimas por cada acidente registrado",
x = "",
y = "Média de Vítimas por Acidente"
) +
theme_minimal()Análise: Uma leitura direta do gráfico mostra que acidentes envolvendo motocicletas são, de longe, os mais severos: em média, cada ocorrência com moto gera mais de uma vítima (1,07). Muito próximos vêm os casos com ciclistas/ciclomotores (1,02 vítima por acidente). Ou seja, quando o usuário é pouco protegido fisicamente (moto ou bicicleta), a chance de haver pelo menos um ferido é praticamente garantida.
Já os acidentes com apenas automóvel apresentam a menor severidade média (0,34 vítima por acidente), indicando que boa parte desses registros são colisões de menor impacto, muitas vezes apenas com danos materiais. Situações com ônibus (0,54) e a categoria “Outros” (0,62) ficam em um patamar intermediário. Em termos de política pública, isso reforça a ideia de que motos e ciclistas são os grupos mais vulneráveis do sistema viário e deveriam ser foco prioritário de campanhas educativas, fiscalização específica (ex.: excesso de velocidade, uso de capacete) e intervenções de engenharia voltadas à proteção desses usuários (faixas exclusivas, redução de velocidade em corredores com alto fluxo de duas rodas, etc.).
Geografia dos Acidentes: Os Bairros Críticos
Por fim, identificamos espacialmente onde o problema é mais
agudo. Listamos os 10 bairros com maior frequência absoluta de
registros.
# Filtra e conta top 10 bairros
top_bairros <- dados_brutos |>
filter(!is.na(bairro)) |>
count(bairro, sort = TRUE) |>
slice_head(n = 10)
# Gráfico de barras ordenado
ggplot(top_bairros, aes(x = reorder(bairro, n), y = n)) +
geom_col(fill = "#34495e") +
coord_flip() +
labs(
title = "Top 10 Bairros com Mais Acidentes em Recife",
subtitle = "Acumulado do período 2020-2024",
x = "",
y = "Total de Ocorrências"
) +
theme_minimal()Análise: A distribuição espacial dos acidentes revela uma forte concentração em bairros com intensa movimentação urbana e presença de grandes corredores viários. Boa Viagem lidera com ampla margem, comportamento explicado pela combinação de fluxo elevado de residentes, turistas, comércio, bares e avenidas de grande porte, como a Domingos Ferreira e a Conselheiro Aguiar. Imbiribeira, Santo Amaro e Afogados também aparecem nas primeiras posições, reforçando o papel dos eixos de mobilidade e terminais de ônibus como pontos críticos para ocorrências de trânsito.
Bairros como Madalena, Boa Vista, Pina e Cordeiro completam a lista, sugerindo que regiões centrais ou próximas a corredores estruturadores da cidade acumulam maior exposição ao risco. Esses achados são relevantes para o planejamento urbano, pois indicam que intervenções localizadas, como melhoria de sinalização, revisão de limites de velocidade, redesenho de cruzamentos e reforço da fiscalização, podem produzir impactos significativos na redução de acidentes. Ao priorizar ações nesses bairros, gestores públicos podem maximizar os resultados com menor custo operacional.
Conclusões
5.1 Retomada do Problema e Metodologia
Este estudo buscou investigar a dinâmica dos acidentes de trânsito na cidade do Recife entre os anos de 2020 e 2024, um problema que impacta diretamente a mobilidade urbana, a saúde pública e a economia local. O objetivo central foi identificar padrões ocultos nos dados que pudessem explicar quando, onde e como esses eventos ocorrem, fornecendo insumos para decisões baseadas em evidências.
Para abordar essa questão, foram utilizados dados abertos
governamentais, submetidos a um rigoroso processo de limpeza e
padronização (Data Wrangling) utilizando a linguagem R e o ecossistema
tidyverse. A metodologia envolveu a unificação de cinco
bases anuais distintas, tratamento de inconsistências de formatação e
criação de novas variáveis temporais e categóricas, permitindo uma
análise exploratória robusta e multidimensional.
5.2 Síntese dos Principais Insights
A análise exploratória revelou padrões que não são evidentes apenas observando os registros brutos:
Resiliência e Retomada: A série histórica mostra a queda abrupta de acidentes em 2020 devido à pandemia, seguida por uma recuperação rápida e estabilização em níveis elevados nos anos posteriores. Isso indica que, com a retomada da circulação, os problemas estruturais do trânsito voltaram a aparecer com a mesma intensidade.
Horário de Maior Risco: A distribuição horária revela um pico claro de acidentes entre 7h e 10h, período correspondente ao deslocamento para trabalho e estudo. Esse padrão reforça que o risco está associado principalmente ao alto volume de tráfego, e não à madrugada, que, apesar de mais associada à gravidade, concentra muito menos ocorrências.
A Vulnerabilidade das Duas Rodas: A taxa média de vítimas por tipo de veículo mostra disparidade clara: motos (1,07) e ciclistas/ciclomotores (1,02) apresentam severidade muito superior a qualquer outro grupo. Já acidentes envolvendo apenas automóveis têm impacto bem menor (0,34). Isso destaca que motociclistas e ciclistas são os usuários mais expostos do sistema viário.
Gravidade Aumentada nos Fins de Semana: Embora o maior volume de acidentes ocorra nos dias úteis, a severidade média é mais alta aos sábados e domingos, indicando que, quando ocorrem fins de semana, os acidentes tendem a ser mais graves — possivelmente por maior velocidade, lazer noturno e menor fiscalização.
Concentração Espacial: A análise geográfica identificou que os acidentes se concentram em poucos bairros, especialmente Boa Viagem, Imbiribeira e outras regiões com grandes corredores urbanos. Isso mostra que o problema não é distribuído de forma homogênea, e que intervenções localizadas podem gerar redução significativa de ocorrências e vítimas.
5.3 Implicações para Gestores e Cidadãos
Os resultados obtidos oferecem diretrizes práticas para os “clientes” desta análise:
- Para a CTTU e Gestores Públicos: As ações de fiscalização e engenharia de tráfego devem priorizar os 10 bairros identificados, onde o retorno sobre o investimento (em redução de acidentes) seria maior. Além disso, campanhas educativas não devem focar apenas na “Lei Seca” (madrugada), mas também na direção defensiva durante os horários de pico comercial (manhã/tarde).
- Para o SAMU e Saúde Pública: O perfil de alta severidade dos acidentes com motocicletas reforça a necessidade de preparação específica para traumas ortopédicos e neurológicos, além da necessidade de políticas mais rígidas para habilitação e fiscalização de motociclistas.
- Para a Sociedade: O estudo evidencia que o risco está presente no deslocamento rotineiro (ir e vir do trabalho), alertando para a necessidade de atenção constante, não apenas em finais de semana ou feriados.
5.4 Limitações e Trabalhos Futuros
Apesar dos insights gerados, a análise possui limitações inerentes aos dados e ao escopo do projeto:
- Subnotificação: É provável que acidentes leves (sem vítimas) sejam subnotificados, especialmente em horários de menor movimento, o que pode enviesar a análise de volume total.
- Qualidade dos Dados: A presença de campos como “S/N” (Sem Número) em sinalização ou preenchimento inconsistente de causas prováveis limita a capacidade de inferir a culpabilidade ou a infraestrutura específica do local.
- Fatores Externos: Esta análise não cruzou os dados com informações meteorológicas (chuva) ou fluxo de veículos (frota circulante), o que permitiria calcular taxas de risco mais precisas (acidentes por veículo-km).
Como sugestão para trabalhos futuros, recomenda-se a aplicação de modelagem geoespacial para identificar cruzamentos críticos específicos (não apenas bairros) e o uso de técnicas de Machine Learning para tentar prever a gravidade do acidente com base nas características da via e do veículo, permitindo uma alocação mais eficiente de ambulâncias e recursos de resgate.