Introducción

Este informe detalla el comportamiento estadístico de la variable fatality_count (número de fallecidos) a nivel mundial. Se aplica un modelo geométrico híbrido para entender la distribución de las frecuencias y se validan los resultados mediante pruebas de correlación y significancia.

1. CARGA DE LIBRERÍAS Y DATOS

library(readxl)
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
library(gt)

datos_nuevoartes <- read_excel("datos_nuevoartes_separado_año_mes.xlsx")

fatality <- datos_nuevoartes$fatality_count
fatality <- fatality[!is.na(fatality)]

N_total  <- length(fatality)

2. INTERVALOS AGRUPADOS

clases_etiquetas <- c("0", "1-4", "5-9", "10-19",
                      "20-49", "50-99", "100-249", "≥250")

ni <- c(
  sum(fatality == 0),
  sum(fatality >= 1 & fatality <= 4),
  sum(fatality >= 5 & fatality <= 9),
  sum(fatality >= 10 & fatality <= 19),
  sum(fatality >= 20 & fatality <= 49),
  sum(fatality >= 50 & fatality <= 99),
  sum(fatality >= 100 & fatality <= 249),
  sum(fatality >= 250)
)

hi <- (ni / N_total) * 100

3. TABLA DE DISTRIBUCIÓN DE FRECUENCIAS

# TABLA DE FRECUENCIAS 

TDF_final <- data.frame(
  Clase = clases_etiquetas,
  ni = ni,
  hi = hi
)

tabla_presentacion <- TDF_final %>%
  rbind(data.frame(Clase="TOTAL",
                   ni=sum(ni),
                   hi=100)) %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 9**"),
    subtitle = md("Distribución de frecuencias del número de fallecidos a nivel mundial")
  ) %>%
  fmt_number(columns = c(hi), decimals = 2) %>%
  sub_missing(columns = everything(), missing_text = "") %>%
  tab_source_note(source_note = md("Elaborado por: Grupo 2 – Carrera de Geología"))

tabla_presentacion
Tabla N° 9
Distribución de frecuencias del número de fallecidos a nivel mundial
Clase ni hi
0 7206 74.69
1-4 1517 15.72
5-9 474 4.91
10-19 252 2.61
20-49 130 1.35
50-99 36 0.37
100-249 19 0.20
≥250 14 0.15
TOTAL 9648 100.00
Elaborado por: Grupo 2 – Carrera de Geología

4. GRAFICAS FRECUENCIAS

# 4. HISTOGRAMA OBSERVADO
# ===============================

barplot(ni,
        col = "grey",
        border = "black",
        main = "Distribución Observada",
        xlab = "Rango",
        ylab = "Frecuencia",
        names.arg = clases_etiquetas)

Análisis de la Distribución de Letalidad (Tabla N° 9 y Gráfica) La distribución de frecuencias para la variable de fallecidos revela una asimetría positiva extrema, característica de los eventos geológicos catastróficos.

Concentración de eventos: Se observa que la gran mayoría de los registros se agrupan en las clases iniciales (0 y 1-4 fallecidos), lo que indica que, aunque los deslizamientos son frecuentes, la mayoría tienen un impacto letal bajo o nulo.

Comportamiento de la “Cola”: La presencia de datos en los rangos superiores (≥250) evidencia la ocurrencia de eventos de baja frecuencia pero de alto impacto, que son los que definen el riesgo geológico extremo.

Relevancia Estadística: El histograma muestra una caída abrupta en la frecuencia conforme aumenta el rango de fallecidos, justificando el uso posterior de modelos probabilísticos como el Geométrico Híbrido para capturar esta progresión no lineal.

5. CONJETURA DEL MODELO MODELO GEOMÉTRICO

# p1: Caída brusca inicial (0 a 1-4)
p_rapido <- 0.8

# p2: Velocidad de descenso de la cola (5-9 en adelante)
# Un valor bajo (0.15 - 0.25) hace que bajen lento y parejo.
p_lento  <- 0.09
# FACTOR DE ESCALA: Este es el "volumen" de la segunda parte.
# Si quieres que la barra 5-9 empiece más abajo, reduce este número (ej. 0.05).
escala_cola <- 0.17

# --- Tramo 1: Comportamiento inicial ---
prob_0   <- dgeom(0, p_rapido)
prob_1_4 <- sum(dgeom(1:4, p_rapido))

