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)
library(e1071)
datos_nuevoartes <- read_excel("datos_nuevoartes.xlsx")

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

N_total <- length(fatality)

2 DEFINICIÓN DE INTERVALOS REPRESENTATIVOS

Li <- c(0, 1, 2, 5, 10, 25, 50)
Ls <- c(0, 1, 4, 9, 24, 49, Inf)

MC <- c(0, 1, 3, 7, 17, 37, 75)

clases <- c(
  "0",
  "1",
  "2–4",
  "5–9",
  "10–24",
  "25–49",
  "≥50"
)

3 CÁLCULO DE FRECUENCIAS

ni <- numeric(length(Li))

for (i in seq_along(Li)) {
  if (is.infinite(Ls[i])) {
    ni[i] <- sum(fatality >= Li[i])
  } else {
    ni[i] <- sum(fatality >= Li[i] & fatality <= Ls[i])
  }
}

hi <- (ni / N_total) * 100

Ni_asc <- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))

Hi_asc <- cumsum(hi)
Hi_dsc <- rev(cumsum(rev(hi)))

4 TABLA DE FRECUENCIAS

4.1 Tabla de frecuencias simple

TDF_fatality <- data.frame(
  Clase = clases,
  Li = Li,
  Ls = ifelse(is.infinite(Ls), "∞", Ls),
  MC = MC,
  ni = ni,
  hi = hi,
  Ni_asc = Ni_asc,
  Ni_dsc = Ni_dsc,
  Hi_asc = Hi_asc,
  Hi_dsc = Hi_dsc
)

TDF_fatality <- rbind(
  TDF_fatality,
  data.frame(
    Clase = "TOTAL",
    Li = "",
    Ls = "",
    MC = "",
    ni = sum(ni),
    hi = 100,
    Ni_asc = "",
    Ni_dsc = "",
    Hi_asc = "",
    Hi_dsc = ""
  )
)

TDF_fatality
##   Clase Li Ls MC   ni          hi Ni_asc Ni_dsc           Hi_asc
## 1     0  0  0  0 7206  74.6890547   7206   9648 74.6890547263682
## 2     1  1  1  1  624   6.4676617   7830   2442 81.1567164179104
## 3   2–4  2  4  3  893   9.2558043   8723   1818 90.4125207296849
## 4   5–9  5  9  7  474   4.9129353   9197    925  95.325456053068
## 5 10–24 10 24 17  299   3.0990879   9496    451  98.424543946932
## 6 25–49 25 49 37   83   0.8602819   9579    152 99.2848258706468
## 7   ≥50 50  ∞ 75   69   0.7151741   9648     69              100
## 8 TOTAL          9648 100.0000000                               
##              Hi_dsc
## 1               100
## 2  25.3109452736318
## 3  18.8432835820896
## 4  9.58747927031509
## 5  4.67454394693201
## 6  1.57545605306799
## 7 0.715174129353234
## 8

4.2 Tabla de presentación

tabla_fatality <- TDF_fatality %>%
  mutate(
    hi = round(as.numeric(hi), 2),
    Hi_asc = round(as.numeric(Hi_asc), 2)
  ) %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 1**"),
    subtitle = md("Distribución de frecuencias de la variable Fatality Count")
  ) %>%
  cols_label(
    Clase = "Clase",
    Li = "Límite inferior",
    Ls = "Límite superior",
    MC = "Marca de clase",
    ni = "Frecuencia absoluta (ni)",
    hi = "Frecuencia relativa (%)",
    Ni_asc = "Frecuencia acumulada (Ni)",
    Hi_asc = "Frecuencia relativa acumulada (%)"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = Clase == "TOTAL")
  ) %>%
  tab_source_note(
    source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
  )

tabla_fatality
Tabla N° 1
Distribución de frecuencias de la variable Fatality Count
Clase Límite inferior Límite superior Marca de clase Frecuencia absoluta (ni) Frecuencia relativa (%) Frecuencia acumulada (Ni) Ni_dsc Frecuencia relativa acumulada (%) Hi_dsc
0 0 0 0 7206 74.69 7206 9648 74.69 100
1 1 1 1 624 6.47 7830 2442 81.16 25.3109452736318
2–4 2 4 3 893 9.26 8723 1818 90.41 18.8432835820896
5–9 5 9 7 474 4.91 9197 925 95.33 9.58747927031509
10–24 10 24 17 299 3.10 9496 451 98.42 4.67454394693201
25–49 25 49 37 83 0.86 9579 152 99.28 1.57545605306799
≥50 50 75 69 0.72 9648 69 100.00 0.715174129353234
TOTAL 9648 100.00 NA
Elaborado por: Grupo 2 – Carrera de Geología

