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.