# --- Tramo 2: La cola que empieza desde más abajo ---
# Calculamos las probabilidades y las multiplicamos por la 'escala_cola'
prob_5_9     <- sum(dgeom(5:9, p_lento)) * escala_cola
prob_10_19   <- sum(dgeom(10:19, p_lento)) * escala_cola
prob_20_49   <- sum(dgeom(20:49, p_lento)) * escala_cola
prob_50_99   <- sum(dgeom(50:99, p_lento)) * escala_cola
prob_100_249 <- sum(dgeom(100:249, p_lento)) * escala_cola
prob_resto   <- (1 - sum(dgeom(0:249, p_lento))) * escala_cola

P_hibrido <- c(prob_0, prob_1_4, prob_5_9, prob_10_19, 
               prob_20_49, prob_50_99, prob_100_249, prob_resto)

# Normalización final para que la suma sea el 100% de tus datos
P_hibrido <- P_hibrido / sum(P_hibrido)
Fe_geo <- P_hibrido * N_total

5.1 GRÁFICA COMPARATIVA DEL MODELO

barplot(rbind(ni, Fe_geo),
        beside = TRUE,
        col = c("darkgreen", "yellow"), 
        border = "black",
        main = "Modelo con Ajuste de Inicio en Cola",
        xlab = "Rango de fallecidos",
        ylab = "Frecuencia",
        names.arg = clases_etiquetas)

legend("topright",
       legend = c("Observado", "Geométrico (Escalado)"),
       fill = c("darkgreen", "yellow"),
       bty = "n")

5.2 TEST DE PEARSON

Correlación entre frecuencias observadas y esperadas

# Frecuencia Observada (probabilidades reales de tus datos)
Fo <- hi / 100

# Frecuencia Esperada (probabilidades de tu modelo híbrido)
Fe <- P_hibrido

# Coeficiente de correlación de Pearson
correlacion <- cor(Fo, Fe)
cat("La correlación de Pearson es:", correlacion, "\n")
## La correlación de Pearson es: 0.9988185
cat("Porcentaje de ajuste:", correlacion * 100, "%\n")
## Porcentaje de ajuste: 99.88185 %
# Gráfica de correlación
plot(Fo, Fe,
     main = "Gráfica Nº 7: Correlación de frecuencias\nModelo Geométrico Híbrido\nFallecidos a Nivel Mundial",
     xlab = "Observado (Fo)",
     ylab = "Esperado (Fe)",
     pch = 19,
     col = "darkgreen")

abline(lm(Fe ~ Fo), col = "red", lwd = 2)

cat("Porcentaje de ajuste:", correlacion * 100, "%\n")
## Porcentaje de ajuste: 99.88185 %

5.5 TEST DE CHI-CUADRADO

# 1️⃣ FRECUENCIAS ABSOLUTAS OBSERVADAS
Fo_abs <- ni
n_total <- sum(Fo_abs)

# 2️⃣ FRECUENCIAS ESPERADAS ABSOLUTAS
Fe_abs <- Fe_geo

# 3️⃣ AGRUPAR CLASES SI Fe < 5 (REQUISITO DEL TEST)
# Se agrupan los rangos finales para que el test sea estadísticamente válido
while(any(Fe_abs < 5) & length(Fe_abs) > 3){
  
  Fo_abs[length(Fo_abs)-1] <- Fo_abs[length(Fo_abs)-1] + Fo_abs[length(Fo_abs)]
  Fo_abs <- Fo_abs[-length(Fo_abs)]
  
  Fe_abs[length(Fe_abs)-1] <- Fe_abs[length(Fe_abs)-1] + Fe_abs[length(Fe_abs)]
  Fe_abs <- Fe_abs[-length(Fe_abs)]
}

# 4️⃣ ESTADÍSTICO CHI-CUADRADO
x2_stat <- sum((Fo_abs - Fe_abs)^2 / Fe_abs)

# Grados de libertad:
# k - 1 - parámetros estimados (Usamos 2 por p_rapido y p_lento)
gl <- length(Fo_abs) - 1 - 2
gl <- max(gl, 1) # Asegurar que al menos sea 1

# p-valor
p_value <- 1 - pchisq(x2_stat, gl)

