En esta sección se cargan las librerías necesarias para el análisis, se importa la base de datos y se preparan los subconjuntos correspondientes a los periodos de estudio utilizados en la modelación estadística.
#============================================================
# 1. CARGA DE LIBRERÍAS Y DATOS
#============================================================
#------------------------------------------------------------
# Librerías
#------------------------------------------------------------
library(readxl)
library(dplyr)
library(tidyr)
library(ggplot2)
library(gt)
library(knitr)
#------------------------------------------------------------
# Importación de la base de datos
#------------------------------------------------------------
datos <- read_excel("datos_nuevoartes_separado_año_mes.xlsx")
#------------------------------------------------------------
# Preparación de la variable Año
#------------------------------------------------------------
datos$Año <- as.numeric(datos$Año)
datos <- datos %>%
filter(!is.na(Año))
#------------------------------------------------------------
# Subconjuntos para la modelación
#------------------------------------------------------------
# Modelo Poisson (2007–2009)
datos_poisson <- datos %>%
filter(Año >= 2007 & Año <= 2009)
# Modelo Uniforme (2013–2017)
datos_uniforme <- datos %>%
filter(Año >= 2013 & Año <= 2017)
#------------------------------------------------------------
# Verificación
#------------------------------------------------------------
cat("Total de registros:", nrow(datos), "\n")
## Total de registros: 11033
cat("Periodo Poisson:", nrow(datos_poisson), "registros\n")
## Periodo Poisson: 1486 registros
cat("Periodo Uniforme:", nrow(datos_uniforme), "registros\n")
## Periodo Uniforme: 5888 registros
En esta sección se presenta la distribución de frecuencias de la variable Año para el periodo 2007–2017, mediante una tabla y una representación gráfica que permiten describir su comportamiento general.
#============================================================
# 2. CARACTERIZACIÓN ESTADÍSTICA
#============================================================
#------------------------------------------------------------
# Tabla de frecuencias
#------------------------------------------------------------
TDF_anio <- datos %>%
count(Año, name = "Frecuencia") %>%
arrange(Año) %>%
mutate(
Frecuencia_Relativa = Frecuencia / sum(Frecuencia),
Porcentaje = Frecuencia_Relativa * 100,
Frecuencia_Acumulada = cumsum(Frecuencia),
Porcentaje_Acumulado = cumsum(Porcentaje)
)
#------------------------------------------------------------
# Tabla de presentación
#------------------------------------------------------------
TDF_anio %>%
mutate(
Frecuencia_Relativa = round(Frecuencia_Relativa,4),
Porcentaje = round(Porcentaje,2),
Porcentaje_Acumulado = round(Porcentaje_Acumulado,2)
) %>%
gt() %>%
tab_header(
title = md("**Tabla 1. Distribución de frecuencias de la variable Año**")
) %>%
cols_label(
Año = "Año",
Frecuencia = "Frecuencia",
Frecuencia_Relativa = "Fr. relativa",
Porcentaje = "%",
Frecuencia_Acumulada = "Fr. acumulada",
Porcentaje_Acumulado = "% acumulado"
)
| Tabla 1. Distribución de frecuencias de la variable Año | |||||
| Año | Frecuencia | Fr. relativa | % | Fr. acumulada | % acumulado |
|---|---|---|---|---|---|
| 1988 | 1 | 0.0001 | 0.01 | 1 | 0.01 |
| 1993 | 1 | 0.0001 | 0.01 | 2 | 0.02 |
| 1995 | 1 | 0.0001 | 0.01 | 3 | 0.03 |
| 1996 | 2 | 0.0002 | 0.02 | 5 | 0.05 |
| 1997 | 10 | 0.0009 | 0.09 | 15 | 0.14 |
| 1998 | 12 | 0.0011 | 0.11 | 27 | 0.24 |
| 2003 | 2 | 0.0002 | 0.02 | 29 | 0.26 |
| 2004 | 1 | 0.0001 | 0.01 | 30 | 0.27 |
| 2005 | 2 | 0.0002 | 0.02 | 32 | 0.29 |
| 2006 | 13 | 0.0012 | 0.12 | 45 | 0.41 |
| 2007 | 408 | 0.0370 | 3.70 | 453 | 4.11 |
| 2008 | 699 | 0.0634 | 6.34 | 1152 | 10.44 |
| 2009 | 379 | 0.0344 | 3.44 | 1531 | 13.88 |
| 2010 | 1528 | 0.1385 | 13.85 | 3059 | 27.73 |
| 2011 | 1304 | 0.1182 | 11.82 | 4363 | 39.55 |
| 2012 | 782 | 0.0709 | 7.09 | 5145 | 46.63 |
| 2013 | 1117 | 0.1012 | 10.12 | 6262 | 56.76 |
| 2014 | 1034 | 0.0937 | 9.37 | 7296 | 66.13 |
| 2015 | 1339 | 0.1214 | 12.14 | 8635 | 78.27 |
| 2016 | 1171 | 0.1061 | 10.61 | 9806 | 88.88 |
| 2017 | 1227 | 0.1112 | 11.12 | 11033 | 100.00 |
#------------------------------------------------------------
# Gráfico de frecuencias
#------------------------------------------------------------
ggplot(TDF_anio,
aes(x = factor(Año),
y = Frecuencia)) +
geom_col(
fill = "#6D213C",
color = "black",
width = 0.70
) +
geom_text(
aes(label = Frecuencia),
vjust = -0.35,
size = 4
) +
labs(
title = "Gráfica 1. Distribución de frecuencias de la variable Año",
x = "Año",
y = "Frecuencia"
) +
theme_minimal()
Interpretación
La frecuencia de deslizamientos varía entre los años del periodo 2007–2017, evidenciando un comportamiento temporal no uniforme que justifica la evaluación de diferentes modelos probabilísticos.
En esta sección se plantea un modelo probabilístico para cada periodo de estudio, con base en el comportamiento observado de las frecuencias anuales de deslizamientos.
Durante el periodo 2007–2009 la variable corresponde al número de deslizamientos registrados por año, por lo que se propone una distribución de Poisson como modelo probabilístico.
#============================================================
# 3.1 MODELO POISSON
#============================================================
TDF_poisson <- datos_poisson %>%
count(Año, name = "Frecuencia") %>%
arrange(Año)
TDF_poisson %>%
gt() %>%
tab_header(
title = md("**Tabla 2. Frecuencia anual (2007–2009)**")
)
| Tabla 2. Frecuencia anual (2007–2009) | |
| Año | Frecuencia |
|---|---|
| 2007 | 408 |
| 2008 | 699 |
| 2009 | 379 |
ggplot(TDF_poisson,
aes(x = factor(Año),
y = Frecuencia)) +
geom_col(
fill = "#6D213C",
color = "black",
width = 0.70
) +
geom_text(
aes(label = Frecuencia),
vjust = -0.35,
size = 4
) +
labs(
title = "Gráfica 2. Frecuencia anual (2007–2009)",
x = "Año",
y = "Frecuencia"
) +
theme_minimal()
Interpretación
La distribución de frecuencias presenta un comportamiento compatible con un modelo de Poisson, al tratarse del conteo de eventos registrados en intervalos anuales.
Para el periodo 2013–2017 se propone un modelo Uniforme, considerando que las frecuencias registradas presentan una variación moderada entre las categorías.
#============================================================
# 3.2 MODELO UNIFORME
#============================================================
TDF_uniforme <- datos_uniforme %>%
count(Año, name = "Frecuencia") %>%
arrange(Año)
TDF_uniforme %>%
gt() %>%
tab_header(
title = md("**Tabla 3. Frecuencia anual (2013–2017)**")
)
| Tabla 3. Frecuencia anual (2013–2017) | |
| Año | Frecuencia |
|---|---|
| 2013 | 1117 |
| 2014 | 1034 |
| 2015 | 1339 |
| 2016 | 1171 |
| 2017 | 1227 |
ggplot(TDF_uniforme,
aes(x = factor(Año),
y = Frecuencia)) +
geom_col(
fill = "#6D213C",
color = "black",
width = 0.70
) +
geom_text(
aes(label = Frecuencia),
vjust = -0.35,
size = 4
) +
labs(
title = "Gráfica 3. Frecuencia anual (2013–2017)",
x = "Año",
y = "Frecuencia"
) +
theme_minimal()
Interpretación
La distribución de frecuencias presenta una variación moderada entre los años, por lo que se propone un modelo Uniforme para evaluar su ajuste.
En esta sección se estiman los parámetros necesarios para definir los modelos probabilísticos propuestos para cada periodo de estudio.
El parámetro del modelo de Poisson corresponde a la media de la frecuencia anual de deslizamientos registrada durante el periodo 2007–2009.
#============================================================
# 4.1 PARÁMETROS DEL MODELO POISSON
#============================================================
lambda_poisson <- mean(TDF_poisson$Frecuencia)
varianza_poisson <- var(TDF_poisson$Frecuencia)
desviacion_poisson <- sd(TDF_poisson$Frecuencia)
tabla_parametros_poisson <- data.frame(
Parámetro = c(
"Lambda (λ)",
"Varianza",
"Desviación estándar"
),
Valor = round(
c(
lambda_poisson,
varianza_poisson,
desviacion_poisson
),
2
)
)
tabla_parametros_poisson %>%
gt() %>%
tab_header(
title = md("**Tabla 4. Parámetros del modelo Poisson**")
)
| Tabla 4. Parámetros del modelo Poisson | |
| Parámetro | Valor |
|---|---|
| Lambda (λ) | 495.33 |
| Varianza | 31320.33 |
| Desviación estándar | 176.98 |
Interpretación
El parámetro λ representa la frecuencia media anual de deslizamientos durante el periodo 2007–2009.
Para el modelo Uniforme se determina el número de categorías y la probabilidad teórica asignada a cada una.
#============================================================
# 4.2 PARÁMETROS DEL MODELO UNIFORME
#============================================================
n_categorias <- nrow(TDF_uniforme)
probabilidad_uniforme <- 1 / n_categorias
tabla_parametros_uniforme <- data.frame(
Parámetro = c(
"Número de categorías",
"Probabilidad por categoría"
),
Valor = c(
n_categorias,
round(probabilidad_uniforme,4)
)
)
tabla_parametros_uniforme %>%
gt() %>%
tab_header(
title = md("**Tabla 5. Parámetros del modelo Uniforme**")
)
| Tabla 5. Parámetros del modelo Uniforme | |
| Parámetro | Valor |
|---|---|
| Número de categorías | 5.0 |
| Probabilidad por categoría | 0.2 |
Interpretación
En el modelo Uniforme todas las categorías presentan la misma probabilidad de ocurrencia.
En esta sección se comparan las frecuencias observadas con las frecuencias estimadas por cada modelo probabilístico, con el fin de evaluar de manera preliminar su capacidad para representar el comportamiento de los datos.
Las frecuencias teóricas se obtienen a partir de la distribución de Poisson utilizando el parámetro λ estimado previamente.
#============================================================
# 5.1 COMPARACIÓN - MODELO POISSON
#============================================================
modelo_poisson <- TDF_poisson %>%
mutate(
Probabilidad_Modelo = dpois(Frecuencia,
lambda = lambda_poisson),
Frecuencia_Modelo = Probabilidad_Modelo *
sum(Frecuencia),
Diferencia = Frecuencia - Frecuencia_Modelo
)
modelo_poisson %>%
mutate(
Probabilidad_Modelo = round(Probabilidad_Modelo,4),
Frecuencia_Modelo = round(Frecuencia_Modelo,2),
Diferencia = round(Diferencia,2)
) %>%
gt() %>%
tab_header(
title = md("**Tabla 6. Comparación entre las frecuencias observadas y las frecuencias del modelo Poisson**")
) %>%
cols_label(
Frecuencia = "Frecuencia observada",
Probabilidad_Modelo = "Probabilidad",
Frecuencia_Modelo = "Frecuencia teórica"
)
| Tabla 6. Comparación entre las frecuencias observadas y las frecuencias del modelo Poisson | ||||
| Año | Frecuencia observada | Probabilidad | Frecuencia teórica | Diferencia |
|---|---|---|---|---|
| 2007 | 408 | 0 | 0.01 | 407.99 |
| 2008 | 699 | 0 | 0.00 | 699.00 |
| 2009 | 379 | 0 | 0.00 | 379.00 |
datos_grafico_poisson <- modelo_poisson %>%
pivot_longer(
cols = c(Frecuencia, Frecuencia_Modelo),
names_to = "Tipo",
values_to = "Valor"
)
ggplot(datos_grafico_poisson,
aes(factor(Año),
Valor,
fill = Tipo)) +
geom_col(
position = "dodge",
width = 0.70
) +
labs(
title = "Gráfica 4. Comparación del modelo Poisson",
x = "Año",
y = "Frecuencia",
fill = ""
) +
theme_minimal()
Interpretación
Las frecuencias estimadas por el modelo de Poisson permiten comparar el comportamiento teórico con las frecuencias registradas durante el periodo 2007–2009.
En el modelo Uniforme todas las categorías poseen la misma probabilidad de ocurrencia.
#============================================================
# 5.2 COMPARACIÓN - MODELO UNIFORME
#============================================================
modelo_uniforme <- TDF_uniforme %>%
mutate(
Probabilidad_Modelo = 1/n(),
Frecuencia_Modelo = Probabilidad_Modelo *
sum(Frecuencia),
Diferencia = Frecuencia - Frecuencia_Modelo
)
modelo_uniforme %>%
mutate(
Probabilidad_Modelo = round(Probabilidad_Modelo,4),
Frecuencia_Modelo = round(Frecuencia_Modelo,2),
Diferencia = round(Diferencia,2)
) %>%
gt() %>%
tab_header(
title = md("**Tabla 7. Comparación entre las frecuencias observadas y las frecuencias del modelo Uniforme**")
) %>%
cols_label(
Frecuencia = "Frecuencia observada",
Probabilidad_Modelo = "Probabilidad",
Frecuencia_Modelo = "Frecuencia teórica"
)
| Tabla 7. Comparación entre las frecuencias observadas y las frecuencias del modelo Uniforme | ||||
| Año | Frecuencia observada | Probabilidad | Frecuencia teórica | Diferencia |
|---|---|---|---|---|
| 2013 | 1117 | 0.2 | 1177.6 | -60.6 |
| 2014 | 1034 | 0.2 | 1177.6 | -143.6 |
| 2015 | 1339 | 0.2 | 1177.6 | 161.4 |
| 2016 | 1171 | 0.2 | 1177.6 | -6.6 |
| 2017 | 1227 | 0.2 | 1177.6 | 49.4 |
datos_grafico_uniforme <- modelo_uniforme %>%
pivot_longer(
cols = c(Frecuencia, Frecuencia_Modelo),
names_to = "Tipo",
values_to = "Valor"
)
ggplot(datos_grafico_uniforme,
aes(factor(Año),
Valor,
fill = Tipo)) +
geom_col(
position = "dodge",
width = 0.70
) +
labs(
title = "Gráfica 5. Comparación del modelo Uniforme",
x = "Año",
y = "Frecuencia",
fill = ""
) +
theme_minimal()
Interpretación
Las frecuencias teóricas obtenidas mediante el modelo Uniforme permiten comparar el comportamiento esperado con las frecuencias registradas para el periodo 2013–2017.