1. CARGA Y PREPARACIÓN DE LOS 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)
# Lectura del archivo Excel (previamente cargado al proyecto)
datos <- read_excel("datos_nuevoartes.xlsx")
2. CONSOLIDACIÓN DE DESENCADENANTES
datos <- datos %>%
mutate(
landslide_trigger_consol = case_when(
landslide_trigger %in% c("downpour", "rain", "continuous_rain", "monsoon") ~
"Precipitación",
landslide_trigger %in% c("snowfall_snowmelt", "freeze_thaw") ~
"Fenómenos de nieve/hielo",
landslide_trigger %in% c("earthquake", "volcano") ~
"Actividad geológica",
landslide_trigger %in% c("mining", "construction", "vibration", "leaking_pipe") ~
"Desencadenante humano",
landslide_trigger %in% c("flooding", "dam_embankment_collapse") ~
"Estructuras",
landslide_trigger %in% c("unknown", "no_apparent_trigger", "other") ~
"Otros desencadenantes",
TRUE ~ NA_character_
)
)
3. TABLA DE DISTRIBUCIÓN DE FRECUENCIAS
3.1. Cálculo de frecuencias
TDFTrigger <- datos %>%
filter(!is.na(landslide_trigger_consol)) %>%
count(landslide_trigger_consol, name = "ni") %>%
mutate(
hi = (ni / sum(ni)) * 100
)
3.2. Tabla de frecuencias (Salida básica)
TDFTrigger_total <- TDFTrigger %>%
add_row(
landslide_trigger_consol = "Total",
ni = sum(TDFTrigger$ni),
hi = sum(TDFTrigger$hi)
)
TDFTrigger_total
## # A tibble: 7 × 3
## landslide_trigger_consol ni hi
## <chr> <int> <dbl>
## 1 Actividad geológica 90 0.861
## 2 Desencadenante humano 186 1.78
## 3 Estructuras 87 0.833
## 4 Fenómenos de nieve/hielo 176 1.68
## 5 Otros desencadenantes 1761 16.9
## 6 Precipitación 8149 78.0
## 7 Total 10449 100
3.3 Presentación de la tabla
tabla_presentacion <- TDFTrigger_total %>%
mutate(
hi = round(hi, 2)
)
tabla_presentacion %>%
gt() %>%
tab_header(
title = md("**Tabla Nro. 1**"),
subtitle = md("Distribución de frecuencias de los desencadenantes de movimientos en masa")
) %>%
cols_label(
landslide_trigger_consol = "Tipo de desencadenante",
ni = "Frecuencia absoluta (ni)",
hi = "Frecuencia relativa (%)"
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = landslide_trigger_consol == "Total")
)
| Tabla Nro. 1 |
| Distribución de frecuencias de los desencadenantes de movimientos en masa |
| Tipo de desencadenante |
Frecuencia absoluta (ni) |
Frecuencia relativa (%) |
| Actividad geológica |
90 |
0.86 |
| Desencadenante humano |
186 |
1.78 |
| Estructuras |
87 |
0.83 |
| Fenómenos de nieve/hielo |
176 |
1.68 |
| Otros desencadenantes |
1761 |
16.85 |
| Precipitación |
8149 |
77.99 |
| Total |
10449 |
100.00 |
| Elaborado por: Grupo 2 – Carrera de Geología |
4. DIAGRAMAS DE BARRAS
4.1. Frecuencia absoluta
par(mar = c(12, 5, 4, 2)) # margen inferior grande
barplot(
tabla_presentacion$ni[-nrow(tabla_presentacion)],
names.arg = tabla_presentacion$landslide_trigger_consol[-nrow(tabla_presentacion)],
las = 2, # etiquetas verticales
col = "steelblue",
main = "Gráfica 1: Frecuencia absoluta de los desencadenantes",
ylab = "Frecuencia absoluta (ni)",
xlab = "",
cex.names = 0.75, # tamaño del texto
cex.axis = 0.9
)

4.2. Frecuencia Relativa
par(mar = c(12, 5, 4, 2))
barplot(
tabla_presentacion$hi[-nrow(tabla_presentacion)],
names.arg = tabla_presentacion$landslide_trigger_consol[-nrow(tabla_presentacion)],
las = 2,
col = "skyblue",
main = "Gráfica 2: Frecuencia relativa de los desencadenantes",
ylab = "Frecuencia relativa (%)",
xlab = "",
ylim = c(0, 100),
cex.names = 0.75,
cex.axis = 0.9
)

5. DIAGRAMA CIRCULAR
par(mar = c(5, 4, 4, 10))
par(xpd = TRUE)
hi_red <- round(
tabla_presentacion$hi[-nrow(tabla_presentacion)], 2
)
colores_pie <- c(
"#1f78b4", "#33a02c", "#e31a1c",
"#ff7f00", "#6a3d9a", "#b15928"
)
pie(
hi_red,
labels = paste0(hi_red, " %"),
main = "Gráfica 3: Distribución porcentual de los desencadenantes",
col = colores_pie
)
legend(
x = 1.3, y = 0,
legend = tabla_presentacion$landslide_trigger_consol[-nrow(tabla_presentacion)],
fill = colores_pie,
cex = 0.8,
bty = "n"
)

par(xpd = FALSE)
6. INDICADORES ESTADÍSTICOS
6.1. Moda
indice_moda <- which.max(TDFTrigger$ni)
moda_categoria <- TDFTrigger$landslide_trigger_consol[indice_moda]
moda_ni <- TDFTrigger$ni[indice_moda]
moda_hi <- round(TDFTrigger$hi[indice_moda], 2)
cat(
"La moda de la variable Desencadenante es:",
moda_categoria,
"con una frecuencia absoluta de",
moda_ni,
"eventos (",
moda_hi,
"% )."
)
## La moda de la variable Desencadenante es: Precipitación con una frecuencia absoluta de 8149 eventos ( 77.99 % ).
6.2. Tabla resumen de indicadores
tabla_resumen <- data.frame(
Variable = "Desencadenantes de movimientos en masa",
Indicador = "Moda",
Resultado = paste0(
moda_categoria, " (",
moda_ni, " eventos, ",
moda_hi, "%)"
)
)
tabla_resumen %>%
gt() %>%
tab_header(
title = md("**Tabla Nro. 2**"),
subtitle = md("Resumen de indicadores estadísticos de la variable nominal")
) %>%
cols_label(
Variable = "Variable analizada",
Indicador = "Indicador estadístico",
Resultado = "Resultado"
) %>%
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. 2 |
| Resumen de indicadores estadísticos de la variable nominal |
| Variable analizada |
Indicador estadístico |
Resultado |
| Desencadenantes de movimientos en masa |
Moda |
Precipitación (8149 eventos, 77.99%) |
| Elaborado por: Grupo 2 – Carrera de Geología |
7. CONCLUSIÓN
El análisis estadístico de los desencadenantes de los movimientos en
masa, al tratarse de una variable cualitativa nominal, permitió
identificar que el único indicador de tendencia central aplicable es la
moda. Los resultados evidencian que la precipitación constituye el
desencadenante más frecuente, lo que resalta su papel dominante en la
ocurrencia de estos eventos dentro del conjunto de datos analizado.