Carga de datos y librerías Extraer la variable Conclusión

1. CARGA DE DATOS Y LIBRERÍAS

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")

2. EXTRAER LAS VARIABLES

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

# Se conservan únicamente los eventos con al menos un fallecido
fatality <- fatality_raw[fatality_raw > 0]

N_total <- length(fatality)

3. CONTEO

Para esta variable se excluyeron los registros con cero fallecidos para analizar únicamente los deslizamientos que ocasionaron pérdidas humanas.

3.1 Parámetros de clasificación

# Número de observaciones
N_total <- length(fatality)

# Valores extremos
xmin <- min(fatality)
xmax <- max(fatality)

# Rango
R <- xmax - xmin

# Número de clases (Regla de Sturges)
k <- ceiling(1 + 3.322 * log10(N_total))

# Amplitud de clase
A <- ceiling(R / k)

parametros <- data.frame(
  Observaciones = N_total,
  Minimo = xmin,
  Maximo = xmax,
  Rango = R,
  Clases_Sturges = k,
  Amplitud = A
)

parametros
##   Observaciones Minimo Maximo Rango Clases_Sturges Amplitud
## 1          2447      1    500   499             13       39

3.2 Definición de clases

# Límites inferiores
Li <- xmin + (0:(k-1))*A

# Límites superiores
Ls <- Li + A

# El último intervalo termina en el máximo
Ls[k] <- xmax

# Etiquetas
clases_etiquetas <- paste0(Li," - ",Ls)

# Marcas de clase
MC <- round((Li+Ls)/2,2)

3.3 Cálculo de frecuencias

breaks <- c(Li, xmax)

histograma <- hist(
  fatality,
  breaks = breaks,
  include.lowest = TRUE,
  right = FALSE,
  plot = FALSE
)
ni <- histograma$counts

hi <- ni/sum(ni)*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_final <- data.frame(
  Clase = clases_etiquetas,
  Li = Li,
  Ls = Ls,
  MC = MC,
  ni = ni,
  hi = hi,
  Ni_asc = Ni_asc,
  Ni_dsc = Ni_dsc,
  Hi_asc = Hi_asc,
  Hi_dsc = Hi_dsc
)

4.2 Tabla de presentación

tabla_presentacion <- TDF_final %>%
  rbind(
    data.frame(
      Clase = "TOTAL",
      Li = NA,
      Ls = NA,
      MC = NA,
      ni = sum(ni),
      hi = 100,
      Ni_asc = NA,
      Ni_dsc = NA,
      Hi_asc = NA,
      Hi_dsc = NA
    )
  ) %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 12**"),
    subtitle = md(
      "Distribución de frecuencias del número de fallecidos a nivel mundial (eventos mortales)"
    )
  ) %>%
  fmt_number(
    columns = c(MC,hi,Hi_asc,Hi_dsc),
    decimals = 2
  ) %>%
  sub_missing(
    columns = everything(),
    missing_text = ""
  ) %>%
  cols_label(
    Clase = "Rango",
    Li = "Li",
    Ls = "Ls",
    MC = "MC",
    ni = "ni",
    hi = "hi (%)",
    Ni_asc = "Ascendente",
    Ni_dsc = "Descendente",
    Hi_asc = "Ascendente",
    Hi_dsc = "Descendente"
  ) %>%
  tab_spanner(
    label="NI",
    columns=c(Ni_asc,Ni_dsc)
  ) %>%
  tab_spanner(
    label="HI (%)",
    columns=c(Hi_asc,Hi_dsc)
  ) %>%
  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_presentacion
