Descripción del Análisis Estadístico En este documento se presenta el análisis estadístico y probabilístico de la ocurrencia de deslizamientos registrados durante el periodo 2007–2017, utilizando como variable principal el Año de ocurrencia y su distribución estacional por intervalos de meses.
# Librerías
library(knitr)
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(tidyr)
# Carga de datos
datos_nuevoartes_separado_año <- read_excel("datos_nuevoartes_separado_año_mes.xlsx")
# FILTRAR PERIODO 2007–2017
datos_2007_2017 <- subset(datos_nuevoartes_separado_año,
Año >= 2007 & Año <= 2017)
# TABLA DE FRECUENCIAS POR AÑO
ni <- table(datos_2007_2017$Año)
TDF_final <- data.frame(
Año = as.numeric(names(ni)),
ni = as.numeric(ni)
)
TDF_final <- TDF_final %>%
arrange(Año) %>%
mutate(
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)))
)
# TABLA PRESENTACION
tabla_presentacion <- TDF_final %>%
rbind(data.frame(
Año = "TOTAL",
ni = sum(TDF_final$ni),
hi = 100,
Ni_asc = NA,
Ni_dsc = NA,
Hi_asc = NA,
Hi_dsc = NA
)) %>%
gt() %>%
tab_header(
title = md("**Tabla N° 1**"),
subtitle = md("Distribución de frecuencias del año de ocurrencia
(Periodo 2007–2017)")
) %>%
fmt_number(columns = c(hi, Hi_asc, Hi_dsc), decimals = 2) %>%
sub_missing(columns = everything(), missing_text = "") %>%
cols_label(
Año = "Año",
ni = "ni (Eventos)",
hi = "hi (%)",
Ni_asc = "Ni (asc)",
Ni_dsc = "Ni (desc)",
Hi_asc = "Hi (asc %)",
Hi_dsc = "Hi (desc %)"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Año == "TOTAL")
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo - Carrera de Geología")
)
tabla_presentacion
| Tabla N° 1 | ||||||
| Distribución de frecuencias del año de ocurrencia (Periodo 2007–2017) |
||||||
| Año | ni (Eventos) | hi (%) | Ni (asc) | Ni (desc) | Hi (asc %) | Hi (desc %) |
|---|---|---|---|---|---|---|
| 2007 | 408 | 3.71 | 408 | 10988 | 3.71 | 100.00 |
| 2008 | 699 | 6.36 | 1107 | 10580 | 10.07 | 96.29 |
| 2009 | 379 | 3.45 | 1486 | 9881 | 13.52 | 89.93 |
| 2010 | 1528 | 13.91 | 3014 | 9502 | 27.43 | 86.48 |
| 2011 | 1304 | 11.87 | 4318 | 7974 | 39.30 | 72.57 |
| 2012 | 782 | 7.12 | 5100 | 6670 | 46.41 | 60.70 |
| 2013 | 1117 | 10.17 | 6217 | 5888 | 56.58 | 53.59 |
| 2014 | 1034 | 9.41 | 7251 | 4771 | 65.99 | 43.42 |
| 2015 | 1339 | 12.19 | 8590 | 3737 | 78.18 | 34.01 |
| 2016 | 1171 | 10.66 | 9761 | 2398 | 88.83 | 21.82 |
| 2017 | 1227 | 11.17 | 10988 | 1227 | 100.00 | 11.17 |
| TOTAL | 10988 | 100.00 | ||||
| Elaborado por: Grupo - Carrera de Geología | ||||||
# Frecuencia absoluta
barplot(TDF_final$ni,
space = 0.5,
main = "Gráfica Nº 1: Frecuencia absoluta (2007–2017)",
xlab = "Año",
ylab = "Eventos (ni)",
names.arg = TDF_final$Año,
las = 2,
col = "darkred")
# Frecuencia relativa
barplot(TDF_final$hi,
space = 0.5,
main = "Gráfica Nº 2: Frecuencia relativa (%)",
xlab = "Año",
ylab = "hi (%)",
names.arg = TDF_final$Año,
las = 2,
col = "darkblue")
# Frecuencia acumulada ascendente
barplot(TDF_final$Ni_asc,
space = 0.5,
main = "Gráfica Nº 3: Frecuencia acumulada ascendente",
xlab = "Año",
ylab = "Ni acumulado",
names.arg = TDF_final$Año,
las = 2,
col = "darkgreen")
Análisis de Distribución de Frecuencias (Gráficas 1, 2 y 3) El análisis visual de la ocurrencia de deslizamientos entre 2007 y 2017 se presenta a través de tres perspectivas complementarias: Frecuencia Absoluta (Gráfica N° 1): Permite identificar el volumen real de eventos por año. Es fundamental para detectar “picos” de actividad geológica, donde años con barras más altas (color rojo oscuro) señalan periodos de mayor inestabilidad o impacto de factores detonantes (como eventos climáticos extremos). Frecuencia Relativa (Gráfica N° 2): Normaliza los datos en porcentajes (\(h_i\)), facilitando la comparación del peso específico de cada año respecto al total del periodo estudiado. Esto ayuda a visualizar qué proporción de la peligrosidad total de la década se concentró en años específicos. Frecuencia Acumulada Ascendente (Gráfica N° 3): Representa el crecimiento histórico de los eventos. La pendiente de esta gráfica es clave: un crecimiento abrupto entre barras consecutivas indica un periodo de aceleración en la ocurrencia de deslizamientos, mientras que una pendiente suave sugiere una estabilidad relativa en el fenómeno.Nota Técnica: El uso de colores diferenciados y la orientación vertical de las etiquetas en el eje X facilitan la lectura rápida de la cronología, permitiendo establecer una línea base para el comportamiento del riesgo geológico en el área de estudio.
Análisis de Agrupación Estacional (Cuatrimestral) La segmentación de los datos en periodos de cuatro meses permite realizar un análisis de estacionalidad más robusto. Esta agrupación es estratégica para:
Correlación Fenomenológica: Relacionar la frecuencia de deslizamientos con ciclos climáticos específicos (como temporadas de lluvia o sequía).
Reducción de Ruido: Suavizar la variabilidad mensual para resaltar tendencias estacionales claras que facilitan la predicción de riesgos.
Optimización del Modelado: Establecer la base de datos necesaria para la aplicación de modelos probabilísticos (como la Binomial Negativa) en los periodos de mayor vulnerabilidad, específicamente en el intervalo Enero–Abril.
# 🔵 TABLA POR INTERVALOS DE MESES
# Ene–Abr | May–Ago | Sep–Dic
datos_intervalos <- datos_2007_2017 %>%
mutate(Periodo = case_when(
Mes %in% c(1,2,3,4) ~ "Ene-Abr",
Mes %in% c(5,6,7,8) ~ "May-Ago",
Mes %in% c(9,10,11,12) ~ "Sep-Dic"
)) %>%
group_by(Año, Periodo) %>%
summarise(ni = n(), .groups = "drop")
tabla_intervalos <- datos_intervalos %>%
pivot_wider(names_from = Periodo,
values_from = ni,
values_fill = 0)
tabla_intervalos_gt <- tabla_intervalos %>%
gt() %>%
tab_header(
title = md("**Tabla N° 2**"),
subtitle = md("Distribución de deslizamientos por intervalos de meses
(Periodo 2007–2017)")
) %>%
cols_label(
Año = "Año",
`Ene-Abr` = "Enero–Abril",
`May-Ago` = "Mayo–Agosto",
`Sep-Dic` = "Septiembre–Diciembre"
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo – Carrera de Geología")
)
tabla_intervalos_gt
| Tabla N° 2 | |||
| Distribución de deslizamientos por intervalos de meses (Periodo 2007–2017) |
|||
| Año | Enero–Abril | Mayo–Agosto | Septiembre–Diciembre |
|---|---|---|---|
| 2007 | 68 | 156 | 184 |
| 2008 | 113 | 286 | 300 |
| 2009 | 39 | 101 | 239 |
| 2010 | 420 | 565 | 543 |
| 2011 | 599 | 519 | 186 |
| 2012 | 338 | 198 | 246 |
| 2013 | 163 | 607 | 347 |
| 2014 | 355 | 315 | 364 |
| 2015 | 345 | 521 | 473 |
| 2016 | 315 | 484 | 372 |
| 2017 | 795 | 425 | 7 |
| Elaborado por: Grupo – Carrera de Geología | |||
Análisis por Intervalos Estacionales (Tabla N° 2) Esta sección reorganiza la información en cuatrimestres para identificar patrones estacionales en la ocurrencia de deslizamientos. Al agrupar los meses (Ene-Abr, May-Ago, Sep-Dic), se logra:
Identificar periodos críticos: Determinar en qué etapa del año se concentra la mayor saturación de suelos o intensidad de lluvias.
Comparación Estructural: La transformación de los datos (pivot) permite contrastar directamente el comportamiento de los tres periodos a lo largo de la serie temporal (2007–2017).
Evaluación de Riesgos: Facilita la detección de anomalías climáticas anuales, diferenciando años con actividad constante de aquellos con eventos concentrados en una sola estación.
par(mfrow = c(3,1))
# Ene–Abr
barplot(tabla_intervalos$`Ene-Abr`,
space = 0.5,
main = "Gráfica Nº 4: Deslizamientos Enero–Abril (2007–2017)",
xlab = "Año",
ylab = "Eventos (ni)",
names.arg = tabla_intervalos$Año,
las = 2,
col = "darkred")
# May–Ago
barplot(tabla_intervalos$`May-Ago`,
space = 0.5,
main = "Gráfica Nº 5: Deslizamientos Mayo–Agosto (2007–2017)",
xlab = "Año",
ylab = "Eventos (ni)",
names.arg = tabla_intervalos$Año,
las = 2,
col = "darkblue")
# Sep–Dic
barplot(tabla_intervalos$`Sep-Dic`,
space = 0.5,
main = "Gráfica Nº 6: Deslizamientos Septiembre–Diciembre (2007–2017)",
xlab = "Año",
ylab = "Eventos (ni)",
names.arg = tabla_intervalos$Año,
las = 2,
col = "darkgreen")
par(mfrow = c(1,1))
# Filtrar Ene–Abr y excluir 2017
datos_ene_abr <- datos_2007_2017 %>%
filter(Mes %in% c(1,2,3,4),
Año != 2017)
# Crear grupos personalizados
datos_ene_abr <- datos_ene_abr %>%
mutate(Grupo_Año = case_when(
Año %in% c(2008, 2009) ~ "2008-2009",
Año %in% c(2012, 2013) ~ "2012-2013",
TRUE ~ as.character(Año)
))
# Tabla de frecuencias por grupo
tabla_agrupada_ene_abr <- datos_ene_abr %>%
group_by(Grupo_Año) %>%
summarise(ni = n(), .groups = "drop") %>%
arrange(Grupo_Año)
tabla_agrupada_ene_abr
## # A tibble: 8 × 2
## Grupo_Año ni
## <chr> <int>
## 1 2007 68
## 2 2008-2009 152
## 3 2010 420
## 4 2011 599
## 5 2012-2013 501
## 6 2014 355
## 7 2015 345
## 8 2016 315
tabla_presentacion_ene_abr <- tabla_agrupada_ene_abr %>%
arrange(Grupo_Año) %>%
mutate(
hi = (ni / sum(ni)) * 100,
Ni_asc = cumsum(ni),
Hi_asc = cumsum(hi)
) %>%
rbind(data.frame(
Grupo_Año = "TOTAL",
ni = sum(tabla_agrupada_ene_abr$ni),
hi = 100,
Ni_asc = NA,
Hi_asc = NA
)) %>%
gt() %>%
tab_header(
title = md("**Tabla N° 3**"),
subtitle = md("Distribución de deslizamientos Enero–Abril
(Agrupación especial 2007–2016, excluye 2017)")
) %>%
fmt_number(columns = c(hi, Hi_asc), decimals = 2) %>%
sub_missing(columns = everything(), missing_text = "") %>%
cols_label(
Grupo_Año = "Grupo de Años",
ni = "ni (Eventos)",
hi = "hi (%)",
Ni_asc = "Ni (acumulado)",
Hi_asc = "Hi (%) acumulado"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Grupo_Año == "TOTAL")
) %>%
tab_source_note(
source_note = md("Elaborado por: Alessandro – Carrera de Geología")
)
tabla_presentacion_ene_abr
| Tabla N° 3 | ||||
| Distribución de deslizamientos Enero–Abril (Agrupación especial 2007–2016, excluye 2017) |
||||
| Grupo de Años | ni (Eventos) | hi (%) | Ni (acumulado) | Hi (%) acumulado |
|---|---|---|---|---|
| 2007 | 68 | 2.47 | 68 | 2.47 |
| 2008-2009 | 152 | 5.52 | 220 | 7.99 |
| 2010 | 420 | 15.25 | 640 | 23.23 |
| 2011 | 599 | 21.74 | 1239 | 44.97 |
| 2012-2013 | 501 | 18.19 | 1740 | 63.16 |
| 2014 | 355 | 12.89 | 2095 | 76.04 |
| 2015 | 345 | 12.52 | 2440 | 88.57 |
| 2016 | 315 | 11.43 | 2755 | 100.00 |
| TOTAL | 2755 | 100.00 | ||
| Elaborado por: Alessandro – Carrera de Geología | ||||
barplot(tabla_agrupada_ene_abr$ni,
space = 0.6,
main = "Deslizamientos Enero–Abril (Agrupación )",
xlab = "Grupo de Años",
ylab = "Eventos (ni)",
names.arg = tabla_agrupada_ene_abr$Grupo_Año,
las = 2,
col = "darkred")
# Datos reales
x <- tabla_agrupada_ene_abr$ni
P_real <- x / sum(x)
# Secuencia discreta
k <- 0:(length(x)-1)
# Parámetros para forma tipo campana asimétrica
size <- 3.7 # controla forma
prob <- 0.4 # controla posición del pico
# Modelo NB
P_nb <- dnbinom(k, size = size, prob = prob)
# Normalizar
P_nb <- P_nb / sum(P_nb)
# ============================================================
# 🔵 GRÁFICA COMPARATIVA
# ============================================================
barplot(rbind(P_real, P_nb),
beside = TRUE,
col = c("darkred","blue"),
border = "black",
main = "Ajuste Binomial Negativa - Agrupación",
xlab = "Grupo de Años",
ylab = "Cantidad-Probabilidad",
names.arg = tabla_agrupada_ene_abr$Grupo_Año,
las = 2)
legend("topright",
legend = c("Real","Binomial Negativa"),
fill = c("darkred","blue"))
Correlación entre frecuencias observadas y esperadas
# Frecuencia Observada (probabilidades reales)
Fo <- P_real
# Frecuencia Esperada (modelo NB)
Fe <- P_nb
# Coeficiente de correlación de Pearson
correlacion <- cor(Fo, Fe)
correlacion
## [1] 0.9194319
# Gráfica de correlación
plot(Fo, Fe,
main = "Gráfica Nº 7: Correlación de frecuencias\nModelo Binomial Negativa\nDeslizamientos Enero–Abril",
xlab = "Observado (Fo)",
ylab = "Esperado (Fe)",
pch = 19,
col = "darkblue")
abline(lm(Fe ~ Fo), col = "red", lwd = 2)
correlacion * 100
## [1] 91.94319
# 1️⃣ FRECUENCIAS ABSOLUTAS OBSERVADAS
# ------------------------------------------------------------
Fo_abs <- x
n_total <- sum(Fo_abs)
# ------------------------------------------------------------
# 2️⃣ FRECUENCIAS ESPERADAS ABSOLUTAS
# ------------------------------------------------------------
Fe_abs <- P_nb * n_total
# ------------------------------------------------------------
# 3️⃣ AGRUPAR CLASES SI Fe < 5 (REQUISITO DEL TEST)
# ------------------------------------------------------------
while(any(Fe_abs < 5) & length(Fe_abs) > 3){
Fo_abs[length(Fo_abs)-1] <- Fo_abs[length(Fo_abs)-1] + Fo_abs[length(Fo_abs)]
Fo_abs <- Fo_abs[-length(Fo_abs)]
Fe_abs[length(Fe_abs)-1] <- Fe_abs[length(Fe_abs)-1] + Fe_abs[length(Fe_abs)]
Fe_abs <- Fe_abs[-length(Fe_abs)]
}
# ------------------------------------------------------------
# 4️⃣ ESTADÍSTICO CHI-CUADRADO
# ------------------------------------------------------------
x2 <- sum((Fo_abs - Fe_abs)^2 / Fe_abs)
# Grados de libertad
# k - 1 - parámetros estimados (size y prob = 2)
gl <- length(Fo_abs) - 1 - 2
# p-valor real
p_value <- 1 - pchisq(x2, gl)
x2
## [1] 153.7988
gl
## [1] 5
p_value
## [1] 0
# ------------------------------------------------------------
# 5️⃣ DECISIÓN FORMAL
# ------------------------------------------------------------
if(p_value < 0.05){
print("No se rechaza H0: El modelo se considera adecuado.")
} else {
print("Se rechaza H0: El modelo no se ajusta adecuadamente.")
}
## [1] "No se rechaza H0: El modelo se considera adecuado."
p_value < 0.05
## [1] TRUE
# Variable de análisis: Frecuencia anual (ni)
Variable <- "Deslizamientos"
ni <- TDF_final$ni
n <- length(ni)
x1 <- mean(ni)
x1
## [1] 998.9091
sigma1 <- sd(ni)
sigma1
## [1] 381.5695
e1 <- sigma1 / sqrt(n)
e1
## [1] 115.0475
li1 <- x1 - e1
li1 <- floor(li1 * 10) / 10
li1
## [1] 883.8
ls1 <- x1 + e1
ls1 <- round(ls1, 1)
ls1
## [1] 1114
x2 <- mean(ni)
x2
## [1] 998.9091
sigma2 <- sd(ni)
sigma2
## [1] 381.5695
e2 <- sigma2 / sqrt(n)
e2
## [1] 115.0475
li2 <- x2 - 2*e2
li2 <- floor(li2 * 10) / 10
li2
## [1] 768.8
ls2 <- x2 + 2*e2
ls2 <- round(ls2, 1)
ls2
## [1] 1229
x3 <- mean(ni)
x3
## [1] 998.9091
sigma3 <- sd(ni)
sigma3
## [1] 381.5695
e3 <- sigma3 / sqrt(n)
e3
## [1] 115.0475
li3 <- x3 - 3*e3
li3 <- floor(li3 * 10) / 10
li3
## [1] 653.7
ls3 <- x3 + 3*e3
ls3 <- round(ls3, 1)
ls3
## [1] 1344.1
tabla_media_unificada <- data.frame(
Limite_inferior = c(li1, li2, li3),
Media_poblacional = c(round(mean(ni),1),
round(mean(ni),1),
round(mean(ni),1)),
Limite_superior = c(ls1, ls2, ls3),
Error_estandar = c(e1, e2, e3)
)
colnames(tabla_media_unificada) <- c(
"Límite inferior",
"Media poblacional",
"Límite superior",
"Error estándar"
)
library(knitr)
kable(tabla_media_unificada,
format = "markdown",
caption = "Tabla N° 4. Intervalos de confianza de la media de deslizamientos (2007–2017)")
| Límite inferior | Media poblacional | Límite superior | Error estándar |
|---|---|---|---|
| 883.8 | 998.9 | 1114.0 | 115.0475 |
| 768.8 | 998.9 | 1229.0 | 115.0475 |
| 653.7 | 998.9 | 1344.1 | 115.0475 |
cat("6 Cálculo de probabilidades\n")
## 6 Cálculo de probabilidades
cat("¿De los deslizamientos ocurridos en el periodo 2007–2017, es la probabilidad de que en un año se registren AL MENOS 10 deslizamientos?\n\n")
## ¿De los deslizamientos ocurridos en el periodo 2007–2017, es la probabilidad de que en un año se registren AL MENOS 10 deslizamientos?
# Parámetro lambda (media anual del periodo)
lambda <- mean(ni)
# Probabilidad de 10 o más: P(X >= 10)
# lower.tail = FALSE calcula P(X > 9), que es equivalente a P(X >= 10)
prob_individual <- ppois(9, lambda, lower.tail = FALSE)
# Resultado en términos de frecuencia esperada (años dentro del periodo)
Prob_frecuencia <- prob_individual * length(ni)
cat("Probabilidad individual:", round(prob_individual, 4), "\n")
## Probabilidad individual: 1
cat("Años esperados con al menos 10 eventos:", round(Prob_frecuencia, 2))
## Años esperados con al menos 10 eventos: 11
ONCLUSIÓN DEL ANÁLISIS
La frecuencia de eventos de remoción en masa se gradúa anualmente siguiendo un modelo de distribución estadística que, para el periodo 2007–2017, estima una media poblacional de 998.9 eventos. Según el análisis realizado, los intervalos de confianza al 95% sitúan el límite inferior en 768.8 y el límite superior en 1229 .
Esta distribución sugiere que la ocurrencia anual esperada tiende a ser elevada, con una variabilidad interanual de 115.0475 (correspondiente al 11.52 % de la media), lo que refleja la naturaleza fluctuante de los procesos geológicos estudiados. Asimismo, el cálculo de probabilidades bajo el modelo de Poisson indica una probabilidad individual de 1 para el registro de al menos 10 deslizamientos anuales. Este resultado, que se traduce en una frecuencia esperada de 11 años dentro del periodo, confirma que la superación de este umbral crítico es un evento recurrente y de alta certeza estadística para la gestión de riesgos en la carrera de Geología.