Este modelo evalúa la relación entre el índice de humedad del suelo y el índice de susceptibilidad a deslizamientos.
library(readxl)
library(ggplot2)
library(knitr)
datos <- read_excel("dataset_landslides.xlsx", sheet = "Dataset_landslides")
datos <- as.data.frame(datos)
options(scipen = 999)
resumen_dataset <- data.frame(
Elemento = c(
"Archivo utilizado",
"Hoja utilizada",
"Número de filas",
"Número de columnas",
"Variable independiente X",
"Variable dependiente Y"
),
Descripcion = c(
"dataset_landslides.xlsx",
"Dataset_landslides",
nrow(datos),
ncol(datos),
"Índice de humedad del suelo",
"Índice de susceptibilidad a deslizamientos"
)
)
knitr::kable(
resumen_dataset,
caption = "Resumen inicial del dataset"
)
| Elemento | Descripcion |
|---|---|
| Archivo utilizado | dataset_landslides.xlsx |
| Hoja utilizada | Dataset_landslides |
| Número de filas | 11033 |
| Número de columnas | 25 |
| Variable independiente X | Índice de humedad del suelo |
| Variable dependiente Y | Índice de susceptibilidad a deslizamientos |
limpiar_numerico <- function(variable) {
variable <- as.character(variable)
variable <- gsub(",", ".", variable)
as.numeric(variable)
}
datos_regresion <- data.frame(
soil_moisture_index = limpiar_numerico(datos$soil_moisture_index),
susceptibility_index = limpiar_numerico(datos$susceptibility_index)
)
datos_regresion <- datos_regresion[
is.finite(datos_regresion$soil_moisture_index) &
is.finite(datos_regresion$susceptibility_index),
]
x <- datos_regresion$soil_moisture_index
y <- datos_regresion$susceptibility_index
tabla_variables <- data.frame(
Variable = c("X", "Y"),
Nombre_en_dataset = c(
"soil_moisture_index",
"susceptibility_index"
),
Descripcion = c(
"Índice de humedad del suelo",
"Índice de susceptibilidad a deslizamientos"
),
Unidad = c("Índice", "Índice")
)
knitr::kable(
tabla_variables,
caption = "Variables seleccionadas para el modelo"
)
| Variable | Nombre_en_dataset | Descripcion | Unidad |
|---|---|---|---|
| X | soil_moisture_index | Índice de humedad del suelo | Índice |
| Y | susceptibility_index | Índice de susceptibilidad a deslizamientos | Índice |
tabla_pares <- data.frame(
Indice_humedad_suelo = x,
Indice_susceptibilidad = y
)
knitr::kable(
head(tabla_pares, 10),
digits = 2,
caption = "Primeros diez pares de valores"
)
| Indice_humedad_suelo | Indice_susceptibilidad |
|---|---|
| 0.70 | 83.27 |
| 0.93 | 93.48 |
| 0.82 | 87.15 |
| 0.82 | 74.52 |
| 0.59 | 37.58 |
| 0.94 | 89.74 |
| 0.93 | 93.52 |
| 0.93 | 80.28 |
| 0.87 | 81.31 |
| 0.98 | 89.49 |
resumen_variables <- data.frame(
Variable = c("Índice de humedad del suelo", "Índice de susceptibilidad"),
Minimo = c(min(x), min(y)),
Media = c(mean(x), mean(y)),
Mediana = c(median(x), median(y)),
Maximo = c(max(x), max(y))
)
knitr::kable(
resumen_variables,
digits = 2,
caption = "Resumen estadístico de las variables"
)
| Variable | Minimo | Media | Mediana | Maximo |
|---|---|---|---|---|
| Índice de humedad del suelo | 0.10 | 0.73 | 0.77 | 1 |
| Índice de susceptibilidad | 13.62 | 75.39 | 78.91 | 99 |
ggplot(
datos_regresion,
aes(
x = soil_moisture_index,
y = susceptibility_index
)
) +
geom_point(
color = "blue",
alpha = 0.35,
size = 1.8
) +
labs(
title = "REGRESIÓN LINEAL",
subtitle = "Nube de puntos entre humedad del suelo y susceptibilidad",
x = "Índice de humedad del suelo",
y = "Índice de susceptibilidad a deslizamientos"
) +
theme_bw(base_size = 15) +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 26,
color = "#0B3C5D"
),
plot.subtitle = element_text(
hjust = 0.5,
size = 13,
color = "#444444"
),
axis.title = element_text(
face = "bold",
size = 13
),
axis.text = element_text(
size = 11
),
panel.border = element_rect(
color = "gray35",
fill = NA,
linewidth = 1
),
panel.grid.major = element_line(
color = "gray88"
),
panel.grid.minor = element_blank(),
plot.background = element_rect(
fill = "white",
color = NA
),
panel.background = element_rect(
fill = "white",
color = NA
)
)
A mayor índice de humedad del suelo, se espera un incremento en el índice de susceptibilidad a deslizamientos.
La estructura matemática del modelo lineal simple es:
\[ \hat{y} = a + bx \]
Donde:
modelo_lineal <- lm(
susceptibility_index ~ soil_moisture_index,
data = datos_regresion
)
parametros <- coef(modelo_lineal)
intercepto <- as.numeric(parametros[1])
pendiente <- as.numeric(parametros[2])
r_cuadrado <- summary(modelo_lineal)$r.squared
tabla_modelo <- data.frame(
Parametro = c("Intercepto a", "Pendiente b", "R²"),
Valor = c(intercepto, pendiente, r_cuadrado),
Interpretacion = c(
"Valor inicial estimado del índice de susceptibilidad",
"Cambio estimado en la susceptibilidad por cada unidad adicional de humedad del suelo",
"Porcentaje de variabilidad explicado por el modelo"
)
)
knitr::kable(
tabla_modelo,
digits = 4,
caption = "Parámetros principales del modelo lineal"
)
| Parametro | Valor | Interpretacion |
|---|---|---|
| Intercepto a | 27.4240 | Valor inicial estimado del índice de susceptibilidad |
| Pendiente b | 65.6414 | Cambio estimado en la susceptibilidad por cada unidad adicional de humedad del suelo |
| R² | 0.7531 | Porcentaje de variabilidad explicado por el modelo |
Ecuación lineal
Y = a + b * x
Y = 27.42 + 65.64 * x
R² = 0.7531
El modelo explica aproximadamente 75.31% de la variabilidad observada en el índice de susceptibilidad.
tabla_coeficientes <- as.data.frame(coef(summary(modelo_lineal)))
tabla_coeficientes$Parametro <- rownames(tabla_coeficientes)
rownames(tabla_coeficientes) <- NULL
tabla_coeficientes <- tabla_coeficientes[
,
c(
"Parametro",
"Estimate",
"Std. Error",
"t value",
"Pr(>|t|)"
)
]
knitr::kable(
tabla_coeficientes,
digits = 4,
caption = "Resumen de coeficientes del modelo"
)
| Parametro | Estimate | Std. Error | t value | Pr(>|t|) |
|---|---|---|---|---|
| (Intercept) | 27.4240 | 0.2727 | 100.5572 | 0 |
| soil_moisture_index | 65.6414 | 0.3578 | 183.4385 | 0 |
ecuacion_texto <- paste0(
"y = ",
round(intercepto, 2),
" + ",
round(pendiente, 2),
"x | R² = ",
round(r_cuadrado, 3)
)
ggplot(
datos_regresion,
aes(
x = soil_moisture_index,
y = susceptibility_index
)
) +
geom_point(
color = "blue",
alpha = 0.35,
size = 1.8
) +
geom_smooth(
method = "lm",
se = FALSE,
color = "red",
linewidth = 1.4
) +
labs(
title = "REGRESIÓN LINEAL",
subtitle = ecuacion_texto,
x = "Índice de humedad del suelo",
y = "Índice de susceptibilidad a deslizamientos"
) +
theme_bw(base_size = 15) +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 26,
color = "#0B3C5D"
),
plot.subtitle = element_text(
hjust = 0.5,
face = "bold",
size = 13,
color = "#222222"
),
axis.title = element_text(
face = "bold",
size = 13
),
axis.text = element_text(
size = 11
),
panel.border = element_rect(
color = "gray35",
fill = NA,
linewidth = 1
),
panel.grid.major = element_line(
color = "gray88"
),
panel.grid.minor = element_blank(),
plot.background = element_rect(
fill = "white",
color = NA
),
panel.background = element_rect(
fill = "white",
color = NA
)
)
covarianza_xy <- cov(x, y)
pearson_lineal <- cor.test(
x,
y,
method = "pearson"
)
r_pearson <- as.numeric(pearson_lineal$estimate)
p_valor <- pearson_lineal$p.value
tabla_correlacion <- data.frame(
Indicador = c(
"Covarianza",
"Coeficiente de Pearson",
"p-value",
"Nivel de significancia"
),
Valor = c(
round(covarianza_xy, 4),
round(r_pearson, 4),
format.pval(p_valor, digits = 4),
"0.05"
),
Interpretacion = c(
"Dirección conjunta de variación",
"Fuerza y dirección de la relación lineal",
"Significancia estadística del modelo",
"Criterio de evaluación"
)
)
knitr::kable(
tabla_correlacion,
caption = "Resultados de covarianza y correlación"
)
| Indicador | Valor | Interpretacion |
|---|---|---|
| Covarianza | 3.074 | Dirección conjunta de variación |
| Coeficiente de Pearson | 0.8678 | Fuerza y dirección de la relación lineal |
| p-value | < 0.00000000000000022 | Significancia estadística del modelo |
| Nivel de significancia | 0.05 | Criterio de evaluación |
Coeficiente de Pearson: r = 0.8678
p-value: < 0.00000000000000022
Con un nivel de significancia de 0.05, la relación lineal es estadísticamente significativa.
Sí existe restricción matemática y estadística, ya que el modelo fue
construido con valores observados del índice de humedad del suelo entre
x = 0.1 y x = 1.
Al introducir
valores fuera de este rango, el modelo puede generar predicciones poco
consistentes para el índice de susceptibilidad a deslizamientos, debido
a que estaría realizando una extrapolación fuera de los datos
analizados.
valor_propuesto <- median(x)
if (
valor_propuesto < min_humedad ||
valor_propuesto > max_humedad
) {
valor_estimado <- median(x)
observacion_estimacion <- paste(
"El valor propuesto está fuera del rango observado.",
"Se usó la mediana del índice de humedad del suelo para la demostración."
)
} else {
valor_estimado <- valor_propuesto
observacion_estimacion <- "El valor propuesto está dentro del rango observado."
}
nuevo_evento <- data.frame(
soil_moisture_index = valor_estimado
)
estimacion <- predict(
modelo_lineal,
newdata = nuevo_evento,
interval = "prediction",
level = 0.95
)
susceptibilidad_estimada <- estimacion[1, "fit"]
limite_inferior <- estimacion[1, "lwr"]
limite_superior <- estimacion[1, "upr"]
tabla_estimacion <- data.frame(
Indice_humedad_suelo = valor_estimado,
Susceptibilidad_estimada = susceptibilidad_estimada,
Limite_inferior_95 = limite_inferior,
Limite_superior_95 = limite_superior
)
knitr::kable(
tabla_estimacion,
digits = 2,
caption = "Pronóstico generado por el modelo lineal"
)
| Indice_humedad_suelo | Susceptibilidad_estimada | Limite_inferior_95 | Limite_superior_95 |
|---|---|---|---|
| 0.77 | 78.15 | 62.2 | 94.09 |
Para un índice de humedad del suelo de:
0.77
El índice de susceptibilidad estimado es:
78.15
Intervalo de predicción 95%:
62.2 a 94.09
El modelo permitió evaluar la relación entre el índice de humedad del suelo y el índice de susceptibilidad a deslizamientos.
La pendiente obtenida fue 65.64, por lo que la relación estimada es positiva.
El coeficiente de Pearson fue r = 0.868, con un p-value = < 0.00000000000000022. La relación lineal resultó estadísticamente significativa.
El modelo explica aproximadamente 75.31% de la variabilidad del índice de susceptibilidad.
Su uso debe limitarse al rango observado del índice de humedad del suelo y entenderse como una asociación estadística, no como una causalidad absoluta.