1. CARGA DE LIBRERÍAS Y DATOS

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

# Carga del archivo Excel (previamente subido al entorno)

datos <- read_excel("datos_nuevoartes.xlsx")

2. DEFINICIÓN DEL ORDEN DE LA VARIABLE ORDINAL

datos <- datos %>%
mutate(
landslide_size_ord = case_when(
landslide_size == "very_small"   ~ "Muy pequeño",
landslide_size == "small"        ~ "Pequeño",
landslide_size == "medium"       ~ "Mediano",
landslide_size == "large"        ~ "Grande",
landslide_size == "very_large"   ~ "Muy grande",
landslide_size == "catastrophic" ~ "Catastrófico",
TRUE ~ NA_character_
),
landslide_size_ord = factor(
landslide_size_ord,
levels = c(
"Muy pequeño",
"Pequeño",
"Mediano",
"Grande",
"Muy grande",
"Catastrófico"
),
ordered = TRUE
)
)

3. TABLA DE DISTRIBUCIÓN DE FRECUENCIA

3.1. Cálculo de frecuencias

TDF_size <- datos %>%
filter(!is.na(landslide_size_ord)) %>%
count(landslide_size_ord, name = "ni") %>%
arrange(landslide_size_ord) %>%
mutate(
hi = (ni / sum(ni)) * 100,
Ni = cumsum(ni),
Hi = cumsum(hi)
)

3.2. Tabla de frecuencias (Salida básica)

TDF_size_total <- TDF_size %>%
add_row(
landslide_size_ord = "TOTAL",
ni = sum(TDF_size$ni),
hi = sum(TDF_size$hi),
Ni = NA,
Hi = NA
)

TDF_size_total
## # A tibble: 6 × 5
##   landslide_size_ord    ni       hi    Ni    Hi
##   <chr>              <int>    <dbl> <int> <dbl>
## 1 Pequeño             2767  27.2     2767  27.2
## 2 Mediano             6551  64.4     9318  91.6
## 3 Grande               750   7.37   10068  99.0
## 4 Muy grande           102   1.00   10170 100.0
## 5 Catastrófico           3   0.0295 10173 100  
## 6 TOTAL              10173 100         NA  NA

3.3. Tabla de presentación

TDF_size_total %>%
mutate(
hi = round(hi, 2),
Hi = round(Hi, 2)
) %>%
gt() %>%
tab_header(
title = md("**Tabla N°3**"),
subtitle = md("Distribución de frecuencias del tamaño de los deslizamientos")
) %>%
cols_label(
landslide_size_ord = "Tamaño del deslizamiento",
ni = "Frecuencia absoluta (ni)",
hi = "Frecuencia relativa (%)",
Ni = "Frecuencia acumulada (Ni)",
Hi = "Frecuencia relativa acumulada (%)"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = landslide_size_ord == "TOTAL")
) %>%
tab_source_note(
source_note = md("Variable cualitativa ordinal. Elaborado por el autor.")
)
Tabla N°3
Distribución de frecuencias del tamaño de los deslizamientos
Tamaño del deslizamiento Frecuencia absoluta (ni) Frecuencia relativa (%) Frecuencia acumulada (Ni) Frecuencia relativa acumulada (%)
Pequeño 2767 27.20 2767 27.20
Mediano 6551 64.40 9318 91.60
Grande 750 7.37 10068 98.97
Muy grande 102 1.00 10170 99.97
Catastrófico 3 0.03 10173 100.00
TOTAL 10173 100.00 NA NA
Variable cualitativa ordinal. Elaborado por el autor.

4. DIAGRAMAS DE BARRAS

categorias <- TDF_size$landslide_size_ord
ni <- TDF_size$ni
hi <- round(TDF_size$hi, 2)

4.1. Frecuencia absoluta

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

barplot(
  ni,
  names.arg = categorias,
  las = 1,
  col = "steelblue",
  main = "Gráfica N°5: Frecuencia absoluta del tamaño de los deslizamientos",
  ylab = "Frecuencia absoluta (ni)",
  xlab = "Tamaño del deslizamiento"
)

4.2. Frecuencia relativa

barplot(
  hi,
  names.arg = categorias,
  las = 1,
  col = "skyblue",
  main = "Gráfica N°6: Frecuencia relativa del tamaño de los deslizamientos",
  ylab = "Frecuencia relativa (%)",
  xlab = "Tamaño del deslizamiento",
  ylim = c(0, 100)
)

5. DIAGRAMA CIRCULAR

par(mar = c(5, 4, 4, 10))
par(xpd = TRUE)

colores <- c(
  "#1f78b4", "#33a02c", "#ff7f00",
  "#e31a1c", "#6a3d9a", "#b15928"
)

pie(
  hi,
  labels = NA,  # ← evita porcentajes dentro del círculo
  main = "Gráfica N°7: Distribución porcentual del tamaño de los deslizamientos",
  col = colores
)

legend(
  x = 1.25,
  y = 0,
  legend = paste0(
    categorias, " (", hi, "%)"
  ),
  fill = colores,
  bty = "n",
  cex = 0.9
)

par(xpd = FALSE)

6. INDICADORES ESTADÍSTICOS

6.1. Moda y Mediana

# Moda
indice_moda <- which.max(TDF_size$ni)
moda <- TDF_size$landslide_size_ord[indice_moda]

# Mediana ordinal (usando Hi acumulado)
mediana <- categorias[which.min(abs(TDF_size$Hi - 50))]

6.2. Tabla de indicadores

tabla_indicadores <- data.frame(
  Indicador = c("Moda", "Mediana"),
  Resultado = c(as.character(moda), as.character(mediana))
)

tabla_indicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nro. 4**"),
    subtitle = md("Indicadores estadísticos del tamaño de los deslizamientos")
  ) %>%
  cols_label(
    Indicador = "Indicador estadístico",
    Resultado = "Categoría resultante"
  ) %>%
  tab_source_note(
    source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body()
  )
Tabla Nro. 4
Indicadores estadísticos del tamaño de los deslizamientos
Indicador estadístico Categoría resultante
Moda Mediano
Mediana Pequeño
Elaborado por: Grupo 2 – Carrera de Geología

7. CONCLUSIÓN

La variable tamaño del deslizamiento corresponde a una variable cualitativa de tipo ordinal, lo que permite el uso de indicadores estadísticos como la moda y la mediana. El análisis realizado evidencia que el tamaño más frecuente de los deslizamientos corresponde a la categoría modal, mientras que la mediana representa la categoría central de la distribución acumulada.