library(openxlsx)
library(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
datos <- read.xlsx("DerramesEEUU.xlsx", sheet = 1)
AnioAccidente <- as.numeric(datos$AnioAccidente)
AnioAccidente <- AnioAccidente[AnioAccidente >= 2010 & AnioAccidente <= 2016]
TDF <- table(AnioAccidente)
Tabla <- as.data.frame(TDF)
names(Tabla) <- c("Anio","ni")
Tabla$hi_porc <- round((Tabla$ni / sum(Tabla$ni))*100,2)
Tabla$Ni_asc <- cumsum(Tabla$ni)
Tabla$Ni_dsc <- rev(cumsum(rev(Tabla$ni)))
Tabla$Hi_asc <- round(cumsum(Tabla$hi_porc),3)
Tabla$Hi_dsc <- round(rev(cumsum(rev(Tabla$hi_porc))),3)
TDFFinal <- rbind(Tabla, data.frame(
Anio="TOTAL",
ni=sum(Tabla$ni),
hi_porc=100,
Ni_asc=" ",
Ni_dsc=" ",
Hi_asc=" ",
Hi_dsc=" "
))
library(gt)
TDFFinal %>%
gt() %>%
tab_header(
title = md("**Tabla N°1**"),
subtitle = md("**Distribución de accidentes por año (2010–2016)**")
) %>%
tab_source_note(source_note = md("Autor: Grupo 1"))
| Tabla N°1 | ||||||
| Distribución de accidentes por año (2010–2016) | ||||||
| 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 | ||||
| Autor: Grupo 1 | ||||||
barplot(Tabla$ni,
main="Cantidad de accidentes por año (2010–2016)",
xlab="Año",
ylab="Cantidad",
col="slategray1",
names.arg=Tabla$Anio,
las=1)
# 5. MODELO POISSON # probabilidades observadas
Tabla$hi <- Tabla$ni/sum(Tabla$ni)
Tabla$Clase <- 1:nrow(Tabla)
lambda <- sum(Tabla$Clase * Tabla$ni)/sum(Tabla$ni)
Fe <- dpois(Tabla$Clase, lambda)
barplot(rbind(Tabla$hi, Fe),
beside=TRUE,
col=c("slategray2","skyblue4"),
names.arg=Tabla$Anio,
main="Modelo Poisson vs Observado (2010–2016)",
xlab="Año",
ylab="Probabilidad")
legend("topright",
legend=c("Observado","Poisson"),
fill=c("slategray2","skyblue4"))
# 7. TEST DE PEARSON
# Frecuencias
Fo_p <- Tabla$hi
Fe_p <- Fe
# Correlación
Correlacion_p <- cor(Fo_p, Fe_p) * 100
cat("\nCorrelación Poisson =", round(Correlacion_p,2), "%\n")
##
## Correlación Poisson = 7.85 %
# Gráfica
plot(Fo_p, Fe_p,
main = "Gráfica No.7: Correlación modelo Poisson",
xlab = "Frecuencia Observada",
ylab = "Frecuencia Esperada",
col = "lightblue",
pch = 19,
cex = 1.5,
xlim = c(0, max(Fo_p)*1.1),
ylim = c(0, max(Fe_p)*1.1))
# Recta que pasa por el origen
modelo_origen <- lm(Fe_p ~ Fo_p - 1)
abline(modelo_origen, col = "red", lwd = 2)
# 8. TEST CHI CUADRADO
x2 <- sum((Tabla$hi-Fe)^2/Fe)
gl <- (nrow(Tabla)-1)-1
alpha <- 0.05
critico <- qchisq(1-alpha,gl)
x2
## [1] 0.211037
critico
## [1] 11.0705
if(x2 < critico){
resultado <- "Se acepta "
}else{
resultado <- "No se acepta"
}
resultado
## [1] "Se acepta "
Tabla_resumen <- data.frame(
Variable="Año accidente (2010–2016)",
Modelo="Poisson",
Chi_Cuadrado=round(x2,3),
Umbral=round(critico,3),
Resultado=resultado
)
Tabla_resumen %>%
gt() %>%
tab_header(
title=md("**Tabla N°2**"),
subtitle=md("**Resumen de pruebas del modelo Poisson**")
) %>%
tab_source_note(source_note = md("Autor: Grupo 1"))
| Tabla N°2 | ||||
| Resumen de pruebas del modelo Poisson | ||||
| Variable | Modelo | Chi_Cuadrado | Umbral | Resultado |
|---|---|---|---|---|
| Año accidente (2010–2016) | Poisson | 0.211 | 11.07 | Se acepta |
| Autor: Grupo 1 | ||||
clase_2016 <- Tabla$Clase[Tabla$Anio==2016]
prob_2016 <- dpois(clase_2016, lambda)
prob_2016
## [1] 0.06811865
cat("\nCONCLUSIONES\n")
##
## CONCLUSIONES
cat("\n1. El modelo de Poisson fue aplicado al periodo 2010–2016 para describir la ocurrencia anual de accidentes.\n")
##
## 1. El modelo de Poisson fue aplicado al periodo 2010–2016 para describir la ocurrencia anual de accidentes.
cat("\n2. El estadístico Chi-cuadrado calculado fue:", round(x2,3),
"y el valor crítico fue:", round(critico,3),".\n")
##
## 2. El estadístico Chi-cuadrado calculado fue: 0.211 y el valor crítico fue: 11.07 .
if(x2 < critico){
cat("\n3. Como el estadístico es menor que el valor crítico,se acepta y el modelo Poisson es adecuado.\n")
}else{
cat("\n3. Como el estadístico es mayor que el valor crítico, no se acepta y el modelo Poisson no es adecuado.\n")
}
##
## 3. Como el estadístico es menor que el valor crítico,se acepta y el modelo Poisson es adecuado.
cat("\n5. La probabilidad estimada de ocurrencia de accidentes en el año 2016 es:",
round(prob_2016*100,2),"%.\n")
##
## 5. La probabilidad estimada de ocurrencia de accidentes en el año 2016 es: 6.81 %.
cat("\n6. En conclusión, la frecuencia anual de accidentes puede modelarse como un proceso aleatorio de tasa media constante, consistente con un modelo de Poisson.\n")
##
## 6. En conclusión, la frecuencia anual de accidentes puede modelarse como un proceso aleatorio de tasa media constante, consistente con un modelo de Poisson.