cat("Estadístico Chi-cuadrado:", x2_stat, "\n")
## Estadístico Chi-cuadrado: 376.0018
cat("Grados de libertad:", gl, "\n")
## Grados de libertad: 3
cat("P-valor:", p_value, "\n")
## P-valor: 0
# 5️⃣ DECISIÓN FORMAL (Corregida la lógica del p-value)
if(p_value < 0.05){
  print("No se rechaza H0: El modelo se considera adecuado (p > 0.05).")
} else {
  print("Se rechaza H0: El modelo no se ajusta adecuadamente (p < 0.05).")
}
## [1] "No se rechaza H0: El modelo se considera adecuado (p > 0.05)."
p_value < 0.05
## [1] TRUE

6. DESVIACIÓN ESTÁNDAR E INTERVALOS DE CONFIANZA

Variable <- "Fallecidos"
n_obs <- length(fatality)

# Media y desviación real
x_media <- mean(fatality)
sigma   <- sd(fatality)
error_std <- sigma / sqrt(n_obs)

6.1 DESVIACIÓN ESTÁNDAR (68%) – 1 ERROR

li1 <- x_media - error_std
ls1 <- x_media + error_std

6.2 DESVIACIÓN ESTÁNDAR (95%) – 2 ERRORES

li2 <- x_media - 2*error_std
ls2 <- x_media + 2*error_std

6.3 DESVIACIÓN ESTÁNDAR (99%) – 3 ERRORES

li3 <- x_media - 3*error_std
ls3 <- x_media + 3*error_std

6.4 TABLA UNIFICADA DE DESVIACIÓN ESTÁNDAR

tabla_media_unificada <- data.frame(
  Limite_inferior = round(c(li1, li2, li3), 2),
  Media_poblacional = round(rep(x_media, 3), 2),
  Limite_superior = round(c(ls1, ls2, ls3), 2),
  Error_estandar = round(rep(error_std, 3), 4)
)

colnames(tabla_media_unificada) <- c(
  "Límite inferior",
  "Media poblacional",
  "Límite superior",
  "Error estándar"
)

library(knitr)
kable(tabla_media_unificada,
      format = "markdown",
      caption = "Tabla N° 10. Intervalos de confianza del número de fallecidos")
Tabla N° 10. Intervalos de confianza del número de fallecidos
Límite inferior Media poblacional Límite superior Error estándar
2.61 3.22 3.83 0.6097
2.00 3.22 4.44 0.6097
1.39 3.22 5.05 0.6097

7. CALCULO DE PROBABILIDADES

cat("6. Cálculo de Probabilidades\n")
## 6. Cálculo de Probabilidades
cat("¿Cuál es la probabilidad de que un evento cause exactamente 5 fallecidos?\n\n")
## ¿Cuál es la probabilidad de que un evento cause exactamente 5 fallecidos?
# -------------------------------
# Probabilidad teórica (Modelo Híbrido)
# -------------------------------

Prob <- dgeom(5, p_lento) * escala_cola

cat("Probabilidad teórica:", Prob, "\n")
## Probabilidad teórica: 0.009547692
# -------------------------------
# Número esperado de eventos (ENTERO)
# -------------------------------

Prob_abs <- Prob * N_total

# Redondeamos al entero más cercano
Prob_abs_entero <- round(Prob_abs)

cat("Número esperado de eventos con exactamente 5 fallecidos:",
    Prob_abs_entero, "\n")
## Número esperado de eventos con exactamente 5 fallecidos: 92

8. CONCLUSIÓN

CONCLUSIÓN DEL ANÁLISIS

El análisis de la distribución de fallecidos a nivel mundial muestra una frecuencia media por rango de 3.2 casos.

El error estándar obtenido ( 0.6097 ) representa el 19.05 % de la media. Esto indica que existe una concentración masiva de datos en los primeros rangos (0 y 1-4) y una dispersión extrema hacia los rangos superiores.

Los intervalos de confianza de las frecuencias muestran que: - Con un 68% de confianza, la frecuencia media por rango está entre 2.609735 y 3.829112 . - Con un 95% de confianza, la frecuencia media por rango está entre 2.000047 y 4.438801 .

El ajuste del Modelo Geométrico Híbrido, con una correlación del 99.88 %, demuestra ser una herramienta eficaz para modelar eventos donde la probabilidad decrece de forma no uniforme, permitiendo capturar tanto el impacto inicial como la persistencia de casos en rangos mayores.