Taxa Crítica de Acidentes

Este é um exercício para obtenção da taxa crítica de acidentes em cruzamentos.

Primeiramente é necessário criar a tabela de tipos de acidentes e pesos.

#tipos de Acidentes
acidente <- c("Danos Materiais", "Com Feridos", "Com Pedestres", "Com Fatais")
#peso dos acidentes
nivel_acidente <- c(1, 4, 6, 13)
#UPS ponderação conforme gravidade do acidente
ups <- cbind(nivel_acidente, acidente)
head(ups)
##      nivel_acidente acidente         
## [1,] "1"            "Danos Materiais"
## [2,] "4"            "Com Feridos"    
## [3,] "6"            "Com Pedestres"  
## [4,] "13"           "Com Fatais"

Base de Dados

Criamos registros simulados afim de avaliar o algorítimo.
De forma randômica criamos registros para cada tipo de acidente e por fim obtemos o número total de assidentes simulados.

#criamos registros simulados
registros <- rep(c(1,4,6,13), c(sample(1000:5000, 1), sample(500:1500, 1), sample(500:1000, 1), sample(50:200, 1))) 
registros <- as.data.frame(registros)
dim(registros)
## [1] 3795    1

Obtemos o número de ocorrencias de cada classe de acidente

conta <- c(sum(registros[,1] == 1), sum(registros[,1] == 4), sum(registros[,1] == 6), sum(registros[,1] == 13))
conta <- cbind(conta, ups)
conta
##      conta  nivel_acidente acidente         
## [1,] "1753" "1"            "Danos Materiais"
## [2,] "1120" "4"            "Com Feridos"    
## [3,] "793"  "6"            "Com Pedestres"  
## [4,] "129"  "13"           "Com Fatais"

Informamos o número de cruzamentos em questão

#setamos o numerio de cruzamentos
ncruz = 120

Análises

Obtemos o Índice Médio Ponderado:

#obtemos o indice medio ponderado
ip <- sum(registros) / ncruz
ip
## [1] 105.5667

Definimos o valor de K para alcançar o nível de confiançpa de 95%

#definimos K para um nível de confiança de 95%
k <- 1.645

Definimos orange de exposição. Para isso definimos um intervalo de exposição de 1 a 15000 VDM.

exposicao <- c(1:15000)
exposicao <- as.data.frame(exposicao)
summary(exposicao)
##    exposicao    
##  Min.   :    1  
##  1st Qu.: 3751  
##  Median : 7500  
##  Mean   : 7500  
##  3rd Qu.:11250  
##  Max.   :15000

Calculamos o Indice Crítico

exposicao$ic <- 0
exposicao$exposicao <- as.numeric(exposicao$exposicao)
exposicao$ic <- ip + k * ( sqrt(ip / exposicao$exposicao) - (0.5 / exposicao$exposicao) )

Plotamos os dados

library(ggplot2)
ggplot(exposicao, aes(x=exposicao, y=ic)) +
  geom_line(colour="green", linetype="dashed", size=1.5) + 
  geom_point(colour="red", size=1, shape=21, fill="white")

Para umunico cruzamento

criamos registro fake

registros <- rep(c(1,4,6,13), c(sample(1:80, 1), sample(1:50, 1), sample(1:30, 1), sample(1:5, 1))) 
registros <- as.data.frame(registros)
dim(registros)
## [1] 86  1
conta <- c(sum(registros[,1] == 1), sum(registros[,1] == 4), sum(registros[,1] == 6), sum(registros[,1] == 13))
conta <- cbind(conta, ups)
conta
##      conta nivel_acidente acidente         
## [1,] "49"  "1"            "Danos Materiais"
## [2,] "26"  "4"            "Com Feridos"    
## [3,] "7"   "6"            "Com Pedestres"  
## [4,] "4"   "13"           "Com Fatais"
#setamos o numerio de cruzamentos
ncruz = 1
#obtemos o indicede acidente  medio ponderado
ip <- sum(registros) / ncruz
ip
## [1] 247

definimos K para um nível de confiança de 95% = 1.645, 99,5% = 2.576 e para 90% = 1.282

k <- 1.645
exposicao <- c(1:2000)
exposicao <- as.data.frame(exposicao)
summary(exposicao)
##    exposicao     
##  Min.   :   1.0  
##  1st Qu.: 500.8  
##  Median :1000.5  
##  Mean   :1000.5  
##  3rd Qu.:1500.2  
##  Max.   :2000.0
exposicao$ic <- 0
exposicao$exposicao <- as.numeric(exposicao$exposicao)
exposicao$ic <- ip + k * ( sqrt(ip / exposicao$exposicao) - (0.5 / exposicao$exposicao) )
library(ggplot2)
ggplot(exposicao, aes(x=exposicao, y=ic)) +
  geom_line(colour="red", linetype="dashed", size=1.5) + 
  geom_point(colour="red", size=4, shape=21, fill="white")