Modelo Poisson- Año de Accidente

1.Librerías necesarias

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

2.Cargar datos

datos <- read.xlsx("DerramesEEUU.xlsx", sheet = 1)

2.1- FILTRAR SOLO AÑOS 2010–2016

AnioAccidente <- as.numeric(datos$AnioAccidente)
AnioAccidente <- AnioAccidente[AnioAccidente >= 2010 & AnioAccidente <= 2016]

3. TABLA DE FRECUENCIAS

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

4. GRÁFICA FRECUENCIAS

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

5.1-Probabilidades observadas

Tabla$hi <- Tabla$ni/sum(Tabla$ni)

5.2-Clases consecutivas

Tabla$Clase <- 1:nrow(Tabla)

5.3-Lambda

lambda <- sum(Tabla$Clase * Tabla$ni)/sum(Tabla$ni)

5.4-Probabilidades esperadas poisson

Fe <- dpois(Tabla$Clase, lambda)

6. GRÁFICA MODELO VS OBSERVADO

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

plot(Tabla$hi,Fe,
     main="Correlación Observado vs Esperado",
     xlab="Observado",
     ylab="Esperado",
     pch=19,
     col="slategray2")

abline(lm(Fe~Tabla$hi),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

8.1-decisión

if(x2 < critico){
  resultado <- "No se rechaza H0"
}else{
  resultado <- "Se rechaza H0"
}

resultado
## [1] "No se rechaza H0"

9. TABLA RESUMEN TEST

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 No se rechaza H0
Autor: Grupo 1

10. PROBABILIDAD PARA 2016

clase_2016 <- Tabla$Clase[Tabla$Anio==2016]
prob_2016 <- dpois(clase_2016, lambda)
prob_2016
## [1] 0.06811865

11. CONCLUSIONES AUTOMÁTICAS

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, no se rechaza H0 y el modelo Poisson es adecuado.\n")
}else{
  cat("\n3. Como el estadístico es mayor que el valor crítico, se rechaza H0 y el modelo Poisson no es adecuado.\n")
}
## 
## 3. Como el estadístico es menor que el valor crítico, no se rechaza H0 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.