library(openxlsx)
library(dplyr)
library(gt)
setwd("/cloud/project/")
datos<-read.csv("DerramesEEUU.csv", header = TRUE, sep=";" , dec=",",na.strings ="-")
AnioAccidente <- as.numeric(datos$AnioAccidente)
# ELIMINAR SOLO 2017
AnioAccidente <- AnioAccidente[AnioAccidente != 2017]
TDFAnioAccidente <- table(AnioAccidente)
TablaAnioAccidente <- as.data.frame(TDFAnioAccidente)
names(TablaAnioAccidente) <- c("Anio","ni")
TablaAnioAccidente$hi_porc <- round((TablaAnioAccidente$ni /
sum(TablaAnioAccidente$ni))*100,2)
TablaAnioAccidente$Ni_asc <- cumsum(TablaAnioAccidente$ni)
TablaAnioAccidente$Ni_dsc <- rev(cumsum(rev(TablaAnioAccidente$ni)))
TablaAnioAccidente$Hi_asc <- round(cumsum(TablaAnioAccidente$hi_porc),3)
TablaAnioAccidente$Hi_dsc <- round(rev(cumsum(rev(TablaAnioAccidente$hi_porc))),3)
TDFFinalAnioAccidente <- rbind(
TablaAnioAccidente,
data.frame(
Anio="TOTAL",
ni=sum(TablaAnioAccidente$ni),
hi_porc=100,
Ni_asc=" ",
Ni_dsc=" ",
Hi_asc=" ",
Hi_dsc=" "
)
)
TDFFinalAnioAccidente %>%
gt() %>%
tab_header(
title = md("**Tabla N°1**"),
subtitle = md("Distribución de accidentes por año")
)
| Tabla N°1 | ||||||
| Distribución de accidentes por año | ||||||
| Anio | ni | hi_porc | Ni_asc | Ni_dsc | Hi_asc | Hi_dsc |
|---|---|---|---|---|---|---|
| 2010 | 346 | 12.55 | 346 | 2758 | 12.55 | 100 |
| 2011 | 336 | 12.18 | 682 | 2412 | 24.73 | 87.45 |
| 2012 | 362 | 13.13 | 1044 | 2076 | 37.86 | 75.27 |
| 2013 | 400 | 14.50 | 1444 | 1714 | 52.36 | 62.14 |
| 2014 | 447 | 16.21 | 1891 | 1314 | 68.57 | 47.64 |
| 2015 | 453 | 16.42 | 2344 | 867 | 84.99 | 31.43 |
| 2016 | 414 | 15.01 | 2758 | 414 | 100 | 15.01 |
| TOTAL | 2758 | 100.00 | ||||
par(mar=c(6,6,4,2))
barplot(TablaAnioAccidente$ni,
main="Gráfica No.1: Cantidad de accidentes por año",
xlab="Año",
ylab="Cantidad",
col="slategray1",
names.arg=TablaAnioAccidente$Anio,
las=1)
Accidentes_2014_2017 <- subset(
AnioAccidente,
AnioAccidente >= 2014 & AnioAccidente <= 2017
)
TDF_2014_2017 <- table(Accidentes_2014_2017)
Tabla_2014_2017 <- as.data.frame(TDF_2014_2017)
names(Tabla_2014_2017) <- c("Anio","ni2")
Tabla_2014_2017$hi2 <-
Tabla_2014_2017$ni2 /
sum(Tabla_2014_2017$ni2)
barplot(Tabla_2014_2017$hi2,
main="Gráfica No.5: Probabilidad (2014–2017)",
xlab="Año",
ylab="Probabilidad",
names.arg=Tabla_2014_2017$Anio,
col="slategray2")
Tabla_2014_2017$Clase <- 1:nrow(Tabla_2014_2017)
lambda <- sum(Tabla_2014_2017$Clase*Tabla_2014_2017$ni2) /
sum(Tabla_2014_2017$ni2)
Fe_p <- dpois(Tabla_2014_2017$Clase,lambda)
Fo_p <- Tabla_2014_2017$hi2
barplot(rbind(Fo_p,Fe_p),
beside=TRUE,
main="Gráfica No.6: Poisson vs Observado",
xlab="Año",
ylab="Probabilidad",
names.arg=Tabla_2014_2017$Anio,
col=c("slategray2","skyblue4"))
legend("topright",
legend=c("Observado","Poisson"),
fill=c("slategray2","skyblue4"))
Correlacion_p <- cor(Fo_p,Fe_p)*100
cat("Correlación Poisson =",Correlacion_p,"%")
## Correlación Poisson = 98.47304 %
plot(Fo_p,Fe_p,
main="Gráfica No.7: Correlación modelo Poisson",
xlab="Frecuencia Observada",
ylab="Frecuencia Esperada",
col="slategray2",
pch=19)
abline(lm(Fe_p~Fo_p),col="red",lwd=2)
x2_p <- sum((Fo_p-Fe_p)^2/Fe_p)
gl_p <- (nrow(Tabla_2014_2017)-1)-1
umbral_p <- qchisq(0.95,gl_p)
cat("Chi2 =",x2_p,"\n")
## Chi2 = 0.1414731
cat("Umbral =",umbral_p)
## Umbral = 3.841459
Para el período 2014–2017, el modelo de Poisson mostró un excelente ajuste a los datos, con una correlación de Pearson del 98.47 % y un estadístico de chi-cuadrado de 0.141, muy inferior al valor crítico de 3.84. Estos resultados indican que la distribución de Poisson representa adecuadamente el comportamiento de los accidentes en este intervalo.