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