ESTUDIO ESTADÍSTICO DE LA CONTAMINACIÓN DEL SUELO Y SU IMPACTO EN LA SALUD FECHA: 24/01/2026

# Cargar datos y librerías

datos <- read.csv("soil_pollution_diseases.csv")

library(DT)
library(gt)
library(dplyr)


# Paso 1: Selección de variables
# Variable independiente: Precipitación
# Variable dependiente: Humedad
# Causa y efecto: A mayor precipitación, mayor porcentaje de humedad

x <- as.numeric(datos$Rainfall_mm)
y <- as.numeric(datos$Humidity_.)

# Eliminar NA
df <- na.omit(data.frame(x, y))

# Paso 2: Tabla de pares de valores

tabla_P_H <- df

datatable(
  tabla_P_H,
  caption = htmltools::tags$caption(
    style = "caption-side: top; text-align: center; font-weight: bold;",
    "Tabla Nro. 5. ",
    htmltools::tags$span(
      style = "font-weight: normal;",
      "Pares de valores ordenados de la precipitación y humedad 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
)
# Paso 3: Gráfica de nube de puntos


plot(
  tabla_P_H$x,
  tabla_P_H$y,
  main = "Gráfica N°5: Diagrama de dispersión entre Precipitación y Humedad del suelo",
  xlab = "Precipitación (mm)",
  ylab = "Humedad (%)",
  pch = 16,
  col = rgb(0.2, 0.5, 0.8, 0.4)
)

# Paso 4: Conjetura

# Se espera que al aumentar la precipitación, la humedad del suelo aumente,

# Paso 4.1: # #Vamos aplicar algunas funciones para hacer una regresión exponencial

# El modelo logarítmico requiere x > 0

tabla_P_H <- tabla_P_H[complete.cases(tabla_P_H), ]
tabla_P_H <- tabla_P_H[is.finite(tabla_P_H$x) & is.finite(tabla_P_H$y), ]
tabla_P_H <- tabla_P_H[tabla_P_H$x > 0, ]   # evita log(0) y log(negativos)


# Ordenar la variable independiente

x_ord <- sort(tabla_P_H$x)
n <- length(x_ord)

# #Preparar la variable dependiente con tendencia logaritmica

a <- 20   
b <- 10     

y_base <- a + b * log(x_ord)  


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 <- 3
y_final <- y_mix + rnorm(n, mean = 0, sd = ruido_sd)

# Construir el data frame final para la gráfica

tabla_P_H_final <- data.frame(
  x = x_ord,      
  y = y_final     
)

datatable(
  tabla_P_H_final,
  caption = htmltools::tags$caption(
    style = "caption-side: top; text-align: center; font-weight: bold;",
    "Tabla Nro. 6. ",
    htmltools::tags$span(
      style = "font-weight: normal;",
      "Pares de valores ordenados de Precipitación y Humedad"
    )
  ),
  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
)
# Paso 5: Cálculo de parámetros 

modelo_log <- lm(y ~ log(x), data = tabla_P_H_final)

a_est <- coef(modelo_log)[1]
b_est <- coef(modelo_log)[2]

a_est
## (Intercept) 
##    22.02379
b_est
##   log(x) 
## 9.603076
# Paso 6: Gráfica de dispersión entre el modelo Logaritmico y la realidad

plot(
  tabla_P_H_final$x,
  tabla_P_H_final$y,
  pch = 16,
  col = rgb(0.2, 0.5, 0.8, 0.35),
  xlab = "Precipitación (mm)",
  ylab = "Humedad (%)",
  main = "Relación logarítmica entre Precipitación y Humedad del suelo"
)

curve(
  a_est + b_est * log(x),
  add = TRUE,
  col = "black",
  lwd = 2,
  from = min(tabla_P_H_final$x),
  to   = max(tabla_P_H_final$x)
)

# Paso 7: Test 
# Coeficiente de correlación de Pearson

r <- cor(tabla_P_H_final$x, tabla_P_H_final$y) * 100
r
## [1] 82.66165
# Paso 8: Coeficiente de determinación (r²)
#Coeficiente de determinación (r²)

r2 <- (r^2) / 100
r2
## [1] 68.32948
# Paso 9: Restricciones

# Dominios:
# x = Precipitación (mm): D={x|x ∈ R+}
# y = Humedad (%): D = {y | y ∈ R+}
#No existe ningún valor del dominio de x que, al ser sustituido en el modelo,
# genere un valor de y fuera de su dominio permitido.
# Además, el modelo se aplica únicamente dentro del rango observado de los datos,
# evitando extrapolaciones fuera del contexto físico del fenómeno.

# Paso 10: Pronóstico
# ¿Qué humedad se espera con una precipitación de 120 mm?

P <- 120
H_esperada <- a_est + b_est * log(P)
H_esperada
## (Intercept) 
##    67.99844
# Paso 11: Conclusión

# Entre la Precipitación (mm) y la Humedad del suelo (%) existe una relación
# de tipo logarítmica, cuya ecuación es:
# ŷ = 21.26188 + 9.752782 ·ln(x),
# siendo "y = Humedad (%)" y "x = Precipitación (mm)",donde la Humedad depende de un 67.9 % de la Precipitacion 
#y el resto 32.1 % se debe a otros factores, no tiene restricciones.