Tabla N° 12
Distribución de frecuencias del número de fallecidos a nivel mundial (eventos mortales)
Rango Li Ls MC ni hi (%)
NI
HI (%)
Ascendente Descendente Ascendente Descendente
1 - 40 1 40 20.50 1646 67.27 1646 2447 67.27 100.00
40 - 79 40 79 59.50 550 22.48 2196 801 89.74 32.73
79 - 118 79 118 98.50 151 6.17 2347 251 95.91 10.26
118 - 157 118 157 137.50 36 1.47 2383 100 97.38 4.09
157 - 196 157 196 176.50 24 0.98 2407 64 98.37 2.62
196 - 235 196 235 215.50 8 0.33 2415 40 98.69 1.63
235 - 274 235 274 254.50 7 0.29 2422 32 98.98 1.31
274 - 313 274 313 293.50 6 0.25 2428 25 99.22 1.02
313 - 352 313 352 332.50 7 0.29 2435 19 99.51 0.78
352 - 391 352 391 371.50 3 0.12 2438 12 99.63 0.49
391 - 430 391 430 410.50 2 0.08 2440 9 99.71 0.37
430 - 469 430 469 449.50 4 0.16 2444 7 99.88 0.29
469 - 500 469 500 484.50 3 0.12 2447 3 100.00 0.12
TOTAL


2447 100.00



Elaborado por: Grupo 2 – Carrera de Geología

5. GRÁFICAS

5.1 Distribución local de fallecidos en deslizamientos a nivel mundial

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

max_ni_real <- max(ni)

pos_x <- barplot(
  ni,
  col = "grey",
  border = "black",
  space = 0,
  las = 1,
  ylim = c(0, max_ni_real),
  yaxt = "n",
  xaxt = "n",
  main = "Gráfica 19: Distribución local de fallecidos en deslizamientos\n a nivel mundial",
  xlab = "",
  ylab = "Cantidad"
)

ticks_y_ni <- pretty(c(0,max_ni_real))

axis(
  side = 2,
  at = ticks_y_ni,
  labels = ticks_y_ni,
  las = 1
)

axis(
  side = 1,
  at = pos_x,
  labels = clases_etiquetas,
  las = 2,
  cex.axis = 0.75
)
mtext("Número de fallecidos", side = 1, line = 6, cex = 1)

text(
  pos_x,
  ni,
  labels = ni,
  pos = 3,
  cex = 0.8,
  font = 2
)

5.2 Distribución global de fallecidos en deslizamientos a nivel mundial

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

n_max_global <- N_total

barplot(
  ni,
  col="grey",
  border="black",
  space=0,
  las=1,
  ylim=c(0,n_max_global*1.10),
  yaxt="n",
  xaxt="n",
  main="Gráfica 20: Distribución global de fallecidos en deslizamientos\n a nivel mundial",
  xlab="",
  ylab="Cantidad"
)
mtext("Número de fallecidos", side = 1, line = 5, cex = 1)

ticks_global <- pretty(c(0,n_max_global))

axis(
  2,
  at=ticks_global,
  labels=ticks_global,
  las=1
)

axis(
  1,
  at=pos_x,
  labels=clases_etiquetas,
  las=2,
  cex.axis=.75
)

abline(
  h=N_total,
  col="red",
  lty=2
)

text(
  pos_x,
  ni,
  labels=ni,
  pos=3,
  cex=.8,
  font=2
)

5.3 Distribución local de fallecidos en deslizamientos a nivel mundial

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

max_hi <- max(hi)

barplot(
  hi,
  col="#CDB79E",
  border="black",
  space=0,
  las=1,
  ylim=c(0,max_hi*1.10),
  yaxt="n",
  xaxt="n",
  main="Gráfica 21: Distribución local de fallecidos en deslizamientos\n a nivel mundial",
  xlab="",
  ylab="Porcentaje (%)"
)

ticks_hi <- pretty(c(0,max_hi))

axis(
  2,
  at=ticks_hi,
  labels=round(ticks_hi,2),
  las=1
)
mtext("Número de fallecidos", side = 1, line = 5, cex = 1)

axis(
  1,
  at=pos_x,
  labels=clases_etiquetas,
  las=2,
  cex.axis=.75
)

text(
  pos_x,
  hi,
  labels=round(hi,2),
  pos=3,
  cex=.8,
  font=2
)

5.4 Distribución global de fallecidos en deslizamientos a nivel mundial

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

barplot(
  hi,
  col="#CDB79E",
  border="black",
  space=0,
  las=1,
  ylim=c(0,100),
  yaxt="n",
  xaxt="n",
  main="Gráfica 22: Distribución global de fallecidos en deslizamientos\n a nivel mundial",
  xlab="",
  ylab="Porcentaje (%)"
)

