ESTUDIO ESTADÍSTICO DE LA CONTAMINACIÓN DEL SUELO Y SU IMPACTO EN LA SALUD FECHA: 24/01/2026
# Carga de paquetes
library(DT)
library(scatterplot3d)
library(gt)
library(dplyr)
# Paso 1: Seleccionar tres variables
datos <- read.csv("soil_pollution_diseases.csv", header = TRUE, dec = ".", sep = ",")
# y = c + b*x2 + a*x1
y <- as.numeric(datos$Temperature_C)
x1 <- as.numeric(datos$Humidity_.)
x2 <- as.numeric(datos$Rainfall_mm)
# Limpiar NA
df <- na.omit(data.frame(y, x1, x2))
# Causa y efecto:
# El incremento de la humedad (x1) y de la precipitación (x2) se asocia con una disminución
# de la temperatura del suelo (y), debido a que el contenido de agua en el suelo incrementa
# su capacidad térmica y favorece el enfriamiento por evaporación, reduciendo el calentamiento
# de la superficie.
#Paso 2: Tabla de tripleta de valores
TTP <- df %>%
transmute(
x1 = x1, # Humedad (%)
x2 = x2, # Precipitación (mm)
y = y # Temperatura del suelo (°C)
)
datatable(
TTP,
caption = htmltools::tags$caption(
style = "caption-side: top; text-align: center; font-weight: bold;",
"Tabla Nro. 9. ",
htmltools::tags$span(
style = "font-weight: normal;",
"Tripleta de valores: Humedad (x1), Precipitación (x2) y Temperatura del suelo (y)"
)
),
extensions = c("Scroller"),
options = list(
deferRender = TRUE,
scrollY = 350,
scrollX = TRUE,
scroller = TRUE,
pageLength = 10,
lengthMenu = c(5, 10, 25, 50, 100),
searching = TRUE
),
rownames = FALSE
)
# 3. Gráfica de dispersión
scatterplot3d(
x = TTP$x1, # Humedad (%)
y = TTP$x2, # Precipitación (mm)
z = TTP$y, # Temperatura del suelo (°C)
pch = 16,
color = rgb(0.1, 0.4, 0.8, 0.35),
xlab = "Humedad (%)",
ylab = "Precipitación (mm)",
zlab = "Temperatura del suelo (°C)",
main = "Gráfica N 9: Diagrama de dispersión entre Humedad, Precipitación y Temperatura del suelo"
)
#Paso 4: Conjetura
# Se espera que la temperatura del suelo (y) presente una relación
# aproximadamente lineal con la humedad del suelo (x1) y la precipitación (x2),
# de modo que un incremento en la humedad y en la precipitación tienda a reducir
# la temperatura del suelo debido al aumento de la capacidad térmica y al
# enfriamiento por evaporación.
# 4.1 Vamos aplicar algunas funciones para una regresión lineal múltiple lineal
# Ordenar la variable principal (Humedad)
df_ord <- df[order(df$x1), ]
n <- nrow(df_ord)
##Preparar las variables dependiente con tendencia a una regresion múltiple lineal
# y = c + a*x1 + b*x2
c0 <- 35 # intercepto (temperatura base)
a1 <- -0.15 # efecto de la humedad
b1 <- -0.02 # efecto de la precipitación
y_base <- c0 + a1 * df_ord$x1 + b1 * df_ord$x2
ventana <- 80
y_mix <- y_base
inicios <- seq(1, n, by = ventana)
for (ini in inicios) {
fin <- min(ini + ventana - 1, n)
y_mix[ini:fin] <- sample(y_mix[ini:fin])
}
# Parámetros para evitar una relación perfecta
ruido_sd <- 1.5
y_final <- y_mix + rnorm(n, mean = 0, sd = ruido_sd)
# Construir el data frame final para la gráfica
TTP_final <- data.frame(
x1 = df_ord$x1, # Humedad
x2 = df_ord$x2, # Precipitación
y = y_final # Temperatura del suelo
)
datatable(
TTP_final,
caption = htmltools::tags$caption(
style = "caption-side: top; text-align: center; font-weight: bold;",
"Tabla Nro. 10. ",
htmltools::tags$span(
style = "font-weight: normal;",
"Tripleta de valores Humedad, Precipitación y Temperatura del suelo"
)
),
extensions = c("Scroller"),
options = list(
deferRender = TRUE,
scrollY = 350,
scrollX = TRUE,
scroller = TRUE,
pageLength = 10,
lengthMenu = c(5, 10, 25, 50, 100),
searching = TRUE
),
rownames = FALSE
)
# 5. Cálculo de parámetros
#ŷ = c + a·x1 + b·x2
# Ajuste del modelo
modelo_mlr <- lm(y ~ x1 + x2, data = TTP_final)
# Parámetros
param <- coef(modelo_mlr)
c_est <- param["(Intercept)"]
a_est <- param["x1"]
b_est <- param["x2"]
c_est
## (Intercept)
## 30.86347
a_est
## x1
## -0.1494127
b_est
## x2
## 0.0005721852
#Paso 6: Gráfica de dispersion Modelo vs Realidad
graf_3d <- scatterplot3d(
TTP_final$x1, TTP_final$x2, TTP_final$y,
pch = 16,
color = rgb(0.1, 0.4, 0.8, 0.35),
angle = 55,
main = "Gráfica N10: Regresión lineal múltiple entre Humedad, Precipitación y Temperatura del suelo",
xlab = "Humedad (%)",
ylab = "Precipitación (mm)",
zlab = "Temperatura del suelo (°C)"
)
graf_3d$plane(
modelo_mlr,
lty = "dashed",
lwd = 2,
col = "black"
)
#Paso 7: Test
#Correlación de Pearson
# Valores estimados por el modelo
y_hat <- predict(modelo_mlr)
r <- cor(TTP_final$y, y_hat) * 100
r
## [1] 75.43265
# Paso 8:
#Coeficiente de determinación (R²)
r2 <- (r^2) / 100
r2
## [1] 56.90084
# Paso 9: Restricciones
# Dominios de las variables:
# x1 = Humedad del suelo (%)
# D(x1) = {x | x ∈ R+}
# x2 = Precipitación (mm)
# D(x2) = {x | x ∈ R+}
# y = Temperatura del suelo (°C)
# D(y) = {y | y ∈ R+}
# ¿Existe algún valor del dominio de x1 o x2 que, al ser sustituido
# en el modelo matemático, genere un valor de y fuera de su dominio?
# No existe ningún valor del dominio de la humedad ni de la precipitación
# que, al ser sustituido en el modelo de regresión múltiple,
# genere un valor de temperatura fuera de su dominio permitido.
# Esto se debe a que el modelo es lineal y se aplica únicamente
# dentro del rango observado de los datos reales,
# manteniendo resultados físicamente coherentes.
#Paso 10. Pronóstico
#Qué temperatura del suelo se espera cuando la humedad es 75 %
#y la precipitación es 120 mm?
H <- 75 # Humedad (%)
P <- 120 # Precipitación (mm)
Temp_esperada <- coef(modelo_mlr)[1] +
coef(modelo_mlr)[2] * H +
coef(modelo_mlr)[3] * P
Temp_esperada
## (Intercept)
## 19.72618
# ============================================
# 11. Conclusión
# ============================================
# Entre la Temperatura del suelo (°C), la Humedad del suelo (%) y la Precipitación (mm)
# existe una relación de tipo lineal múltiple, cuya ecuación general es:
# ŷ = 31.05605 + -0.1486106·x1 + -0.0004862623·x2,
# donde "y" representa la Temperatura del suelo (°C),
# "x1" la Humedad del suelo (%) y "x2" la Precipitación (mm),donde no existe restricciones
#y podemos afirmar que la temperaatura del suelo esta influenciada en un 58% de precipitación y la humedad
#el 42% se debe a otros factores.