5 HISTOGRAMAS

hist(
  fatality,
  col = "grey",
  main = "Gráfica 1: Histograma de frecuencia absoluta de fatality_count",
  xlab = "Número de fallecidos",
  ylab = "Frecuencia (ni)"
)

hist(
  fatality,
  freq = FALSE,
  col = "grey",
  main = "Gráfica 2: Histograma de frecuencia relativa de fatality_count",
  xlab = "Número de fallecidos",
  ylab = "Densidad"
)

6 DIAGRAMA DE CAJA

boxplot(
  fatality,
  horizontal = TRUE,
  col = "lightgrey",
  main = "Gráfica 3: Diagrama de caja de fatality_count",
  xlab = "Número de fallecidos"
)

7 DIAGRAMA DE OJIVAS COMBINADAS

par(mar = c(5, 5, 4, 8))

plot(
  Li,
  Ni_dsc,
  type = "b",
  pch = 16,
  col = "darkblue",
  xlab = "Número de fallecidos",
  ylab = "Frecuencia acumulada (ni)",
  main = "Gráfica 4: Ojivas combinadas de fatality_count",
  ylim = c(0, N_total)
)

lines(
  ifelse(is.infinite(Ls), max(fatality), Ls),
  Ni_asc,
  type = "b",
  pch = 17,
  col = "black"
)

legend(
  "topright",
  legend = c("Ojiva descendente (ni ≥)", "Ojiva ascendente (ni ≤)"),
  col = c("darkblue", "black"),
  pch = c(16, 17),
  bty = "n"
)

8 INDICADORES ESTADÍSTICOS

x_bar <- mean(fatality)
Me    <- median(fatality)
Mo    <- as.numeric(names(sort(table(fatality), decreasing = TRUE)[1]))

SD <- sd(fatality)
CV <- (SD / x_bar) * 100

As <- skewness(fatality)
K  <- kurtosis(fatality)

8.1 Tabla de indicadores

tabla_indicadores <- data.frame(
  Variable = "Fatality Count",
  Min = min(fatality),
  Max = max(fatality),
  Media = round(x_bar, 2),
  Mediana = Me,
  Moda = Mo,
  `Desv. Est.` = round(SD, 2),
  `CV (%)` = round(CV, 2),
  Asimetría = round(As, 2),
  Curtosis = round(K, 2)
)

tabla_indicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 2**"),
    subtitle = md("Indicadores estadísticos de la variable Fatality Count")
  ) %>%
  tab_source_note(
    source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
  )
Tabla N° 2
Indicadores estadísticos de la variable Fatality Count
Variable Min Max Media Mediana Moda Desv..Est. CV.... Asimetría Curtosis
Fatality Count 0 5000 3.22 0 0 59.89 1860.15 67.58 5255.77
Elaborado por: Grupo 2 – Carrera de Geología

9 DETECCIÓN DE OUTLIERS

Q1 <- quantile(fatality, 0.25)
Q3 <- quantile(fatality, 0.75)
IQR_f <- Q3 - Q1

lim_inf <- Q1 - 1.5 * IQR_f
lim_sup <- Q3 + 1.5 * IQR_f

outliers <- fatality[fatality < lim_inf | fatality > lim_sup]

9.1 Tabla de Outliers

tabla_outliers <- data.frame(
  Variable = "Fatality Count",
  Outliers_Detectados = ifelse(length(outliers) == 0, "No se detectan", length(outliers)),
  Limite_Inferior = round(lim_inf, 2),
  Limite_Superior = round(lim_sup, 2),
  Q1 = Q1,
  Q3 = Q3
)

tabla_outliers %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 3**"),
    subtitle = md("Detección de outliers – Método IQR")
  ) %>%
  tab_source_note(
    source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
  )
Tabla N° 3
Detección de outliers – Método IQR
Variable Outliers_Detectados Limite_Inferior Limite_Superior Q1 Q3
Fatality Count 1413 -1.5 2.5 0 1
Elaborado por: Grupo 2 – Carrera de Geología

10 Conclusión

La variable fallecidos fluctúa desde 0 hasta 500. Los valores están centrados en una mediana de 0, lo que indica que la mayoría de los eventos no registran víctimas, aunque posee una media de 3.22 influenciada por valores extremos. Con una desviación estándar de 13.52, representa un conjunto muy heterogéneo. Los valores atípicos se encuentran en la parte derecha de la distribución, representando eventos catastróficos. La acumulación de valores es masiva en el límite inferior (0). Esta variable es crítica para la gestión de riesgos y la evaluación del impacto social de los desastres naturales.