ticks_hi_global <- seq(0,100,20)

axis(
  2,
  at=ticks_hi_global,
  labels=paste0(ticks_hi_global,"%"),
  las=1
)
mtext("Número de fallecidos", side = 1, line = 6, cex = 1)

axis(
  1,
  at=pos_x,
  labels=clases_etiquetas,
  las=2,
  cex.axis=.75
)

abline(
  h=100,
  col="blue",
  lty=2
)

text(
  pos_x,
  hi,
  labels=round(hi,2),
  pos=3,
  cex=.8,
  font=2
)

5.5 Diagrama de Caja (Boxplot)

par(
  mfrow = c(1,1),
  mar = c(5,4,4,2)
)

boxplot(
  fatality,
  col = "bisque",
  horizontal = TRUE,
  outline = TRUE,
  xlab = "Número de fallecidos",
  main = "Gráfica 24: Diagrama de caja del número de\nfallecidos (eventos mortales)"
)

5.6 Diagrama de Ojivas Combinadas

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

plot(
  1:length(ni),
  Ni_asc,
  type="b",
  pch=17,
  col="black",
  xaxt="n",
  xlab="",
  ylab="Frecuencia acumulada",
  ylim=c(0,max(Ni_asc)),
  main="Gráfica 25: Ojivas combinadas del número de fallecidos"
)

lines(
  1:length(ni),
  Ni_dsc,
  type="b",
  pch=16,
  col="blue"
)

axis(
  1,
  at=1:length(ni),
  labels=clases_etiquetas,
  las=2,
  cex.axis=.75
)

mtext(
  "Clases",
  side=1,
  line=6
)

legend(
  "topright",
  inset=c(-0.28,0),
  xpd=TRUE,
  legend=c(
    "Ascendente",
    "Descendente"
  ),
  col=c("black","blue"),
  pch=c(17,16),
  lty=1,
  bty="n"
)

6. INDICADORES

6.1 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)

6.2 Tabla de indicadores estadísticos

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

tabla_indicadores_gt <- tabla_indicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 13**"),
    subtitle = md("Indicadores estadísticos del número de fallecidos en eventos mortales")
  ) %>%
  fmt_number(
    columns = 4:10,
    decimals = 2
  ) %>%
  tab_source_note(
    source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
  )

tabla_indicadores_gt
Tabla N° 13
Indicadores estadísticos del número de fallecidos en eventos mortales
Variable Min Max Media Mediana Moda Desv..Est. CV.... Asimetría Curtosis
Fatality Count (>0) 1 500 30.95 5.00 2.00 51.70 167.01 3.98 23.55
Elaborado por: Grupo 2 – Carrera de Geología

6.3 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_vec <- fatality[
  fatality < lim_inf |
    fatality > lim_sup
]

6.4 Tabla de outliers

tabla_outliers <- data.frame(
  Variable = "Fatality Count (>0)",
  Outliers_Detectados = as.character(length(outliers_vec)),
  Limite_Inferior = lim_inf,
  Limite_Superior = lim_sup,
  Q1 = Q1,
  Q3 = Q3
)

tabla_outliers_gt <- tabla_outliers %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 14**"),
    subtitle = md("Detección de valores atípicos del número de fallecidos en eventos mortales")
  ) %>%
  fmt_number(
    columns = 3:6,
    decimals = 2
  ) %>%
  tab_source_note(
    source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
  )

tabla_outliers_gt
Tabla N° 14
Detección de valores atípicos del número de fallecidos en eventos mortales
Variable Outliers_Detectados Limite_Inferior Limite_Superior Q1 Q3
Fatality Count (>0) 100 −68.50 119.50 2.00 49.00
Elaborado por: Grupo 2 – Carrera de Geología

7. CONCLUSIÓN

La variable número de fallecidos fluctúa entre 1 y 500, y sus valores giran entorno a 5 con una desviación estándar de 51.70, siendo un conjunto de datos muy heterogéneo. El conjunto de valores se concentra fuertemente en la parte baja de la variable. Con la presencia de 100 valores atípicos superiores a 119.50.