Carga de datos y librerías Extraer 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")
## New names:
## • `` -> `...32`
## • `` -> `...33`
## • `` -> `...34`
## • `` -> `...35`

2. EXTRAER LAS VARIABLES

injury_raw <- datos_nuevoartes$injury_count
injury_raw <- injury_raw[!is.na(injury_raw)]
# Se conservan únicamente los eventos con al menos un herido
injury <- injury_raw[injury_raw > 0]
N_total <- length(injury)

3. CONTEO

Para esta variable se excluyeron los registros con cero heridos para analizar únicamente los deslizamientos que ocasionaron personas afectadas.

3.1 Parámetros de clasificación

N_total <- length(injury)
xmin <- min(injury)
xmax <- max(injury)
R <- xmax - xmin
# Regla de Sturges
k <- ceiling(1 + 3.322 * log10(N_total))
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          2595      1    237   236             13       19

3.2 Definición de clases

Li <- xmin + (0:(k-1))*A
Ls <- Li + A
Ls[k] <- xmax
clases_etiquetas <- paste0(Li," - ",Ls)
MC <- round((Li+Ls)/2,2)

3.3 Cálculo de frecuencias

breaks <- c(Li,xmax)
histograma <- hist(
injury,
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 heridos en deslizamientos a nivel mundial"
    )
  ) %>%
  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 heridos en deslizamientos a nivel mundial
Rango Li Ls MC ni hi (%)
NI
HI (%)
Ascendente Descendente Ascendente Descendente
1 - 20 1 20 10.50 1138 43.85 1138 2595 43.85 100.00
20 - 39 20 39 29.50 737 28.40 1875 1457 72.25 56.15
39 - 58 39 58 48.50 278 10.71 2153 720 82.97 27.75
58 - 77 58 77 67.50 129 4.97 2282 442 87.94 17.03
77 - 96 77 96 86.50 118 4.55 2400 313 92.49 12.06
96 - 115 96 115 105.50 72 2.77 2472 195 95.26 7.51
115 - 134 115 134 124.50 82 3.16 2554 123 98.42 4.74
134 - 153 134 153 143.50 27 1.04 2581 41 99.46 1.58
153 - 172 153 172 162.50 8 0.31 2589 14 99.77 0.54
172 - 191 172 191 181.50 2 0.08 2591 6 99.85 0.23
191 - 210 191 210 200.50 1 0.04 2592 4 99.88 0.15
210 - 229 210 229 219.50 2 0.08 2594 3 99.96 0.12
229 - 237 229 237 233.00 1 0.04 2595 1 100.00 0.04
TOTAL


2595 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 del número de heridos 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 heridos", 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 heridos 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 del número de heridos en deslizamientos\n a nivel mundial",
  xlab="",
  ylab="Cantidad"
)
mtext("Número de heridos", 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 del número de heridos 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 del número de heridos 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 heridos", 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 del número de heridos 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 del número de heridos 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 heridos", 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(

injury,

col = "bisque",

horizontal = TRUE,

outline = TRUE,

xlab = "Número de heridos",

main = "Gráfica 24: Diagrama de caja del número de\nheridos en deslizamientos"

)

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

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(injury)

Me <- median(injury)

Mo <- as.numeric(
  names(
    sort(
      table(injury),
      decreasing = TRUE
    )[1]
  )
)

SD <- sd(injury)

CV <- (SD/x_bar)*100

As <- skewness(injury)

K <- kurtosis(injury)

6.2 Tabla de indicadores estadísticos

tabla_indicadores <- data.frame(
  Variable = "Injury Count (>0)",
  Min = min(injury),
  Max = max(injury),
  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 heridos 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 heridos en eventos mortales
Variable Min Max Media Mediana Moda Desv..Est. CV.... Asimetría Curtosis
Injury Count (>0) 1 237 31.26 25.00 1.00 33.83 108.22 1.68 3.14
Elaborado por: Grupo 2 – Carrera de Geología

6.3 Detección de outliers

Q1 <- quantile(injury,0.25)
Q3 <- quantile(injury,0.75)
IQR_i <- Q3-Q1
lim_inf <- Q1-1.5*IQR_i
lim_sup <- Q3+1.5*IQR_i
outliers_vec <- injury[
injury < lim_inf |
injury > lim_sup
]

6.4 Tabla de outliers

tabla_outliers <- data.frame(
Variable = "Injury 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 heridos en deslizamientos"
)
) %>%
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 heridos en deslizamientos
Variable Outliers_Detectados Limite_Inferior Limite_Superior Q1 Q3
Injury Count (>0) 195 −50.00 94.00 4.00 40.00
Elaborado por: Grupo 2 – Carrera de Geología

7. CONCLUSIÓN

La variable número de heridos fluctúa entre 1 y 237, y sus valores giran entorno a 31.26 con una desviación estándar de 33.83, 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 195 valores atípicos que van desde 94 hasta 237 heridos. Por lo tanto, esta distribución resulta altamente perjudicial porque indica la presencia de deslizamientos con un alto impacto humano.